Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Платно Массовое добавление или замена трейлеров youtube в доп.полях

Тема в разделе "Платные модули DLE", создана пользователем Sistemos, 14 ноя 2017.

14.11.17 в 19:29
19.12.23 в 02:55
64
18.120
8
  1. seasone

    Команда форума VIP Кинотрафик v2

    Регистрация:
    2 дек 2015
    Сообщения:
    714
    Лучших ответов:
    4
    Рейтинги:
    +333 / 56 / -0
    Аналогично, видимо структуру url поменяли в ютубе. Сможет кто пофиксить это?
     
    • Нравится Нравится x 1
  2. Winston?!

    VIP Кинотрафик v2

    Регистрация:
    31 дек 2016
    Сообщения:
    1.255
    Лучших ответов:
    2
    Рейтинги:
    +106 / 11 / -0
    и желательно под 16 версию :D;)
     
  3. igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +355 / 12 / -0
    Кто готов пожертвовать данный мод, для поглядеть внутрь (если там код конечно открыт). Может что и удастся изменить что бы работало как нужно.
     
  4. 4va3

    Команда форума VIP Кинотрафик v2

    Регистрация:
    10 сен 2015
    Сообщения:
    539
    Лучших ответов:
    0
    Рейтинги:
    +91 / 10 / -0
    https://cloud.mail.ru/public/4WkU/iDD5MrPh1
     
    • Нравится Нравится x 1
  5. igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +355 / 12 / -0
    Можно попробовать так.
    Найти файл engine/inc/trailer_update/functions.php (Сделать его бэкап на всякие пожарные)

    В файле найти функцию

    Код:
    function trailerSelectBody  ($query_text, $settings) {
                  /******* Содержимое функции*******/
    }
    
    и заменить на данную функцию

    Код:
    function trailerSelectBody  ($query_text, $settings) {
    
        if (!$query_text || !$settings['youtube_key']) return false;
       
        // меняю кодировку, если не utf-8
        $query_text = iconv_dle ($query_text);
       
        // заменяю пробелы на %20
        $query_text = preg_replace('/\s/', '%20', $query_text);  
       
        $pars_url = 'http://www.youtube.com/results?search_query=' . $query_text;
        $content = parsCurl($pars_url, $settings['proxy'], $settings['proxy_auth']);
       
        preg_match('/var\s*ytInitialData\s*=\s*(.+?)\s*;<\/script>/us', $content, $link_treiler_mass_1);
        $decode = json_decode($link_treiler_mass_1[1],true);
        unset($decode['responseContext']);
        unset($decode['contents']['twoColumnSearchResultsRenderer']['primaryContents']['sectionListRenderer']['contents'][0]['itemSectionRenderer']['contents'][0]);
        $link_treiler_mass = $decode['contents']['twoColumnSearchResultsRenderer']['primaryContents']['sectionListRenderer']['contents'][0]['itemSectionRenderer']['contents'];
       
        foreach($link_treiler_mass[1] as $k=>$z){
            $trailer_mass[] = $z['videoRenderer']['videoId'];
        }
        // удаляю лишний хвост, если вернулся плейлист
        $trailer_mass[0] = preg_replace('#(&amp;list=.*)#', '', $trailer_mass[0]);  
       
        return $trailer_mass[0];
    }
    
    Сохранить, почистить все кэши и пробовать.
    По идее все должно сработать.

    p/s Функция исправлена под код что выше, может версия та же о которого говорилось а возможно у кого другое, так что обращайте внимание на данный момент.
     
    • Нравится Нравится x 1
  6. Winston?!

    VIP Кинотрафик v2

    Регистрация:
    31 дек 2016
    Сообщения:
    1.255
    Лучших ответов:
    2
    Рейтинги:
    +106 / 11 / -0
    Кто то тестил уже?
     
  7. Aleksandr37

    Aleksandr37 Зелёный

    Регистрация:
    20 апр 2023
    Сообщения:
    12
    Лучших ответов:
    0
    Рейтинги:
    +1 / 0 / -0
    Тестирую. Работает правильно и лучше но есть нюанс. половину добавляет коректно вторую половине в ошибку падает (
     
  8. igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +355 / 12 / -0
    Ну если при старом виде функции в ошибку не падал, и брал точно ссылки. То можно вернуть старую версию функции с одним маленьким изменением.

    Код:
    function trailerSelectBody  ($query_text, $settings) {
    
        if (!$query_text || !$settings['youtube_key']) return false;
       
        // меняю кодировку, если не utf-8
        $query_text = iconv_dle ($query_text);
       
        // заменяю пробелы на %20
        $query_text = preg_replace('/\s/', '%20', $query_text);  
       
        $pars_url = 'http://www.youtube.com/results?search_query=' . $query_text;
        $content = parsCurl($pars_url, $settings['proxy'], $settings['proxy_auth']);
       
        preg_match_all ('/<a\shref="\/watch\?v=(.+?)"\sclass/', $content, $link_treiler_mass);
       
        foreach($link_treiler_mass[1] as $k=>$z){
            $trailer_mass[] = $z;
        }
        // удаляю лишний хвост, если вернулся плейлист
        $trailer_mass[0] = preg_replace('#(&amp;list=.*|u0026.*|&amp;.*|&pp=.*)#', '', $trailer_mass[0]);  
       
        return $trailer_mass[0];
    }
    
     
    • Нравится Нравится x 2
  9. Aleksandr37

    Aleksandr37 Зелёный

    Регистрация:
    20 апр 2023
    Сообщения:
    12
    Лучших ответов:
    0
    Рейтинги:
    +1 / 0 / -0
    Проверил либо я что-то делаю не правильно либо я не понимаю в чем проблема. Если с твоим кодом то есть новости которые перезаписываются коректно и без проблеммно. а потом доходит до новостей на которых сбоит. Попробовал вернуть файлик который оригинальный с новостью которая глючит перезаписывает отличьно...
     
  10. igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +355 / 12 / -0
    С данной правкой так же глючит ?
    Платно - Массовое добавление или замена трейлеров youtube в доп.полях

    Вчера при проверке, один и тот же запрос 1 раз срабатывал 2-3 раза выдавал пустоту. Поэтому возможно сбои идут из-за этого.
    А так конечно бы глянуть на пример новостей в которых происходит сбой, возможно где-то имеется какое-то различие.

    p/s На оригинальном файле все новости проходит нормально без сбоев? Только не обрезает то что идет после ид ютуба ?
     
  11. Aleksandr37

    Aleksandr37 Зелёный

    Регистрация:
    20 апр 2023
    Сообщения:
    12
    Лучших ответов:
    0
    Рейтинги:
    +1 / 0 / -0
    Да с оригинальным все окей только некоректная вставка
     
  12. Aleksandr37

    Aleksandr37 Зелёный

    Регистрация:
    20 апр 2023
    Сообщения:
    12
    Лучших ответов:
    0
    Рейтинги:
    +1 / 0 / -0
    Если нужно могу дать доступ что бы проверить на прямую.
     
  13. igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +355 / 12 / -0
    Смогу лишь ближе к вечеру тогда.
     
    • Нравится Нравится x 1
  14. Aleksandr37

    Aleksandr37 Зелёный

    Регистрация:
    20 апр 2023
    Сообщения:
    12
    Лучших ответов:
    0
    Рейтинги:
    +1 / 0 / -0
    upload_2023-4-26_11-17-13.png

    Вот что вставило: Oy1Y7j9_Dj4u0026pp=ygVhw5DCp8OQwrXDkMK7w5DCvsOQwrLDkMK1w5DCui3DkMK_w5DCsMORwoPDkMK6OiDDkMKdw5DCtcORwoIgw5DCv8ORwoPDkcKCw5DCuCDDkMK0w5DCvsOQwrzDkMK-w5DCuQ%3D%3D


    Вот что делает с отредактированым конфигом с темже файлом.
    upload_2023-4-26_11-46-30.png
     
  15. Aleksandr37

    Aleksandr37 Зелёный

    Регистрация:
    20 апр 2023
    Сообщения:
    12
    Лучших ответов:
    0
    Рейтинги:
    +1 / 0 / -0
    Вот сам модуль
     

    Вложения:

  16. igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +355 / 12 / -0
    Замените функцию в engine/inc/trailer_update/functions.php
    Эту
    Код:
    function trailerSelectBody  ($query_text, $settings) {
    
        if (!$query_text || !$settings['youtube_key']) return false;
       
        // меняю кодировку, если не utf-8
        $query_text = iconv_dle ($query_text);
       
        // заменяю пробелы на %20
        $query_text = preg_replace('/\s/', '%20', $query_text);  
       
        $pars_url = 'http://www.youtube.com/results?search_query=' . $query_text;
        $content = parsCurl($pars_url, $settings['proxy'], $settings['proxy_auth']);
       
        preg_match_all ('#"\/watch\?v=(.+?)"#', $content, $link_treiler_mass);
       
        foreach($link_treiler_mass[1] as $k=>$z){
            $trailer_mass[] = $z;
        }
        // удаляю лишний хвост, если вернулся плейлист
        $trailer_mass[0] = preg_replace('#(&amp;list=.*)#', '', $trailer_mass[0]);  
       
        return $trailer_mass[0];
    }
    
    На эту
    Код:
    function trailerSelectBody  ($query_text, $settings) {
    
        if (!$query_text || !$settings['youtube_key']) return false;
      
        // меняю кодировку, если не utf-8
        $query_text = iconv_dle ($query_text);
      
        // заменяю пробелы на %20
        $query_text = preg_replace('/\s/', '%20', $query_text);  
      
        $pars_url = 'http://www.youtube.com/results?search_query=' . $query_text;
        $content = parsCurl($pars_url, $settings['proxy'], $settings['proxy_auth']);
      
        preg_match_all ('#"\/watch\?v=(.+?)"#', $content, $link_treiler_mass);
      
        foreach($link_treiler_mass[1] as $k=>$z){
            $trailer_mass[] = $z;
        }
        // удаляю лишний хвост, если вернулся плейлист
        $trailer_mass[0] = preg_replace('#(&amp;list=.*|\\\u0026.*)#', '', $trailer_mass[0]);
      
        return $trailer_mass[0];
    }
    
     
    • Нравится Нравится x 1
  17. Aleksandr37

    Aleksandr37 Зелёный

    Регистрация:
    20 апр 2023
    Сообщения:
    12
    Лучших ответов:
    0
    Рейтинги:
    +1 / 0 / -0

    Проблема ушла.Спасибо. Единственное в некоторых новостях не совсем правильный трэйлер вставляет. Но думаю может у менячет не правильно заполняет (
     
  18. igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +355 / 12 / -0
    Можно попробовать так, может так будет лучше и будут верные трейлеры. Но все равно, какие-то в любом случае могут быть не верные выдачи, по разным причинам.

    Код:
    function trailerSelectBody  ($query_text, $settings) {
    
        if (!$query_text || !$settings['youtube_key']) return false;
        
        // меняю кодировку, если не utf-8
        $query_text = iconv_dle ($query_text);
        
        // заменяю пробелы на %20
        #$query_text = preg_replace('/\s/', '%20', $query_text);   
        $query_text = preg_replace('/\s/', '+', $query_text);
        
        $pars_url = 'http://www.youtube.com/results?search_query=' . urlencode($query_text);
        $content = parsCurl($pars_url, $settings['proxy'], $settings['proxy_auth']);
        
        preg_match_all ('#"\/watch\?v=(.+?)"#', $content, $link_treiler_mass);
        
        foreach($link_treiler_mass[1] as $k=>$z){
            $trailer_mass[] = $z;
        }
        // удаляю лишний хвост, если вернулся плейлист
        $trailer_mass[0] = preg_replace('#(&amp;list=.*|\\\u0026.*)#', '', $trailer_mass[0]);
        
        return $trailer_mass[0];
    }
    
     
    • Нравится Нравится x 1
  19. igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +355 / 12 / -0
    А что не так под 16? Не работает вообще или дает какие-то проблемы ? Или это была ирония ;)?
     
  20. Aleksandr37

    Aleksandr37 Зелёный

    Регистрация:
    20 апр 2023
    Сообщения:
    12
    Лучших ответов:
    0
    Рейтинги:
    +1 / 0 / -0

    Все окей, практически все отлично нашел из 220 записей можно в продакшен оставлять ))
    Спасибо огромное ! )
     
    • Нравится Нравится x 1
Яндекс.Метрика