Fix zkfm парсер.

Entrol

Новичок
Регистрация
11 Май 2017
Сообщения
144
Реакции
72
Баллы
28
Приветствую. Недавно парсер прекратил работу (а именно воспроизведение песен, скачивание, загрузку) Выкладываю фикс проблемы.
[HIDE="5"]
1) Нужно создать функцию
Открываем файл functions.php. Находится здесь: zkfm/inc/functions.php
После
Код:
<?php
Добавляем:
Код:
function curl_mp3($file) {
if($curl = curl_init() ) {
curl_setopt($curl,CURLOPT_URL, $file);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 YaBrowser/18.10.2.163 Yowser/2.5 Safari/537.36');
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Upgrade-Insecure-Requests: 1',
        'Accept-Encoding: gzip, deflate',
        'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
        'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',               
        'Connection: keep-alive',
        'Keep-Alive: 300',
        'Host: z1.fm',
        'Cache-Control: max-age=0',
        'Referer: https://z1.fm/'
        ));
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_HEADER,true);
$out = curl_exec($curl);
curl_close($curl);
}
    $headers = array();
    $header_text = substr($out, 0, strpos($out, "\r\n\r\n"));
    foreach (explode("\r\n", $header_text) as $i => $line)
        if ($i === 0) {
            $headers['http_code'] = $line;
       } else
        {
            list ($key, $value) = explode(': ', $line);
            $headers[$key] = $value;
        }
    return $headers;
}
2) Если мы используем ретранслятор. Открываем play.php
После
Код:
include (ROOT_DIR.'/zkfm/config.php');
Добавляем
Код:
include (ROOT_DIR.'/zkfm/inc/functions.php');
Ищем
Код:
$file_headers = @get_headers ($mp3, 1);
Заменяем на
Код:
$file_headers1 = curl_mp3($mp3);
$string=$file_headers1['Location'];
$file_headers =curl_mp3($string);
Чуть ниже ищем
Код:
    $fp = @fopen($file_headers['Location'], "rb") or die ();
Заменяем на
Код:
    $fp = @fopen($file_headers1['Location'], "rb") or die ();
Во всём документе play.php
Код:
http://
Заменяем на
Код:
https://
Дальше
Код:
zk.fm
Заменить на
Код:
z1.fm
В файле download.php:
Повторяем действия
После
Код:
include (ROOT_DIR.'/zkfm/config.php');
Добавляем
Код:
include (ROOT_DIR.'/zkfm/inc/functions.php');

Код:
http://
Заменяем на
Код:
https://
Дальше
Код:
zk.fm
Заменить на
Код:
z1.fm
Важные изменения:
Ищем
Код:
$file_headers = @get_headers ($mp3, 1);
Заменяем на
Код:
$file_headers1 = curl_mp3($mp3);
$string=$file_headers1['Location'];
$file_headers =curl_mp3($string);
Ищем
Код:
    $fp = @fopen($file_headers['Location'], "rb") or die ();
Заменяем
Код:
    $fp = @fopen($file_headers1['Location'], "rb") or die ();
