1 (2022.08.13 08:18:46 отредактировано smsbox3)

Тема: twitch

Задача получить прямую ссылку с трансляции на twitch.
Для примера берем трансляцию

https://m.twitch.tv/disguisedtoast

Конечная ссылка, которая работает

https://usher.ttvnw.net/api/channel/hls/disguisedtoast.m3u8?player_type=pulsar&player_backend=mediaplayer&playlist_include_framerate=true&allow_source=true&token=%7B%22adblock%22%3Afalse%2C%22authorization%22%3A%7B%22forbidden%22%3Afalse%2C%22reason%22%3A%22%22%7D%2C%22blackout_enabled%22%3Afalse%2C%22channel%22%3A%22disguisedtoast%22%2C%22channel_id%22%3A87204022%2C%22chansub%22%3A%7B%22restricted_bitrates%22%3A%5B%5D%2C%22view_until%22%3A1924905600%7D%2C%22ci_gb%22%3Afalse%2C%22geoblock_reason%22%3A%22%22%2C%22device_id%22%3A%229676b21ee3c535f0%22%2C%22expires%22%3A1660368783%2C%22extended_history_allowed%22%3Afalse%2C%22game%22%3A%22%22%2C%22hide_ads%22%3Afalse%2C%22https_required%22%3Atrue%2C%22mature%22%3Afalse%2C%22partner%22%3Afalse%2C%22platform%22%3A%22mobile_web%22%2C%22player_type%22%3A%22pulsar%22%2C%22private%22%3A%7B%22allowed_to_view%22%3Atrue%7D%2C%22privileged%22%3Afalse%2C%22role%22%3A%22%22%2C%22server_ads%22%3Atrue%2C%22show_ads%22%3Atrue%2C%22subscriber%22%3Afalse%2C%22turbo%22%3Afalse%2C%22user_id%22%3Anull%2C%22user_ip%22%3A%2246.72.172.195%22%2C%22version%22%3A2%7D&sig=c6a58a1ea5f7a1a3d71650cefe565c38a003fc1e&cdm=wv&player_version=1.11.0

Пока, что не вижу, откуда ее извлекать?

Качество там будет автоматом подбираться с худшего к максимальному.

2

Re: twitch

Берите транскодер streamlink - https://streamlink.github.io/, он сам "прожует" ссылку и выберет качество.

3

Re: twitch

d1mas пишет:

Берите транскодер streamlink - https://streamlink.github.io/, он сам "прожует" ссылку и выберет качество.

Спасибо, но это не совсем то, что мне нужно. Я хотел бы на php на своем сервере получить прямую ссылку. Возможности установить туда что-то другое нет.

4

Re: twitch

Проект с открытым кодом, правда на пайтоне. Можно подсмотреть у разработчиков код по получению ссылки. На php нашел вот это https://github.com/nicklaw5/twitch-api-php, возможно там вы найдете что-то полезное. Больше, увы, от меня толку не будет )

Спасибо сказали: smsbox31

5

Re: twitch

Вот смотри что отрыл на гитхабе:

+ открыть спойлер
<?php ob_start();

/* Copyright © 2016 toxiicdev.net */

$clientId = "jzkbprff40iqj646a697cyrvl0zt2m6"; // Set your client key

// Curl function

function Curl($url, $header)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
    curl_setopt($ch, CURLOPT_TIMEOUT, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    $response = curl_exec($ch);
    curl_close ($ch);
    return $response;
}

// Check for get parameter 'channel' to exist and to be valid

if (isset($_GET['channel']) && preg_match("/^[a-zA-Z0-9_]{4,25}$/u", $_GET['channel']))
{
    // Lets request to twitch tv the access token
    $response = Curl("https://api.twitch.tv/api/channels/" . $_GET['channel'] . "/access_token/",
                [
                    "Client-ID: $clientId",
                    "Host: api.twitch.tv",
                    "User-Agent: Mozilla/5.0 (Windows NT 6.3; rv:43.0) Gecko/20100101 Firefox/43.0 Seamonkey/2.40",
                    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
                ]
            );
    
    // If the reply contains token
    if(strstr($response, "token"))
    {
        $json = json_decode($response, true); // Decode the JSON array
        header('Location: http://usher.twitch.tv/api/channel/hls/' . $_GET['channel'] . '.m3u8?player=twitchweb&token=' . rawurlencode($json['token']) . '&sig=' . $json['sig']);
    }
    else
    {
        // Print error
        echo "Couldn't get the token";
    }
}
else
{
    // Print error
    echo "Channel name not provided or invalid";
}

?>

Вроде работает

Спасибо сказали: smsbox31

6

Re: twitch

smsbox3 пишет:

Задача получить прямую ссылку с трансляции на twitch.
Для примера берем трансляцию

disguisedtoast

А можешь для примера написать названия каналов те которые нужны, мне для теста нужно

Отладка кода — это как охота. Только охота, на баги.

7

Re: twitch

Spell пишет:

А можешь для примера написать названия каналов те которые нужны, мне для теста нужно

Проще посмотреть на самом твиче, так как они то работают то нет. А как вывести все игры? если парсить сам твич то там 12 позиций а стальные подгружаются. Вот в данный момент онлайн каналы silvername, dreamthief

8

Re: twitch

foks5050 пишет:

А как вывести все игры?

Посмотреть как идет запрос и потом уже получить данные и вывести

foks5050 пишет:

Вот в данный момент онлайн каналы silvername, dreamthief

Спасибо нужно для проверки было

Отладка кода — это как охота. Только охота, на баги.

9

Re: twitch

foks5050 пишет:

Вроде работает

Спасибо большое. Да этот код работает нормально.

10

Re: twitch

smsbox3 пишет:

Спасибо большое. Да этот код работает нормально.

Да как бы не за что) Рад что смог помочь!  :)

11

Re: twitch

jzkbprff40iqj646a697cyrvl0zt2m6

этот код более не работает. Ни кто не поделится новым кодом?

12 (2023.05.16 22:59:14 отредактировано smsbox3)

Re: twitch

Похоже поменялся адрес запроса, теперь идет на https://gql.twitch.tv/gql, а Cliet-ID=kimne78kx3ncx6brgo4mv6wki5h1ko и host указываем gql.twitch.tv