• 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:
  • 22 Hlas(ů) - 2.91 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Playlist O2TV.CZ addon - verze od Pavuucek
---------------
ThinkPad T530 : Lubuntu 20.04 + Kodi 19.4 

        
 
Citovat
@Martor Zapni si SZ!
 
Citovat
Chlapi, mam nejaky m3u zo siete + sa mi vytvori m3u z thoto pluginu. Da sa to nejako vlozit do IPTV Simple Clienta tak, aby mi nacital obidva naraz? Alebo ako by som to mohol urobit, aby som nemusel tieto dva m3u subory spajat rucne?
 
Citovat
Na PC mi tento addon funguje, na androide nie:

18:43:34.817 T:18446744071784364320 NOTICE: [Playlist O2TV] Preparation for Service
18:43:34.861 T:18446744071784364320 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.OSError'>
Error Contents: (1, 'Operation not permitted', '/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/userdata/addon_data/service.playlist.o2tv/streamer.sh')
Traceback (most recent call last):
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.playlist.o2tv/service.py", line 301, in <module>
_tryExec(_playlist_streamer_)
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.playlist.o2tv/service.py", line 121, in _tryExec
if not (sts.st_mode & stat.S_IEXEC): os.chmod(file, sts.st_mode | stat.S_IEXEC)
OSError: (1, 'Operation not permitted', '/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/userdata/addon_data/service.playlist.o2tv/streamer.sh')
-->End of Python script error report<--
18:43:35.061 T:18446744071784364320 ERROR: Exception
18:43:35.062 T:18446744071784364320 ERROR: TypeError
18:43:35.062 T:18446744071784364320 ERROR: :
18:43:35.062 T:18446744071784364320 ERROR: "'NoneType' object is not callable"
18:43:35.062 T:18446744071784364320 ERROR: in
18:43:35.062 T:18446744071784364320 ERROR: <bound method SimpleCache.__del__ of <resources.lib.simplecache.SimpleCache object at 0x8c69e2b0>>
18:43:35.062 T:18446744071784364320 ERROR: ignored
 
Citovat
Mám StB s Libre a taky nejde muže někdo poradit komu to jde díky :)
 
Citovat
@JiRo a @hoss psali ze jim to jede tak nevím co pro to musím udělat, aby mi to taky šlo Big Grin no každopádně aplikace do Samsung TV by se taky šikla. Fotbal no snaži se kluci ale škoda golu do šatny. Musí zakončit na bránu jinak gola nedáme
RPI2 Raspbian, RPI3b+ LibreElec, RPI4 LibreElec
 
Citovat
@Billy-sk Chyba addon je pouze toto:

Kód:
                                           Error Type: <type 'exceptions.OSError'>
                                           Error Contents: (1, 'Operation not permitted', '/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/userdata/addon_data/service.playlist.o2tv/streamer.sh')
                                           Traceback (most recent call last):
                                             File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.playlist.o2tv/service.py", line 301, in <module>
                                               _tryExec(_playlist_streamer_)
                                             File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/service.playlist.o2tv/service.py", line 121, in _tryExec
                                               if not (sts.st_mode & stat.S_IEXEC): os.chmod(file, sts.st_mode | stat.S_IEXEC)
                                           OSError: (1, 'Operation not permitted', '/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/userdata/addon_data/service.playlist.o2tv/streamer.sh')
                                           -->End of Python script error report<--
 
Ty ERROR: před a za jsou od Stream-Cinema. 1

Ono to asi nikde nebylo řečeno, ale ten addon na Androidu v této verzi asi správně fungovat nebude. Bude to chtít mírně přepracovat. Myslel jsem, že jsem to už změnil, ale jak vidno, asi ne. Až si najdu chvíli, mrknu se na to.

BTW Někdo tady sliboval, že by se dalšího vývoje ujal, ale zatím se mi neozval. Tak to ještě zkusím opravit.
 
