• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Vítejte návštevníku! Přihlášení Registrace


Hodnocení tématu:
  • 5 Hlas(ů) - 3.4 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Připojení CZ/SK poskytovatelů OTT IPTV k TVHeadendu
potrebujem pomoct zmenil som zariadenie vsetko riadne odpojil a chcel som prihlasiť na O2tv nove zariadenie a pise to chybu potrebujem pomoct
Citace:provider: o2tv.cz
username: moj mail
password: heslo
device_name: hts
device_type: STB
device_id: pdFfio78lGhF9
resolution: HD
streaming_protocol: HLS
parse_stream: 0
insert_logo: 1
ffmpeg: /usr/bin/
1st authentication method will be used!
1st authentication method succeded!
access_token : ZmRkNGI4N2UtZDc0Ny00NjBjLWE5ZmEtNjVkZjQ3ZjJiNmZi
refresh_token : OTdkZTEyZjUtZjNkNy00NWRlLWI2MjYtYTNjZDUxMjE1NTc0
expires_in : 3153599999
./login.sh: 104: curl: not found
ERROR: Bad registration


 
 
Citovat
@lovec24: nevím co je to za zařízení/jaký ma OS, ale chybí ti tam utilita curl, která je ve skriptu použitá. Kromě toho budeš potřebovat ještě také jq.
 
Citovat
@lovec24 Ano, curl nebo default cesta jeho umístění pro spuštění ti v systému chybí. Jiná otázka je, proč ho v tom scriptu používáš. Podle toho, kam až ti script bez chyby doběhl, už byl úspěšně použit jak jq, tak wget. Takže by se dal klidně místo curl použít právě wget.
 
Citovat
(08.9.2022, 0:09)JiRo Napsal(a): @lovec24 Ano, curl nebo default cesta jeho umístění pro spuštění ti v systému chybí. Jiná otázka je, proč ho v tom scriptu používáš. Podle toho, kam až ti script bez chyby doběhl, už byl úspěšně použit jak jq, tak wget. Takže by se dal klidně místo curl použít právě wget.

cize by som mohol to curl obísť to by bolo super, staci namiesto curl zadat wget do scriptu?
 
Citovat
@lovec24 Musíš ale upravit parametry volání, wget má rochu jinou skladbu a syntaxi než curl. A možná bude třeba zadat nějaký user agent, mám dojem, že s default wget měla tahle služba při registraci problém. Ale to poznáš.

Na druhu stranu, asi by neměl být problém tam to curl nainstalovat, ne? Bude to možná rychlejší.
 
Citovat
(10.9.2022, 10:19)JiRo Napsal(a): @lovec24 Musíš ale upravit parametry volání, wget má rochu jinou skladbu a syntaxi než curl. A možná bude třeba zadat nějaký user agent, mám dojem, že s default wget měla tahle služba při registraci problém. Ale to poznáš.

Na druhu stranu, asi by neměl být problém tam to curl nainstalovat, ne? Bude to možná rychlejší.

mám problém,že mam to na mini pc curl nedokážem nainštalovať, pretože mi tam beží zalohovanie ktoré vyžaduje curl4 a bije sa to, ked to preinstalujem na curl tak curl4 spadne.
 
je to takto dobre ?
 
