Редактор темы

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

Аналогично, видимо структуру url поменяли в ютубе. Сможет кто пофиксить это?
 
Кто готов пожертвовать данный мод, для поглядеть внутрь (если там код конечно открыт). Может что и удастся изменить что бы работало как нужно.
 
Можно попробовать так.
Найти файл 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 Функция исправлена под код что выше, может версия та же о которого говорилось а возможно у кого другое, так что обращайте внимание на данный момент.
 
Можно попробовать так.
Найти файл 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 Функция исправлена под код что выше, может версия та же о которого говорилось а возможно у кого другое, так что обращайте внимание на данный момент.
Кто то тестил уже?
 
Тестирую. Работает правильно и лучше но есть нюанс. половину добавляет коректно вторую половине в ошибку падает (
Ну если при старом виде функции в ошибку не падал, и брал точно ссылки. То можно вернуть старую версию функции с одним маленьким изменением.

Код:
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];
}
 
Ну если при старом виде функции в ошибку не падал, и брал точно ссылки. То можно вернуть старую версию функции с одним маленьким изменением.

Код:
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];
}
Проверил либо я что-то делаю не правильно либо я не понимаю в чем проблема. Если с твоим кодом то есть новости которые перезаписываются коректно и без проблеммно. а потом доходит до новостей на которых сбоит. Попробовал вернуть файлик который оригинальный с новостью которая глючит перезаписывает отличьно...
 
Проверил либо я что-то делаю не правильно либо я не понимаю в чем проблема. Если с твоим кодом то есть новости которые перезаписываются коректно и без проблеммно. а потом доходит до новостей на которых сбоит. Попробовал вернуть файлик который оригинальный с новостью которая глючит перезаписывает отличьно...
С данной правкой так же глючит ?
Платно - Массовое добавление или замена трейлеров youtube в доп.полях

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

p/s На оригинальном файле все новости проходит нормально без сбоев? Только не обрезает то что идет после ид ютуба ?
 
С данной правкой так же глючит ?
Платно - Массовое добавление или замена трейлеров youtube в доп.полях

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

p/s На оригинальном файле все новости проходит нормально без сбоев? Только не обрезает то что идет после ид ютуба ?
Да с оригинальным все окей только некоректная вставка
 
С данной правкой так же глючит ?
Платно - Массовое добавление или замена трейлеров youtube в доп.полях

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

p/s На оригинальном файле все новости проходит нормально без сбоев? Только не обрезает то что идет после ид ютуба ?
Если нужно могу дать доступ что бы проверить на прямую.
 
upload_2023-4-26_11-17-13.png

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


Вот что делает с отредактированым конфигом с темже файлом.
upload_2023-4-26_11-46-30.png
 
Вот сам модуль
Замените функцию в 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];
}
 
Замените функцию в 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];
}


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

Код:
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];
}
 
Можно попробовать так, может так будет лучше и будут верные трейлеры. Но все равно, какие-то в любом случае могут быть не верные выдачи, по разным причинам.

Код:
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];
}


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

Похожие темы Последние темы Популярные темы

Назад
Сверху