Tvheadend kanalų sąrašo suderinimas su android grotuvais: Tivimate, Siptv

tvheadend php script

Situacija tokia.

Kadangi gaunu android priedėlių testavimui ir kanalus dažniausiai žiūriu per tvheadend duodamą m3u sąrašą.

Ten kyla tokia problema, jog android grotuvai nelabai supranta kas jam paduodama ir jokios papildomos informacijos nerodo.

Reikia dar pačiam pridėti tv gidą, logotipus.

Tad pradėjau ieškoti, kaip galima tai išpręsti.

Radau jog tvheadend turi api ir paduoda informaciją per json failą.

Tad pradėjau savo php kelionę 😆

Dar yra įrašas dėl atsarginio tvheadend serverio pajungimo.

Prenumeruok 🤟

Gauk į paštą žinutę apie naujus įrašus 👍

Apie tvheadend api

Api galima pasiekti per /api adresą.

Daug informacijos surašyta apie tvheadend api yra github’e.

Realiai nagrinėjant radau jog galima paimti kanalus bei logotipus, taip pat galima paimt įrašus.

Su php nedraugauju, išvis man tai miškas (na kažkiek paaiškėjo principas 😆).

Tad pats skriptas gali būti kreivas arba kažką galima būtų pakeisti.

Tad jeigu yra minčių arba jeigu patobulinot, palikit tai komentaruose.

Nesugalvojau, kaip paimti kanalų kategorijas.

Vis dėl to pavyko sugalvoti, kaip paimti kategorijas iš tags nustatymo.

Skriptas

Išsaugome į index.php

<?php 

print_r(get_headers($url));
header('Content-Type: text/plain');
header("Access-Control-Allow-Origin: *");


date_default_timezone_set('Europe/Vilnius');

error_reporting(-1);
ini_set('display_errors', 'On');

$user = $_GET['user'];
$pass = $_GET['pass'];

//kanalai

$json_url = "http://$user:[email protected]/api/channel/grid?limit=999&sort=name";
$json_url3 = "http://$user:[email protected]/api/channeltag/grid";

$json1 = file_get_contents($json_url);
$json3 = file_get_contents($json_url3);

$array1 = json_decode($json1, true);
$array3 = json_decode($json3, true);
echo "#EXTM3U x-tvg-url=\"http://epg-failo-saltinis/guide.xml\"";
echo " url-tvg=\"http://epg-failo-saltinis/guide.xml\"\n";

$x = array();

foreach($array3['entries'] as $value) {

    $x[$value['uuid']] = $value['name'];

}

foreach($array1['entries'] as $value) {

    if (array_key_exists($value['tags'][0],$x)) {
        $name[] = $x[$value['tags'][0]];
    
    }
    
    echo "#EXTINF:-1 tvg-logo=\"";
    echo $value['icon_public_url'];
    echo "\" group-title=\"";
    echo $x[$value['tags'][0]];
    echo "\" tvg-id=\"";
    echo $value['name'];
    echo "\",";
    echo $value['name'];
    echo "\n";
    echo "http://$user:[email protected]/stream/channel/";
    echo $value['uuid'];
    echo "?profile=http-client\n";
}


// irasai

$json_url = "http://$user:[email protected]/api/dvr/entry/grid_finished";
$json = file_get_contents($json_url);
$array2 = json_decode($json);
foreach ($array2->entries as $o) 
 {  
$date = date("H:i d-m-Y", $o->start);
echo "#EXTINF:-1 tvg-logo=\"$o->channel_icon\" group-title=\"Įrašai ($o->channelname)\",$o->channelname|$o->disp_title|$date\n";
echo "http://$user:[email protected]/$o->url?profile=matroska\n";
}
?>

Reikia pasikeisti kur yra: servo-ip-adreas-ir-portas bei epg-failo-saltinis.

Nurodyti savo tvheadend IP adresą.

Norint pasiekti kanalų sąrašą

domenas.lt/index.php?user=tvheadend-vartotojas&pass=tvheadend-kodas

Vietoje: tvheadend-vartotojas rašome vartojo vardą kuris naudojamas tvheadend ir vietoje tvheadend-kodas to vartotojo kodą.

Pačiame tvheadend ties vartotojo nustatymais turi būti įjungta WEB interface nes kitaip neleis prieiti prie api.

Atidarius adresą turi paduoti kanalų sąrašą tokį kuris labiau draugauja su android grotuvais.

Prie kanalo adreso automatiškai pridės vartotoją:kodą@ nereiks rankiniu būdu suvesti.

Rodo programų gidą, logotipus.

Įrašus rodys pagal kanalo kategoriją. tarkim visi TV3 kanalai įrašai eis į savo kategoriją. Rodys kanalo logotipą, įrašo pavadinimą ir įrašo datą.

Androide, kaip minėjau neina prasukti, bet jeigu pavyks sugalvoti, kaip tai sutvarkyti, atnaujinsiu tekstą.

Naudojant VLC per Windows, bus duodamas kanalų sąrašas ir įrašai viename faile:

tvheadend php skriptas

Ar patiko įrašas?

Spausk jog įvertinti.

Vidutinis įvertinimas / 5. Įvertino:

Įvertinimų nėra, būk pirmas!

Jeigu įrašas patiko...

Pasidalink!

Jeigu įrašas nepatiko.

Padėk patobulinti įrašą!

Būtų malonu sužinoti kodėl?


Jeigu patiko įrašas, siūlau prenumeruoti, kaip tai padaryti aprašiau čia (el. paštu, telegram ir discord kanalai, facebook, twitter).

Gal patiks ir kiti įrašai