PHP kód:
json=$(wget -qO ${CURLHEADER} -"X-NanguTv-Access-Token:${access_token}-"X-NanguTv-Device-Id:${device_id}-"X-NanguTv-Device-Name:${device_name}https://app.o2tv.cz/sws/subscription/settings/subscription-configuration.json)
if [ $? != ] ; then printf "ERROR: Bad registration\n" ; exit fi 
 
Citovat
@lovec24 No, nevím, co máš v proměnné CURLHEADER, to může být právě pro tuto část registrace podstatné.

Místo -H používej všude --header.

Začátek příkazu musí být takto:
 
Kód:
wget -qO - ${CURLHEADER}
Tobe tam chybí " - ", což znamená, že ten následující parametr by wget chápal jako jméno výstupního souboru.

Jo a asi ti také mezi parametry může chybět:
 
Kód:
--no-check-certificate
Ale to záleží na tvém prostředí.

Ostatně, pokud ti u toho scriptu prošly ty úvodní části, tak v nich je pravděpodobně wget už použito. Tak se inspiruj tam.
 
Citovat
@JiRo: prepísal som to
 
PHP kód:
json=$(wget -qO - ${CURLHEADER} --header "X-NanguTv-Access-Token:${access_token}--header "X-NanguTv-Device-Id:${device_id}--header "X-NanguTv-Device-Name:${device_name}https://app.o2tv.cz/sws/subscription/settings/subscription-configuration.json)
if [ $? != ] ; then printf "ERROR: Bad registration\n" ; exit fi 

Výsledok:
 
PHP kód:
providero2tv.cz
username
: ***@gmail.com
password
: ***
device_nameTV
device_type
STB
device_id
bc95g8cf6v
resolution
HD
streaming_protocol
HLS
parse_stream
0
insert_logo
1
ffmpeg
: /usr/bin/
1st authentication method will be used!
1st authentication method succeded!
access_token NTE3OGI0YzEtOGU1ZS00OWZjLWFmOTEtMDY0YmMyMzc1ZTNh
refresh_token 
Yjc1ZjcwYWItZWQ0My00ZTg1LTkxYWUtOWI3ZTFlZGM1NWFl
expires_in 
3153599999
ERROR
Bad registration 
registracia nepresla
 
Citovat
@lovec24 Opakuji tedy otázku. Co máš v proměnné CURLHEADER?
 
Citovat
@JiRo Prikladám celý script
 
PHP kód:
#! /bin/sh
# Přihlášení a registrace zařízení služby OTT O2TV
# Verze 0.10
# Changelog:
# - doplněn fixní výběr první nabízené služby (dočasné řešení) - credit @fany.reklama+1
# Závislosti: wget, jq
# Předpoklady:
# - účet O2TV
# - zaplacená služba OTT O2TV
# - existuje soubor config.json

# Výchozí adresář
dir=$(dirname $0)
pwd=$(pwd)
cd ${dir}
script=$(pwd)
data=$(pwd)
cd ${pwd}

# Implementační parametry
debug=1

config_file
=${data}/config.json
access_file
=${data}/access.id

if [ ! -"${config_file}] ; then
    printf 
"ERROR: Configuration file ${config_file} missing\n"
    
exit 1
else
    
config_json=$(cat ${config_file})
    
provider=$(echo ${config_json} | jq -'.provider')
    
username=$(echo ${config_json} | jq -'.username')
    
password=$(echo ${config_json} | jq -'.password')
    
device_name=$(echo ${config_json} | jq -'.device_name')
    
device_type=$(echo ${config_json} | jq -'.device_type')
    
device_id=$(echo ${config_json} | jq -'.device_id')
    
resolution=$(echo ${config_json} | jq -'.resolution')
    
streaming_protocol=$(echo ${config_json} | jq -'.streaming_protocol')
    
parse_stream=$(echo ${config_json} | jq -'.parse_stream')
    
insert_logo=$(echo ${config_json} | jq -'.insert_logo')
    
ffmpeg=$(echo ${config_json} | jq -'.ffmpeg')
    if [ ${
debug} ] ; then
        
echo provider: ${provider}
        echo 
username: ${username}
        echo 
password: ${password}
        echo 
device_name: ${device_name}
        echo 
device_type: ${device_type}
        echo 
device_id: ${device_id}
        echo 
resolution: ${resolution}
        echo 
streaming_protocol: ${streaming_protocol}
        echo 
parse_stream: ${parse_stream}
        echo 
insert_logo: ${insert_logo}
        echo 
ffmpeg: ${ffmpeg}
    
fi
fi

HEADER
='--header "X-NanguTv-App-Version:Android#6.4.1" --header "User-Agent:Dalvik/2.1.0" --header "Accept-Encoding:gzip" --header "Connection:Keep-Alive" --header "Content-Type:application/x-www-form-urlencoded;charset=UTF-8"'
CURLHEADER='-H "X-NanguTv-App-Version:Android#6.4.1" -H "User-Agent:Dalvik/2.1.0" -H "Accept-Encoding:gzip" -H "Connection:Keep-Alive" -H "Content-Type:application/x-www-form-urlencoded;charset=UTF-8"'
language=cs

printf 
"1st authentication method will be used!\n"
post="grant_type=password&client_id=tef-web-portal-etnetera&client_secret=2b16ac9984cd60dd0154f779ef200679&platform_id=231a7d6678d00c65f6f3b2aaa699a0d0&language=${language}&username=${username}&password=${password}"
json=$(wget -qO - --no-check-certificate --post-data "${post}" "https://oauth.o2tv.cz/oauth/token")
if [ $? != 
] ; then
    printf 
"WARNING: 1st authentication method not succeeded, 2nd authentication method will be used!\n"
    
    
post="username=${username}&password=${password}"
    
json=$(wget -qO - ${HEADER} --header "X-NanguTv-Device-Name:${device_name}--no-check-certificate --post-data "${post}" "https://ottmediator.o2tv.cz:4443/ottmediator-war/login")
    if [ $? != 
] ; then printf "ERROR: Bad username and/or password\n" ; exit fi

    remote_access_token
=$(echo ${json} | jq -'.remote_access_token')
    
services=$(echo ${json} | jq -'.services')
    
service_id=$(echo ${services} | jq -'.[0].service_id')

    if [ ${
debug} ] ; then
        
echo remote_access_token : ${remote_access_token}
        echo 
services : ${services}
        echo 
service_id : ${service_id}
    
fi

    post
="service_id=${service_id}&remote_access_token=${remote_access_token}"
    
wget -qO - ${HEADER} --header "X-NanguTv-Device-Id:${device_id}--header "X-NanguTv-Device-Name:${device_name}--no-check-certificate --post-data "${post}" "https://ottmediator.o2tv.cz:4443/ottmediator-war/loginChoiceService"
    
if [ $? != ] ; then printf "ERROR: Bad authorization\n" ; exit fi

    post
="grant_type=remote_access_token&client_id=tef-web-portal-etnetera&client_secret=2b16ac9984cd60dd0154f779ef200679&platform_id=231a7d6678d00c65f6f3b2aaa699a0d0&language=${language}&remote_access_token=${remote_access_token}&authority=tef-sso&isp_id=1"
    
json=$(wget -qO - --post-data "${post}" "https://oauth.o2tv.cz/oauth/token")
    if [ $? != 
] ; then printf "ERROR: Bad acces_token request\n" ; exit fi
    printf 
"2nd authentication method succeded!\n"
else
    
printf "1st authentication method succeded!\n"
fi

access_token
=$(echo ${json} | jq -'.access_token')--no-check-certificate
refresh_token
=$(echo ${json} | jq -'.refresh_token')
expires_in=$(echo ${json} | jq -'.expires_in')

if [ ${
debug} ] ; then
    
echo access_token : ${access_token}
    echo 
refresh_token : ${refresh_token}
    echo 
expires_in : ${expires_in}
fi


json
=$(wget -qO - ${CURLHEADER} --header "X-NanguTv-Access-Token:${access_token}--header "X-NanguTv-Device-Id:${device_id}--header "X-NanguTv-Device-Name:${device_name}--no-check-certificate https://app.o2tv.cz/sws/subscription/settings/subscription-configuration.json)
if [ $? != ] ; then printf "ERROR: Bad registration\n" ; exit fi

subscription
=$(echo ${json} | jq '.subscription' tr -'"')
locality=$(echo ${json} | jq '.locality')
billingParams=$(echo ${json} | jq '.billingParams')
offer=$(echo ${billingParams} | jq '.offers')
tariff=$(echo ${billingParams} | jq '.tariff')

if [ ${
debug} ] ; then
    
echo subscription : ${subscription}
    echo 
locality : ${locality}
    echo 
billingParams : ${billingParams}
    echo 
offer : ${offer}
    echo 
tariff : ${tariff}
fi

printf 
"%s %s %s %s %s %s %s %s %s %s" ${device_id} ${access_token} ${refresh_token} ${subscription} ${provider} ${device_type} ${resolution} ${streaming_protocol} ${parse_stream} ${ffmpeg} > ${access_file}
if [ $? != 
] ; then printf "ERROR: Bad write to ${access_file}\n" ; exit fi
printf 
"Service's Ids saved to %s\n" "${access_file}"

printf "OK\n"

exit 

este mám otázku nebolo by možné to rozbehnúť libcurl3?

Tým pádom by to išlo na tom istom scripte a nemuselo by to byť na wget
Kód:
libcurl3
Kód:
libcurl3
 
Citovat
@lovec24 No, pokud se dívám na obsah proměnné CURLHEADER, tak je jasné, že to fungovat nemohlo. Ta proměnná je tam právě kvůli tomu použití curl, její obsah odpovídá jeho parametrům. Vždyť jsem ti psal, aby ses inspiroval dalšími použitími wget. A tam je použitá proměnná HEADER. Takže, v tom volání wget, co jsi použil místo curl, ještě použij proměnou HEADER místo CURLHEADER. Tzn. místo ${CURLHEADER} tam bude ${HEADER}.

Pokud to ani potom nebude fungovat (na 99% by to ale fungovat už mělo), tak pak se zaměříme na obsahu proměnné HEADER, i když na první pohled vypadá dobře. Ale to ti pomůžu až večer, protože nejsem doma a takhle z hlavy a s pomocí jen mobilu to nedám.
 
Citovat
@JiRo Spravil som to ako si povedal ale stale je to to iste
PHP kód:
#! /bin/sh
# Přihlášení a registrace zařízení služby OTT O2TV
# Verze 0.10
# Changelog:
# - doplněn fixní výběr první nabízené služby (dočasné řešení) - credit @fany.reklama+1
# Závislosti: wget, jq
# Předpoklady:
# - účet O2TV
# - zaplacená služba OTT O2TV
# - existuje soubor config.json

# Výchozí adresář
dir=$(dirname $0)
pwd=$(pwd)
cd ${dir}
script=$(pwd)
data=$(pwd)
cd ${pwd}

# Implementační parametry
debug=1

config_file
=${data}/config.json
access_file
=${data}/access.id

if [ ! -"${config_file}] ; then
    printf 
"ERROR: Configuration file ${config_file} missing\n"
    
exit 1
else
    
config_json=$(cat ${config_file})
    
provider=$(echo ${config_json} | jq -'.provider')
    
username=$(echo ${config_json} | jq -'.username')
    
password=$(echo ${config_json} | jq -'.password')
    
device_name=$(echo ${config_json} | jq -'.device_name')
    
device_type=$(echo ${config_json} | jq -'.device_type')
    
device_id=$(echo ${config_json} | jq -'.device_id')
    
resolution=$(echo ${config_json} | jq -'.resolution')
    
streaming_protocol=$(echo ${config_json} | jq -'.streaming_protocol')
    
parse_stream=$(echo ${config_json} | jq -'.parse_stream')
    
insert_logo=$(echo ${config_json} | jq -'.insert_logo')
    
ffmpeg=$(echo ${config_json} | jq -'.ffmpeg')
    if [ ${
debug} ] ; then
        
echo provider: ${provider}
        echo 
username: ${username}
        echo 
password: ${password}
        echo 
device_name: ${device_name}
        echo 
device_type: ${device_type}
        echo 
device_id: ${device_id}
        echo 
resolution: ${resolution}
        echo 
streaming_protocol: ${streaming_protocol}
        echo 
parse_stream: ${parse_stream}
        echo 
insert_logo: ${insert_logo}
        echo 
ffmpeg: ${ffmpeg}
    
fi
fi

HEADER
='--header "X-NanguTv-App-Version:Android#6.4.1" --header "User-Agent:Dalvik/2.1.0" --header "Accept-Encoding:gzip" --header "Connection:Keep-Alive" --header "Content-Type:application/x-www-form-urlencoded;charset=UTF-8"'
CURLHEADER='-H "X-NanguTv-App-Version:Android#6.4.1" -H "User-Agent:Dalvik/2.1.0" -H "Accept-Encoding:gzip" -H "Connection:Keep-Alive" -H "Content-Type:application/x-www-form-urlencoded;charset=UTF-8"'
language=cs

printf 
"1st authentication method will be used!\n"
post="grant_type=password&client_id=tef-web-portal-etnetera&client_secret=2b16ac9984cd60dd0154f779ef200679&platform_id=231a7d6678d00c65f6f3b2aaa699a0d0&language=${language}&username=${username}&password=${password}"
json=$(wget -qO - --no-check-certificate --post-data "${post}" "https://oauth.o2tv.cz/oauth/token")
if [ $? != 
] ; then
    printf 
"WARNING: 1st authentication method not succeeded, 2nd authentication method will be used!\n"
    
    
post="username=${username}&password=${password}"
    
json=$(wget -qO - ${HEADER} --header "X-NanguTv-Device-Name:${device_name}--no-check-certificate --post-data "${post}" "https://ottmediator.o2tv.cz:4443/ottmediator-war/login")
    if [ $? != 
] ; then printf "ERROR: Bad username and/or password\n" ; exit fi

    remote_access_token
=$(echo ${json} | jq -'.remote_access_token')
    
services=$(echo ${json} | jq -'.services')
    
service_id=$(echo ${services} | jq -'.[0].service_id')

    if [ ${
debug} ] ; then
        
echo remote_access_token : ${remote_access_token}
        echo 
services : ${services}
        echo 
service_id : ${service_id}
    
fi

    post
="service_id=${service_id}&remote_access_token=${remote_access_token}"
    
wget -qO - ${HEADER} --header "X-NanguTv-Device-Id:${device_id}--header "X-NanguTv-Device-Name:${device_name}--no-check-certificate --post-data "${post}" "https://ottmediator.o2tv.cz:4443/ottmediator-war/loginChoiceService"
    
if [ $? != ] ; then printf "ERROR: Bad authorization\n" ; exit fi

    post
="grant_type=remote_access_token&client_id=tef-web-portal-etnetera&client_secret=2b16ac9984cd60dd0154f779ef200679&platform_id=231a7d6678d00c65f6f3b2aaa699a0d0&language=${language}&remote_access_token=${remote_access_token}&authority=tef-sso&isp_id=1"
    
json=$(wget -qO - --post-data "${post}" "https://oauth.o2tv.cz/oauth/token")
    if [ $? != 
] ; then printf "ERROR: Bad acces_token request\n" ; exit fi
    printf 
"2nd authentication method succeded!\n"
else
    
printf "1st authentication method succeded!\n"
fi

access_token
=$(echo ${json} | jq -'.access_token')--no-check-certificate
refresh_token
=$(echo ${json} | jq -'.refresh_token')
expires_in=$(echo ${json} | jq -'.expires_in')

if [ ${
debug} ] ; then
    
echo access_token : ${access_token}
    echo 
refresh_token : ${refresh_token}
    echo 
expires_in : ${expires_in}
fi


json
=$(wget -qO - ${HEADER} --header "X-NanguTv-Access-Token:${access_token}--header "X-NanguTv-Device-Id:${device_id}--header "X-NanguTv-Device-Name:${device_name}--no-check-certificate https://app.o2tv.cz/sws/subscription/settings/subscription-configuration.json)
if [ $? != ] ; then printf "ERROR: Bad registration\n" ; exit fi

subscription
=$(echo ${json} | jq '.subscription' tr -'"')
locality=$(echo ${json} | jq '.locality')
billingParams=$(echo ${json} | jq '.billingParams')
offer=$(echo ${billingParams} | jq '.offers')
tariff=$(echo ${billingParams} | jq '.tariff')

if [ ${
debug} ] ; then
    
echo subscription : ${subscription}
    echo 
locality : ${locality}
    echo 
billingParams : ${billingParams}
    echo 
offer : ${offer}
    echo 
tariff : ${tariff}
fi

printf 
"%s %s %s %s %s %s %s %s %s %s" ${device_id} ${access_token} ${refresh_token} ${subscription} ${provider} ${device_type} ${resolution} ${streaming_protocol} ${parse_stream} ${ffmpeg} > ${access_file}
if [ $? != 
] ; then printf "ERROR: Bad write to ${access_file}\n" ; exit fi
printf 
"Service's Ids saved to %s\n" "${access_file}"

printf "OK\n"

exit 

Výsledok
 
PHP kód:
providero2tv.cz
username
: ***@gmail.com
password
: ****
device_nameTV
device_type
STB
device_id
bh64g8cf6v
resolution
HD
streaming_protocol
HLS
parse_stream
0
insert_logo
1
ffmpeg
: /usr/bin/
1st authentication method will be used!
1st authentication method succeded!
access_token MDJhZmRmYWMtYzY0MC00ZjZjLTliZjYtNjVlZGYwYTJkMGZj--no-check-certificate
refresh_token 
Y2VlMDI5YWQtNTJmYS00Y2I5LWE1MDUtYzRjNjVhMDEyZjYz
expires_in 
3153599999
ERROR
Bad registration 
 
Citovat
@JiRo: je možnosť to čo sme začali aj dokončiť ?
 
Citovat
Vie mi niekto poradiť ? utiahne RPI 4     20 pripojení ?
 
Citovat
@lovec24 20, to je dost. Záleží na mnoha okolnostech. Kolik budeš mít zdrojů absolutně, jakého typu, kolik z toho unikátně sledovaných, zda budeš používat timeshift a jako ho budeš mít nastavený, a také zda budeš nahrávat. Neznám detaily HW RPi4 co se týká síťového řešení. Výkonově to (CPU) asi zvládne, i když pojede (odhadem) určitě na více než 50 %. Možná, že ale bude problém s propustností sítě. A teď nemyslím s rychlostí na síťovém rozhraní, ale počet současně otevřených connections. Jak na straně směrem ke zdrojům (pokud budeš používat OTT služby), tak směrem ke klientům. Pokud budeš používat DVB-T/C USB přijímače, tak tam by ty 4 - 6 měl určitě zvládnout asi taky bez problémů.

Já jsem osobně dělal svého času testy na RPi2 B, kde je situace samozřejmě úplně jiná (myslím hlavně, co se týče konceptu síťového řešení i výkonu CPU). A tam jsem se dostal na 4 současně běžící klienty (víc jsem jich tenkrát neměl).

Nyní mám Tvheadend na Beelink GT King s CE, a zkoušel jsem stress test, se 4 přijímači USB DVB-T/C UPC/VODAFONE + 3 zdroje OTT (O2TV, Sledovani a TV GO) a měl jsme 5 současně puštěných klientů PVR HTSP v Kodi plus jeden jako addon PIP a 5 nahrávání, přičemž každý z těch 11 byl z unikátního zdroje (4 z USB, pokaždé z jiného mux-u, 7 z těch třech služeb OTT). Timeshift mám nastavený tak, že je část v RAM a většinou k tomu, aby se něco začalo zapisovat na kartu, nedojde. Nahrávám na USB Flash 0,5 TB na USB3 rozhraní. CPU zatížení kolem 50 %. Kodi na Beelink s Tvheadend serverem běželo trochu líněji, ale nijak zásadní problém to nebyl. V podstatě to běžný uživatel nepoznal. Pak jsem dokonce tu TV na Beelink shodil a pustil místo ní 4K HDR video a běželo to kupodivu také. Jen bylo vidět, že plnění video cache neprobíhalo tak plynule. Zatímco v normální porvozu (1-2 klienty PVR HTSP) při přehrávání videa 4K HDR je buffer přehrávače stále na 100 %, tak v tomto případě se pohyboval od 50 do 100 %.

Podle mne ti to nikdo, kdo to nezkusil, neřekne 100 %. 10 klientů by podle mě mělo být v pohodě určitě, u 20 bych váhal, právě kvůli tomu, co jsem napsal v úvodu. Ale je to jen odhad...
 
Citovat
nejde mi spustiť playlist všetko som nahodil vo vlc mi tvorí playlist, ale načítava a nič nespustí...potrebujem súrne radu.

Pri vyhľadavaní sledovanitv mi nenájde všetky kanály, ako napr filmboxy
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)