Citovat
@JiRo to jsem byl asi já. A moje pokusy o rozchození zatim těžce selhávaji :-(
Server: i5-950, 16GB RAM, 1x120GB SSD, 1x 320GB + 4x 2TB HDD, Ubuntu 18.04, SW: TvHeadend, Plex Media Server (a jiné).
Klienti: Wetek Play 2 + Samsung 107cm TV, ASRock ION 330 + LG 82cm TV, záložní RPI3, SW: LibreELEC 8.2.5 / Kodi 17.6, PlexKodiConnect
 
Citovat
Zdravím,

taktéž se potýkám s tím, že mi addon na LibreELEC nefunguje. Podotýkám, že nejsem programátor. Trochu sem na to koukal a předpokládám, že problém bude v tom, že není možné z https://oauth.o2tv.cz/oauth/token získat autentikační token. Na prase sem si vykopíroval z adonu části, které řeší získání tokenu a nechal si vypsat co se ze serveru vrátí.


Kód:
import httplib
import urllib
import json
import requests

_COMMON_HEADERS = { "X-Nangu-App-Version" : "Android#1.2.9",
                   "X-Nangu-Device-Name" : "Nexus 7",
                   "User-Agent" : "Dalvik/2.1.0 (Linux; U; Android 5.1.1; Nexus 7 Build/LMY47V)",
                   "Accept-Encoding": "gzip",
                   "Connection" : "Keep-Alive" }
headers = _COMMON_HEADERS
headers["Content-Type"] = "application/x-www-form-urlencoded;charset=UTF-8"
data = {  'grant_type' : 'password',
                 'client_id' : 'tef-web-portal-etnetera',
                 'client_secret' : '2b16ac9984cd60dd0154f779ef200679',
                 'username' : 'user',
                 'password' : 'pass',
                 'platform_id' : '231a7d6678d00c65f6f3b2aaa699a0d0',
                 'language' : 'cs'}
req = requests.post('https://oauth.o2tv.cz/oauth/token', data=data, headers=headers, verify=False)
print(req.text)
j = req.json()
if 'error' in j:
   print(j)
if 'access_token' in j:
   access_token = j['access_token']
   print(access_token)
A výsledek je:


Kód:
{"result":null,"error":"authentication-failed","statusCode":401}
{u'statusCode': 401, u'result': None, u'error': u'authentication-failed'}


Otázka zní, zda mají tokeny nějakou platnost, protože pokud ano tak to časem přestane zřejmě fungovat všem. Ale záhadou mi je, že to někomu začalo fungovat.

User/pass zadávám dobře, na webu se s nimi bez problému přihlásím.

Cromac
 
Citovat
@cromac To byla docela zbytečná snaha. Nezískal jsi nic víc, než tu samou hlášku, kterou ti (v jiné formě) vypisuje addon. Ten, kdo kódu opravdu rozumí, ví o co jde.

Jinak, pokud addon někomu funguje (mně třeba ano)  není to proto, že by mu stále ještě platil acces token, ale proto, že mu přihlášení přes user/password funguje. Proč někomu funguje a někomu ne, to ví pouze v O2TV. I když je nutno připustit, že to možná nevědí ani tam. 1
 
Citovat
Prihlaseni pres web pouziva uplne jinou url pro autentifikaci, jedna se o jejich API, kdezto v pluginu a na mobilnich zarizeni je pouzivano Oauth. O vikendu jak tu nekdo psal bych se take zkusil zapojit a pres wireshark si odposlechnout co presne posila mobil, kde mi prihlaseni z jejich aplikace funguje, za headery pokud to vubec pujde.
Jinak pro testovani hlavicek stacil napr. Postman plugin do Chrome, kde se necha zasilani POST otestovat.
 
Citovat
Myslim ze existuje jednoduchsia cesta ako wshark ale poskusaj som zvedavy co chytis lebo ja som nieco taketo skusil na inej apke a nevidel som to co som chcel tak som sa na to vyprdol.
Lame truper 1.2,
Jody 16.2 2
 
Citovat
Tongue 
Zdravím, 

@JiRo: díky náčelníku za uznání  2

@JackOneil: tobě opravdu funguje příhlášení do mobilní aplikace, ale addon ti nejede? To my tedy úplně nedává smysl...
JackJOneil JackOnei
Mně teda nefunguje ani přihlášení skrze jejich mobilní aplikaci. Což dává smysl, když addon i mobilní aplikace používají stejné autentikační servery. Sniffnul sem si na mobilu komunikaci a celkem bez překvapení je, že hlavičky které používá addon sou OK ;o).

Kód:
Request Head:

POST /oauth/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 211
Host: oauth.o2tv.cz
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.10.0


Body:

client_id=tef-web-portal-etnetera&client_secret=2b16ac9984cd60dd0154f779ef200679&platform_id=231a7d6678d00c65f6f3b2aaa699a0d0&language=cs&grant_type=password&username=username&password=password

Response Head:

HTTP/1.1 401 Unauthorized
Date: Thu, 18 Oct 2018 20:35:04 GMT
Server: Apache/2.4.10 (Debian)
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET,POST,OPTIONS
Content-Security-Policy: default-src 'self' 'unsafe-inline'
X-Content-Security-Policy: default-src 'self' 'unsafe-inline'
Access-Control-Max-Age: 1728000
P3P: CP="IDC OUR"
X-FRAME-OPTIONS: DENY
Access-Control-Allow-Headers: X-NanguTv-TransactionID,x-nangutv-transactionid
Access-Control-Allow-Origin: http://oauth.o2tv.cz:80
Pragma: No-cache
Cache-Control: no-cache
Cache-Control: no-store
Content-Type: application/json;charset=utf-8
Content-Length: 64
X-Processing-Time: D=23834 t=1539894904910158
X-Cache-Miss: 1
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive


Body:

{
"result":null,
"error":"authentication-failed",
"statusCode":401
}

Zkusím napsat/zavolat do O2, že mi nefunguje mobilní aplikace. Pokud to fixnou pojede mi i addon (doufám  3 )