3) Для тех, кто закачивает к себе на сервер.
Функция get
открываем functions.php
Ищем
Код:
function get( $url ) {
...
.
.
.
}
Заменяем на эту функцию (Не знаю какой код в вашей функции, работает у меня на этом)
Код:
function get( $url ) {
         global $track_url,$zkconfig;
        
    $check_url = @get_headers($url);
    
    if (strpos($check_url[0], '200')) {
    $cookies = $_SERVER['DOCUMENT_ROOT'].'/temp/get_cookies.txt';
    @file_put_contents($cookies, ' ', LOCK_EX);
    
    $page = curl_init();       
    curl_setopt($page, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($page, CURLOPT_URL, $url);
    @curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies);
    @curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies);
    curl_setopt($page, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($page, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($page, CURLOPT_HEADER, true);
    
    curl_setopt($page, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 YaBrowser/17.9.1.826 Yowser/2.5 Safari/537.36" );
    curl_setopt($page, CURLOPT_REFERER, $track_url);
    
    if($zkconfig['proxy_on']){
       if ($zkconfig['proxy']) {
    curl_setopt($page, CURLOPT_PROXYAUTH, CURLAUTH_BASIC | CURLAUTH_NTLM);
    curl_setopt($page, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
    curl_setopt($page, CURLOPT_PROXY, trim($zkconfig['proxy']));
    } elseif ($zkconfig['SOCKS5']) {
    curl_setopt($page, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
    curl_setopt($page, CURLOPT_PROXY, trim($zkconfig['SOCKS5']));
    }
}
    curl_setopt($page, CURLOPT_HTTPHEADER, array(

        'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Upgrade-Insecure-Requests: 1',
        'Accept-Encoding: gzip, deflate',
        'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
        'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',               
        'Connection: keep-alive',
        'Keep-Alive: 300',
        'Host: dll.z1.fm',
        'Cache-Control: max-age=0',
        'Referer: https://z1.fm/'
    ));
    
    $response = curl_exec($page);
    curl_close($page);

    return $response;

}
}
Открываем файл парсера zkfm/parser.php
Ищем
Код:
 $mp3_headers = @get_headers ($track_download_url, 1);
Заменяем на
Код:
$mp3_headers1 = curl_mp3($track_download_url);
        $string=$mp3_headers1['Location'];
        $mp3_headers =curl_mp3($string);
Ищем
Код:
$mp3_headers['Location']
ЗАменяем все совпадения на
Код:
$mp3_headers1['Location']
Проверяем. (Есть разные версии парсера, поэтому в некоторых нужно больше изменений делать)

Многие просили сделать "за деньги", поэтому за старания можно перечислить(по желанию) на кошелёк R100363679526.
Всё, меняйте и отписывайте о результатах.
Также, могу индивидуально взяться за приведение парсера "в чувство", но об этом уже в лс.
[/HIDE]
 

Ruhas

VIP
VIP
Регистрация
8 Фев 2018
Сообщения
340
Реакции
55
Баллы
28
Приветствую. Недавно парсер прекратил работу (а именно воспроизведение песен, скачивание, загрузку) Выкладываю фикс проблемы.
***Скрытый текст***
Вопрос только как долго он проработает.
 

MainC0de

Новичок
Регистрация
3 Окт 2017
Сообщения
78
Реакции
10
Баллы
8
@Entrol, Спасибо! Все отлично работает, добавь в пост пожалуйста реквизиты яндекс-кошелька, отблагодарю немного.
 

Entrol

Новичок
Регистрация
11 Май 2017
Сообщения
144
Реакции
72
Баллы
28
@MainC0de, есть только вм или киви.

@Ruhas, думаю проработает приличное время. А если полетит, то снова нужно будет искать обход.
 

Ruhas

VIP
VIP
Регистрация
8 Фев 2018
Сообщения
340
Реакции
55
Баллы
28

yuris

Новичок
Регистрация
1 Июл 2017
Сообщения
137
Реакции
51
Баллы
28
Работает! Только вот ранее загруженные песни нефурычат, исключительно только новые, спарсенные после данной правки парсера....
 

MainC0de

Новичок
Регистрация
3 Окт 2017
Сообщения
78
Реакции
10
Баллы
8
@yuris, У меня все работает. И старые песни тоже. Пересмотри еще раз код, возможно что-то упустил.
 

Cyxapuk

VIP
VIP
Прошёл марафон
Регистрация
26 Фев 2017
Сообщения
441
Реакции
104
Баллы
43
Мне чет не помогло :( Я смотрел те кто закачивает себе на серв. Чет не получилось, парсит но сам файл для скачивания не качает.
 

Entrol

Новичок
Регистрация
11 Май 2017
Сообщения
144
Реакции
72
Баллы
28
@Cyxapuk,
Прокси стоит?

Работает! Только вот ранее загруженные песни нефурычат, исключительно только новые, спарсенные после данной правки парсера....
Старые песни загружены на сервер и не прогружаются?
 

Mixis

Новичок
Регистрация
4 Апр 2017
Сообщения
55
Реакции
3
Баллы
8
Всё отлично работает, не знаю насщёт старых, только поставил.
Только вот нету файла youtube_img.php, и как-то не красиво.
у кого есть? скинте.
 

Вложения

CanceL

Продвинутый
Кодер
Регистрация
20 Янв 2018
Сообщения
48
Реакции
25
Баллы
18
Всё отлично работает, не знаю насщёт старых, только поставил.
Только вот нету файла youtube_img.php, и как-то не красиво.
у кого есть? скинте.
[HIDE="5"]Создайте в engine/modules файл youtube_img.php с таким содержимым: (код мой, у меня все ок)
Код:
<?php
if(!defined('DATALIFEENGINE')){die("Hacking attempt!");}

    $url = parse_url($link);
    $path = explode('/', $url['path']);

    echo $path[2];
[/HIDE]
 

MainC0de

Новичок
Регистрация
3 Окт 2017
Сообщения
78
Реакции
10
Баллы
8
@CanceL, Спасибо! Могу позже выложить фикс для парсинга картинок к исполнителям с last.fm. Фикс парсит картинку исполнителя с ласт.фм и добавляет (если она есть) к информации о треке в fullstory (или куда угодно) через доп. поле.
 

Mixis

Новичок
Регистрация
4 Апр 2017
Сообщения
55
Реакции
3
Баллы
8
@CanceL, Класс!! всё работает. Благодарю..
 
Сверху Снизу