Cromac
 
Citovat
@cromac & @JackOneil Ale ani jedno z toho nevysvětluje, proč někomu přihlášení v tomto addon funguje. Kdyby v O2TV změnili nějaké parametry v procesu přihlašování, tak by to přihlášení nefungovalo nikomu. A já 100% vím minimálně o jednom, komu to funguje.
 
Citovat
@cromac, u mě je situace s addon podobná jako u Tebe, ale mobilní apka funguje.
Jsem zvědav co zjistíš u O2.

Je také pravdou, že byla upgradována služba moje.O2, kde mám hlášku, že děkují za trpělivost, ale ještě něco vylepšují, každopádně to by měl být pak Tvůj případ, kdy nejede ani apka.

Dej pls vědět, jak jsi dopadl, díky Martin
 
Citovat
Inak jeden postreh, podla mna aby Vam fungoval tento addon (okrem Androidu, ale ani tam nie problem s prihlasenim, ale ukladanim), musite mat nainstalovany aj addon O2TVGo, cez web, kde vam to funguje treba pozriet ci mate volne nejake zariadenie (ci Vas neodpaja z dovodu prekrocenia poctu zariadeni), prip. nejake zmazat. Potom treba vojst do addonu O2TVGo aby sa prihlasil, ak sa neprihlasi - problem je s inde, ak sa prihlasi, potom by mal na tomistom zariadeni fungovat aj tento addon.
 
Citovat
@Billy-sk Ne, tak to není! Žádná podmínka, že by pro správnou funkci tohoto addonu musel být nainstalovaný i addon O2TVGo není. Oba addony používají naprosto shodnou metodu autentizace přes přihlášení user/password. Addon O2TVGo navíc používá ve specifických případech pro přihlášení ještě i acces token, tato možnost není v tomto addon využita.
 
Citovat
Ahoj,

tak po změně hesla se mi mobilní aplikace rozjela. Bohužel addon byl stále nefunkční. Tak sem si tu komunikaci na mobilu sniffnul a autentizační proces je teď jiný. Udělal sem změny ve funkci "refresh_access_token", která je v o2tvgo.py a doplněk je funkční. 

Tímto bych poprosil někoho kdo se v pythonu opravdu vyzná zda by to nepřepsal do nějaké rozumné podoby a dal na github, aby se vydal update.

Změny ve funkci aplikujete na vlastní nebezpečí. Žádný support z mé strany k tomu nebude poskytován. Nerozumím tomu natolik abych si na to troufnul.

Díky


Cromac


Kód:
    def refresh_access_token(self):
        _COMMON_HEADERS0 = {
            'X-Nangu-Device-Name': self.device_id,
            'X-Nangu-App-Version': 'Android',
            'User-Agent': 'okhttp/3.10.0',
            'Accept-Encoding': 'gzip',
            'Connection': 'Keep-Alive',
            'Content-Type': 'application/x-www-form-urlencoded',
            }
        headers0 = _COMMON_HEADERS0
        data0 = {'username': self.username,
                 'password': self.password}
        req0 = \
            requests.post('https://ottmediator.o2tv.cz:4443/ottmediator-war/login'
                          , data=data0, headers=headers0, verify=False)
        j = req0.json()
        service_id = str(j['services'][0]['service_id'])
        remote_access_token = str(j['remote_access_token'])

        datax = {'service_id': service_id,
                 'remote_access_token': remote_access_token}
        reqx = \
            requests.post('https://ottmediator.o2tv.cz:4443/ottmediator-war/loginChoiceService'
                          , data=datax, headers=headers0, verify=False)

        _COMMON_HEADERS1 = \
            {'Content-Type': 'application/x-www-form-urlencoded',
             'Connection': 'Keep-Alive'}
        headers1 = _COMMON_HEADERS1
        data1 = {
            'client_id': 'tef-web-portal-etnetera',
            'client_secret': '2b16ac9984cd60dd0154f779ef200679',
            'platform_id': '231a7d6678d00c65f6f3b2aaa699a0d0',
            'language': 'cs',
            'grant_type': 'remote_access_token',
            'remote_access_token': remote_access_token,
            'authority': 'tef-sso',
            'isp_id': '1',
            }
        req1 = requests.post('https://oauth.o2tv.cz/oauth/token',
                             data=data1, headers=headers1, verify=False)

        j = req1.json()
        self.access_token = j['access_token']
        self.expires_in = j['expires_in']
        return self.access_token
 
Citovat
Já mám dost.... tolik expertu tady. To ze něco odposlechnete nic není. Získání playlistu je opravdu složitější a chce to více parametru. Kdybych tady hledal pomoc tak se člověk ztratí, protože každý postuje něco co je jasné. Chce to vědět s čím se kam vola a co dostanu a podobne. Ztrácíte čas, opravdu
 
Citovat
Vsak v poradku nikdo te nenuti fix pouzit. Udelal sem si ho pro sebe protoze experti jako ty pouze kecaji, ale kecama nic nespravis.
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)