Open fabpolli opened 5 years ago
Ciao, vista l'assenza dello sviluppatore, in attesa che ritorni, ho deciso di forkare e mantenere un progetto parallelo a questo link https://github.com/cttynul/plugin.video.raitv ho testato poco fa tutte le funzioni e sembra rispondere correttamente, puoi provare se succede lo stesso anche sulla mia versione? Ed eventualmente farmi presente i passaggi da te effettuati?
Certamente, farò la prova, e ti farò sapere, ho visto che l'anomalia mi si presentava solo per i giorni dopo venerdì scorso. Comparerò il plugin attivo adesso con la tua versione, e ti faccio sapere. Grazie
Ciao, vista l'assenza dello sviluppatore, in attesa che ritorni, ho deciso di forkare e mantenere un progetto parallelo a questo link https://github.com/cttynul/plugin.video.raitv ho testato poco fa tutte le funzioni e sembra rispondere correttamente, puoi provare se succede lo stesso anche sulla mia versione? Ed eventualmente farmi presente i passaggi da te effettuati?
Ho installato la tua verione forkata, è più completa sotto il punto di vista della sezione on demand ma accedendo alla sezione Relay TV per la giornata di Domenica 29 Settembre ad esempio (ma anche Sabato) tentando di recupeare la lista di un canale (Es. Rai 2) riporta errore e nel log trovo: 2019-10-01 19:10:12.671 T:1305469664 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
Per i giorni antecedenti Giovedì invece i programmi vengono recuperati correttamente e si possono visualizzare senza problemi
Il JSON chiamato risulta vuoto in alcuni giorni: https://www.raiplay.it/dl/palinsesti/Page-e120a813-1b92-4057-a214-15943d95aa68-json.html?canale=Rai1&giorno=28-09-2019
Probabilmente sarà cambiato l'URL per la richiesta del palinsesto replay, appena potrò farò un po' di reverse su Raiplay per cercare di fixarlo, grazie per la segnalazione! Se riscontri nell'immediato altri problemi puoi segnalarli qui? Così facendo rilascio una nuova versione con tutti i fix del caso.
Se posso aiutare volentieri lo faccio, credo che sia un problema rai, modificando la data il JSON viene restituito in modo corretto (tipo il 23/09/2019), quello che si potrebbe fare è notificare la cosa in modo differente rispetto all'errore nel log in caso di JSOn vuoto.
Se capisco come diavolo fare reverse engineering potrei dare una mano anch'io, solo che sono un dev .net, di Python non ci capisco nulla (prima o poi...) Cosa usate per fare reverse? Whireshark o Fiddler? Ed essendo la richiesta https si riesce lo stesso a sniffare? PS: non è meglio spostare la discussione sul repo di cttynul (che ringrazio per la voglia di prendere in mano la cosa!)
Con il fork MaxBambi Replay funziona, confronta i file.
@energywave io per il reverse di solito uso fiddler, credo sia l'unico sniffer a fare da man in the middle che riesca a forzare il contenuto SSL-strict. Tuttavia in questo caso non è necessario visto che tra le varie chiamate messe da dispositzione da RaiPlay ce n'è una con la lista di tutte le varie API.
@nx-99 grazie per la segnalazione, da un lato sono felice che ci sia qualcun altro che lavori al progetto.
Negli ultimi tempi mi sono dato al supporto della riscrittura di tutti i maggiori addon italiani, per renderli compatibili con l'imminente versione di Kodi 19, potete vedere i miei contributi anche con gli addon di Dplay (https://github.com/NeverWise/plugin.video.dplay/pull/22) e Mediaset Play (https://github.com/NeverWise/plugin.video.dplay/pull/22) E sono tutti mirrorati nel mio repository personale, in caso vogliate installarlo nel vostro Kodi vi lascio il qui il link per aggiungere il tutto alle sorgenti da cui procedere all'installazione https://cttynul.github.io/repo/ nel caso vogliate avere la versione di Rai Play e di tutti gli altri addon italiani a cui collaboro potete tranquillamente prenderlo come riferimento, è un qualcosa che uso, principalmente, a fine personale tuttavia, riconosco, possa essere d'aiuto a qualcuno.
@cttynul lodevole lavoro, visto che parli di addon italiani da sistemare, ti segnalo che anche nightflyer73/plugin.video.corrieretv ha smesso di funzionare.
Ho confrontato i due ropo, in effetti quello di max non accede al JSON ma alla pagina html e cerca i tag li per recuperare le info, il percorso usato è: https://www.raiplay.it/palinsesto/guidatv/lista/[idCanale]/[dd-mm-yyyy].html mentre quello originale e quello di cttnul richiede il JSON https://www.raiplay.it/palinsesto/app/old/[nomeCanale]/[dd-mm-yyyy].json che mi pare la soluzione più efficiente anche se quell'old nel percorso della rau non mi fa ben sperare per il futuro. Non ho modo ti provarlo al volo perché non sono a casa ma accedento al percorso https://www.raiplay.it/palinsesto/app/old/Rai2/29-09-2019.json adesso ritorna un set di dati apparentemente valido, quindi come ipotizzavo prima il problema era loro e forse si è risolto. Partendo dal fatto che sono un po' una pippa in Python comunque vorrei provare a mettere assieme i due script, ovvero se la chiamata JSON determina un errore nel recupero dello stesso provare passando dalla pagina web con la tecnica di max, che ne pensi?
Si, ho visto anch'io che quello di max fa lo scraping dell'html. Certo da programmatore il json mi sembra molto molto meglio (e soprattutto non si rischia che cambino una virgola nell'HTML e non funzioni più nulla...) Ad ogni modo l'errore suppongo sia durante il parse dei dati del JSON non durante la richiesta in se quindi la tua proposta finale equivale ad usare la versione di max. L'errore era di indice non compreso nell'intervallo. Potrebbe essere un valore non previsto da un'array di possibilità...?
Si, ho visto anch'io che quello di max fa lo scraping dell'html. Certo da programmatore il json mi sembra molto molto meglio (e soprattutto non si rischia che cambino una virgola nell'HTML e non funzioni più nulla...) Ad ogni modo l'errore suppongo sia durante il parse dei dati del JSON non durante la richiesta in se quindi la tua proposta finale equivale ad usare la versione di max. L'errore era di indice non compreso nell'intervallo. Potrebbe essere un valore non previsto da un'array di possibilità...? In realtà l'errore derivava dalla return di un nodo che dovebbe essere presente nel JSON response[channelName][0]["palinsesto"][0]["programmi"] ma che se non c'è non era trappato e mandava tutto in errore al log. Ho fatto alcune modifiche alla versione di @cttynul e creato una pull request sul suo repo (a dire il vero l'ho fatta anche qui per errore) vediamo se anche secondo lui può essere una implementazione valida o meno. Parsare l'html non piace neppure a me proprio perché se cambiano i tag nonva un tubo, ma come fallback non mi sembra malissimo
@fabpolli in effetti non volevo fare lo switch dell'url così di brutto, specie perché, come te, quell'"old" nell'url dell'API è tutto meno che incoraggiante, avevo pensato, addirittura di dare una nuova linfa all'intero script andando a recuperare i vari URL delle chiamate, dal JSON principale che racchiude tutte le chiamate. Terrò sotto occhio anche quella sezione dell'addon che, non vi nascondo, non abbia mai utilizzato finora, in caso si "rompa", potrei chiedervi di segnalare l'issue nel mio repository?
@energywave purtroppo quell'errore nel JSON è dovuto al fatto che, non so per quale motivo, la chiamata vada a buon fine sì, ma restituisca un array vuoto: https://www.raiplay.it/dl/palinsesti/Page-e120a813-1b92-4057-a214-15943d95aa68-json.html?canale=Rai1&giorno=28-09-2019 Per quanto mi riguarda, considerando che tutte queste major si appoggino a chiamate API (più o meno documentate) per quanto mi riguarda preferisco di gran lunga appoggiarmi a queste, piuttosto, che andare di webscraping, anche perché parliamo di siti web più che vivi (un esempio lampante è Dplay Plus) e alla luce della natura molto Javascriptiana rendendo tutto molto dinamico, è possibile che un addon scritto con il sistema di scraping web sia molto più soggetto a rompersi, un esempio lampante è proprio questo addon che, malgrado non sia stato seguitissimo, ha sempre funzionato (quasi) alla perfezione.
@nx-99 hai qualche altro addon italiano da "consigliare" oltre a quello del Corriere?
@cttynul solo quello.
@cttynul non appena posso aggiorno l'addon nel raspy e verifico se da problemi, ho visto anche sul repo si maxbambi che ha una voce in più credo, quando posso controllo cosa fa e al limite te la sottopongo per mergiare anche quella se la ritieni interessante. Hai sotto mano l'url del JSON principale a cui fai riferimento per darci un occhio? Se li c'è tutto se il plugin si autoadattasse alle sezioni disponibili sarebbe una cosa spettacolare
Ragazzi grazie mille di aver preso in mano questo plug-in, avete risolto un mio problema perché mia mamma è una heavy user di questo plugin e quando non va... @fabpolli Carina la modifica del fallback! Così se un giorno il json non funzionasse più (come l'old fa presagire) continuerebbe a funzionare... Ok, ho deciso. Devo imparare il python. PS: stasera lo metto anch'io sul mio OSMC e se ci sono problemi li riporto. Grazie ancora intanto!
@fabpolli se vuoi installare l'addon in una maniera più user friendly puoi utilizzare il mio repository, aggiornato alla versione di ieri. L'url con tutte le chiamate JSON (da cui ho recuperato quella funzionante per il palinsesto) è questo: http://www.raiplay.it/mobile/prod/config/RaiPlay_Config.json presente anche nei commenti del codice stesso. Purtroppo alcune funzioni dell'addon (come la navigazione dei contenuti suddivisa per lettera) è un qualcosa ereditato direttamente dalle chiamate di Rai Play stesso, avrei preferito renderlo più "funzionale" ma vorrei evitare di fare il passo più lungo della gamba dato che preferisco vengano garantite tutte le funzioni principali. Non ho avuto modo di vedere la feature aggiunta da maxbambi in caso dovessi trovare una corrispondenza 1-1 potremmo anche inserirla nell'addon e rilasciare una nuova versione nel mio repository (ad oggi aggiornata solo all'ultimo fix sul palinsesto).
Io ho collaudato l'addon sul mio raspberry pi 2 e funziona egregiamente, ottimo! Devo mettermi ad imparare python...
Mi inserisco nella vostra discussione....
anch'io avrei preferito mantenere la lettura dei dati attraverso json, ma le url che avevo a disposizione non funzionavano (o davano risposta vuota oppure - ancora più buffo - restituivano un elenco incompleto)
Il passaggio all'html è arrivato quando ho visto che il json ottenuto da http://www.rai.it/dl/RaiPlay/2016/menu/PublishingBlock-20b274b1-23ae-414f-b3bf-4bdc13b86af2.html?homejson (indirizzo indicato come 'menuService' in http://www.raiplay.it/mobile/prod/config/RaiPlay_Config.json ) riporta
"ID":"ContentItem-00787130-e074-4af1-b714-2a19cd78d60f",
"PathID":"/raiplay/guidatv/?json",
"name":"Guida TV / Replay",
"image":"/dl/img/2018/06/08/1528460119499_ico-guida.png",
"original-type":"RaiPlay menu Item",
"sub-type":"Palinsesto Page",
"menu-type":"null",
"position":""
ma l'url indicata non restituisce un file json, ma una pagina html (forse c'è un trucco attraverso gli header giusti, ma tutti gli altri indirizzi funzionano correttamente!)
Allora ho trovato, non senza sofferenza informatica, la soluzione con l'html, ovviamente nell'ipotesi di ritornare al json appena fosse saltato fuori un indirizzo funzionante...
Altre osservazioni:
@maxbambi è bello che ti sia unito anche tu alla discussione dato che sei, sicuramente, tra i più attivi nello sviluppo e nel mantenimento dell'addon!
L'url da te citato, per quel che possa valere ridireziona qui https://www.raiplay.it/guidatv/Page-e120a813-1b92-4057-a214-15943d95aa68-lista.html?json diciamo che è un serpente che si morde la coda!
Interessante l'idea di ampliare l'offerta aggiungendo anche gli eventi di Rai Sport (alla luce dei diritti acquistati di recente direi valga assolutamente la pena poterne fruire tramite un addon), purtroppo essendo Rai Sport una web app scollegata da Rai Play suppongo risponda ad API diverse.
CVD, sparando un po' alla cieca sono riuscito a recuperare qualche JSON a destra e a manca, purtroppo arrivare alla root delle API (ammesso che esista) è un tantinello ostico, tuttavia il funzionamento del portale è totalmente identico a quello di Rai Play, questo ad esempio è il JSON a cui si appoggia la sezione calcio https://pastebin.com/ZyazZyeF ho testato al volo e la visione dei contenuti ed è possibile. L'URL a cui fa riferimento quella chiamata è questa: https://www.raisport.rai.it/atomatic/news-search-service/api/v1/search?transform=false tuttavia la richiesta effettuare non è una GET bensì una POST. Ci si può lavorare un po' e magari la sezione sport potrebbe subire un'evoluzione non indifferente!
PS. A livello organizzativo dello sviluppo, anche perché si tratta del "lavoro della domenica" essendo uno di quelli che odia lo sviluppo parallelo, credo che per te vada bene se lavoriamo e contribuiamo ciascuno al repository dell'altro, ho sempre pensato che i lavori collaborativi facciano bene alla community e pare che questo addon ne abbia una anche attiva su Github! Spero non ti dia fastidio che in passato abbia mergato diverse modifiche dal tuo repo, e grazie al contributo di @fabpolli aggiunto anche la tua sezione di scraping web per il palinsesto, e che il progetto sia mirrorato nel mio repository di Kodi.
@cttynul ovviamente non ho problemi a collaborare, né a mettere a disposizione il mio codice... sarebbe opportuno individuare un repo che svolga il ruolo di "ufficiale", in modo che i contributi possano convergere tutti in una stessa direzione e si possa monitorare l'avanzamento del lavoro...
Vorrei ringraziare @nightflyer73, @cttynul e @maxbambi per l'ottimo lavoro. Ho appena installato la versione 3.0.1 e finalmente il mio piccolo può tornare a guardare i suoi cartoni su raireplay. Grazie di cuore!
@cttynul sarebbe opportuno individuare un repo che svolga il ruolo di "ufficiale", in modo che i contributi possano convergere tutti in una stessa direzione e si possa monitorare l'avanzamento del lavoro...
Aggiungo io: sarebbe opportuno far puntare gli addon installabili da kodi ai nuovi repo. L'utente comune installa l'addon Rai Play, errore, "oh che cavolo, non va mai niente" e disinstalla. Bisogna rendere fruibile a tutti il vostro lavoro :)
@cttynul sarebbe opportuno individuare un repo che svolga il ruolo di "ufficiale", in modo che i contributi possano convergere tutti in una stessa direzione e si possa monitorare l'avanzamento del lavoro...
Aggiungo io: sarebbe opportuno far puntare gli addon installabili da kodi ai nuovi repo. L'utente comune installa l'addon Rai Play, errore, "oh che cavolo, non va mai niente" e disinstalla. Bisogna rendere fruibile a tutti il vostro lavoro :)
In realtà, qualche giorno fa, ho provato a ripubblicare la mia nuova versione del plugin RaiOnDemand nel repo ufficiale di Kodi, ho fatto la richiesta di merge, ma non ho ancora ricevuto risposta... aspetto con pazienza, ma penso che sia meglio semplicemente prendere contatti con i siti italiani di plugin per kodi
Non ho la più pallida idea di come funzioni il repo di kodi sotto l'aspetto di "selezione" dei plugin da includere e manutenere, mi sto approcciando la prima volta con questo mondo, sicuro sarebbe importante che il lavoro che avete svolto sia incluso nella parte ufficiale a beneficio degli utenti, sarebbe auspicabile però far cinvergere tutte le modifiche fatte da @cttynul e @maxbambi in un unico progetto da portare avanti, credo sarebbe valutato meglio anche da chi deve scegliere quale repo puntare come ufficiale
Con una settimana di ritardo, qualcuno mi ha risposto sulla 'pull request'. Ci sono tutta una serie di modifiche da fare sul codice per adattarlo ai loro standard (vorrei ricordare che parte del codice che vogliono che modifichi era già nel loro repo!) Per chi è curioso di seguire il tutto https://github.com/xbmc/repo-plugins/pull/2539 Alcune sono cose semplici (tipo usare la funzione setArt invece di inserire l'indirizzo dell'immagine nel costruttore dell'oggetto ListItem), per altre tipo la compatibilità con Python 3 chiederei l'aiuto ad altri (per esempio @cttynul)
@maxbambi e @cttynul mi sono permesso di scaricare ambedue i repo e li ho mergiati manualmente. Poi ho apportato le modifiche richieste dal team kodi (almeno cerdo di averle fatte tutte) e ho creato una pull request sul repo di max (se non ho errato ha fatto la richiesta del suo repo di merge in quello ufficiale) Ho adeguato anche la struttura del splugin per adeguamento con la versione 19 (anche la 18 già lo richiede ma tollerano la vecchia versione). Unica cosa che non ho fatto è quella dove suggerivanio di mantenere l'entry point il più piccolo possibile. Credo che per quello serva una ristrutturazione delle classi un po' intensa per rivedere il funzionamento delle richieste e la loro gestione
Altra cosa che non ho fatto e quella di modificare la versione di python richiesta per l'esecuzione, non sapevo esattamente quale fosse la versione 3 da indicare
@maxbambi e @cttynul mi sono permesso di scaricare ambedue i repo e li ho mergiati manualmente. Poi ho apportato le modifiche richieste dal team kodi (almeno cerdo di averle fatte tutte) e ho creato una pull request sul repo di max (se non ho errato ha fatto la richiesta del suo repo di merge in quello ufficiale) Ho adeguato anche la struttura del splugin per adeguamento con la versione 19 (anche la 18 già lo richiede ma tollerano la vecchia versione). Unica cosa che non ho fatto è quella dove suggerivanio di mantenere l'entry point il più piccolo possibile. Credo che per quello serva una ristrutturazione delle classi un po' intensa per rivedere il funzionamento delle richieste e la loro gestione
Altra cosa che non ho fatto e quella di modificare la versione di python richiesta per l'esecuzione, non sapevo esattamente quale fosse la versione 3 da indicare
grazie @fabpolli del lavoro... soltanto ti chiedo di pazientare per il merge perché ho almeno tre versioni diverse fra pc e remoto. Ho fatto anch'io alcune modifiche sul clone git locale di repo-plugin e da lì ho aggiornato la pull request. La versione sul mio github ha in più la sezione Rai Sport, ma non è quella che ho inviato perché ho aggiunto quella parte di codice dopo aver provato a chiedere il merge. L'idea è di vedere se ed in che tempi raiplay rientrerà nel repo ufficiale e poi penseremo ad una versione completa di tutto. Diciamo che per adesso c'è una versione apripista....
Io non ho nessuna fretta, per quel che serve a me il plugin va perfettamente! Con i tempi debiti arrivare a manuntenere il plugin su repo ufficiale sarebbe una bella vittoria per tutti gli utenti e per voi che vi avete speso tempo
Ciao a tutti, l'addon a ripreso a dare errore. Da quanto ho capito perché hanno aggiornato di nuovo il sito di raiplay e di conseguenza anche le varie app.
Hai controllato la mia ultima versione sul mio fork? https://github.com/maxbambi/plugin.video.raitv C'era un piccolo errore su un nome di un indice ("pathID" nella versione vecchia, "path_id" nella versione nuova)
@maxbambi @cttynul purtroppo l'addon da oggi non funziona più, non si apre nemmeno, vi allego il log, spero possiate risolvere. Grazie per il vostro lavoro.
2019-11-04 10:53:40.367 T:3607217024 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--[/COLOR]
@maxbambi @cttynul @tomax80 confermo l'errore su LibreELEC 8.2.5 su RaspBerry 2. Ho provato a riprodurre la puntata di Barbapapa di domenica 3 novembre delle ore 00:00 dal Replay di RaiYoyo . Ho quindi verificato che il 2 novembre si è anche aggiornata l'app RaiPlay su Android, alla versione 3.0.2. Quindi, immagino, che il malfunzionamento del plugin sia dovuto ad un cambiamento dei JSON scambiati. Questo il log del'errore:
12:38:33.408` T:1097855904 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.ValueError'>
Error Contents: No JSON object could be decoded
Traceback (most recent call last):
File "/storage/.kodi/addons/plugin.video.raitv/default.py", line 569, in <module>
play(url, pathId)
File "/storage/.kodi/addons/plugin.video.raitv/default.py", line 143, in play
metadata = raiplay.getVideoMetadata(pathId)
File "/storage/.kodi/addons/plugin.video.raitv/resources/lib/raiplay.py", line 91, in getVideoMetadata
response = json.load(urllib2.urlopen(url))
File "/usr/lib/python2.7/json/__init__.py", line 291, in load
File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
ValueError: No JSON object could be decoded
-->End of Python script error report<--
12:38:33.595 T:1945477696 ERROR: Playlist Player: skipping unplayable item: 0, path [plugin://plugin.video.raitv/?path_id=%2Fvideo%2F2017%2F09%2FBarbapapa---S1E11---Il-Problema-Della-Casa-78a7f969-f2b8-4840-a36f-0fe3c00dcdeb.html%3Fjson&mode=play]>
@maxbambi @cttynul @tomax80 ho avuto il tempo di provare a scrivere una patch che pare funzionare. Ho forkato il repository di @cttynul e creato una pull request. Chiedo alla community di testare la patch ed @cttynul di revisionarla (non so se bisogna fare qualcosa anche per la parte radio del plugin!!!) ed eventualmente integrarla.
@maxbambi io ho installato ieri il plugin dal tuo repo su un reaspberry 3 e funziona bene, provato a riprodurre dei programmi replay random, naviga e riproduce correttamente. Ho notato una cosa: bisognerebbe aggiungere il riferimento all'addon script.common.plugin.cache (se ricordo bene, non sono certissimo del nome) perchè se installi l'addon per primo senza installarne altri da errore ed esce, poi guardando i log diceva appunto che tale addon non era installato, bisognerebbe che kodi lo installi automaticamente, come fanno gli altri addon. Una cosa però, secondo me è importante individuare un repo "ufficiale", da usare come master perché anch'io ogni volta che la reinstallo (per amici e parenti) non so mai da dove pescare quella più aggiornata, allo stato attuale vedo due candidati: @cttynul e @maxbambi . L'unico che funziona ora come ora è quest'ultimo. Così anche le discussioni (gli "issues") dovrebbero essere su tale repo, che ne dite? E sarebbe altrettanto importante fare sto push nel repo di kodi, che incrementerebbe l'utilizzo e la disponibilità del plugin di 1 a 1000! Ora lo installa solo chi "smanetta", dovrebbe essere disponibile per tutti! :)
@maxbambi io ho installato ieri il plugin dal tuo repo su un reaspberry 3 e funziona bene, provato a riprodurre dei programmi replay random, naviga e riproduce correttamente. Ho notato una cosa: bisognerebbe aggiungere il riferimento all'addon script.module.addon.common (se ricordo bene, non sono certissimo del nome) perchè se installi l'addon per primo senza installarne altri da errore ed esce, poi guardando i log diceva appunto che tale addon non era installato, bisognerebbe che kodi lo installi automaticamente, come fanno gli altri addon. Una cosa però, secondo me è importante individuare un repo "ufficiale", da usare come master perché anch'io ogni volta che la reinstallo (per amici e parenti) non so mai da dove pescare quella più aggiornata, allo stato attuale vedo due candidati: @cttynul e @maxbambi . L'unico che funziona ora come ora è quest'ultimo. Così anche le discussioni (gli "issues") dovrebbero essere su tale repo, che ne dite? E sarebbe altrettanto importante fare sto push nel repo di kodi, che incrementerebbe l'utilizzo e la disponibilità del plugin di 1 a 1000! Ora lo installa solo chi "smanetta", dovrebbe essere disponibile per tutti! :)
Sono perfettamente d'accordo anch'io sul fatto che c'è bisogno di creare un repo ufficiale da usare come master. Avevo provato a effettuare una pull request sul repo ufficiale di kodi, ma le procedure non sono tutte così chiare e i tempi di review sono biblici! Risultato: è cambiato Raiplay prima di riuscire ad inserire il plugin... dunque attualmente la mia pull request è stata chiusa.
Il mio obiettivo adesso è di cercare di creare un plugin funzionante con i contributi di tutti, attendere la fine della fase transitoria, verificare la compatibilità con python 3 e effettuare una pull request definitiva. Vi chiedo di provare ad installare dal mio repo https://github.com/maxbambi/plugin.video.raitv che dovrebbe essere il più aggiornato, anche con i contributi di @cttynul e @fabpolli per vedere se si riesce di arrivare ad una versione condivisa funzionante
Per quanto riguarda script.module.addon.common, in precedenza era indicata la dipendenza da tale liberia nel file addon.xml, poi l'avevo tolta perché incompatibile con python 3 e sostituita con le librerie forkate aggiunte da @cttynul al pacchetto del plugin. Se si presenta l'errore, significa che da qualche parte c'è ancora l'import sbagliato (controllerò).
@maxbambi @cttynul @federicodisante @energywave
Il problema in effetti era una mancata dipendenza, l'addon Common Plugin Cache. Avendo fatto un'installazione pulita di CoreElec sul mio tv box , tale addon non era presente. Ora che l'ho installato è tornato a funzionare a meraviglia. Grazie a tutti!
Ah ecco, grazie per la precisazione, l'addon mancante era quello: script.common.plugin.cache . Ho aggiornato il mio commento sopra con il nome giusto.
@maxbambi @cttynul @federicodisante @energywave Non saprei cosa dire! Probabilmente ci sono troppe repository. Io fino a qualche giorno fa andavo alla grande con la versione 3.0.1 (github hash commit 0cb803) di @cttynul.
Mi sono messo al lavor per cercare un fix dopo la segnalazione di @tomax80, non avendo visto che sul repo di @maxbambi si era arrivati alla versione 3.3.5 ((github hash commit a57411 ).
Non sono molto esperto di plugin kodi, quindi non saprei esprimermi sulla necessità di avere già installato l'addon Common Plugin Cache.
In casa ho tre installazioni, una per ogni televisore ed effettivamente sarebbe comodo non dover installare a mano il plugin ad ogni modifica.
L'import è stato modificato correttamente, ma nel file StorageServer.py modificato che ho preso da @cttynul c'è ancora la linea
self.settings = self.xbmcaddon.Addon(id='script.common.plugin.cache')
che dà errore se quella libreria non è installata
Eppure lo stesso @cttynul aveva commentato su addon.xml
<!--<import addon="script.common.plugin.cache" version="0.9.1"/>-->
nel tag <requires>
Dunque se si vuol far funzionare tutto, attualmente c'è bisogno di aggiungere nel file addon.xml
tra <requires>
e </requires>
la linea
<import addon="script.common.plugin.cache" version="2.5.0"/>
ma poi dovremo trovare una soluzione definitiva alla compatibilità con Python 3, perché senza py3 il plugin è destinato a non funzionare con i kodi futuri e neppure viene fatto entrare nel repo ufficiale. La speranza è anche che la stessa libreria common venga aggiustata, perché è abbastanza stupido compromettere molti plugin per una libreria citata in tutte le documentazioni di kodi
Scusate per l'assenza! L'errore sull'import del plugin cache è un piccolo refuso di codice del fork interno del sistema di caching mea culpa! Credo che comunque tutto il fork del common cache sia superfluo dato che dovrebbe essere aggiornato a Python 3 dai dev di Kodi!
@federicodisante io ho un repository con tutti gli addon che mantengo però, purtroppo, trattandosi di qualcosa che faccio a tempo perso, purtroppo, non sempre riesco a starci dietro con una certa costanza, correggerò questo piccolo refuso con un rebase della fork di Max.
Purtroppo l'addon non funziona più, questo è il log:
2019-11-13 15:54:27.044 T:3699872640 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--[/COLOR]
Purtroppo l'addon non funziona più, questo è il log:
2019-11-13 15:54:27.044 T:3699872640 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--[/COLOR]
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS![/COLOR] Error Type: <type 'exceptions.IndexError'>[/COLOR] Error Contents: list index out of range[/COLOR] Traceback (most recent call last):[/COLOR] File "/storage/.kodi/addons/plugin.video.raitv/default.py", line 46, in [/COLOR] raisport_keys = cache.cacheFunction(RaiPlay().fillRaiSportKeys)[/COLOR] File "/storage/.kodi/addons/plugin.video.raitv/resources/lib/StorageServer.py", line 577, in cacheFunction[/COLOR] ret_val = funct(*args)[/COLOR] File "/storage/.kodi/addons/plugin.video.raitv/resources/lib/raiplay.py", line 105, in fillRaiSportKeys[/COLOR] title=dataTematica[0].split('|')[0][/COLOR] IndexError: list index out of range[/COLOR] -->End of Python script error report<--[/COLOR] 2019-11-13 15:54:27.133 T:3612341120 ERROR: GetDirectory - Error getting plugin://plugin.video.raitv/?content_type=audio[/COLOR] 2019-11-13 15:54:27.136 T:4064108560 ERROR: CGUIMediaWindow::GetDirectory(plugin://plugin.video.raitv/?content_type=audio) failed[/COLOR]
@tomax80 Che versione hai? Perché con l'ultima versione (3.3.9 ) il problema dovrebbe essere corretto
Mi ero perso quell'aggiornamento, grazie mille ora funziona
Il mer 13 nov 2019, 16:19 Max notifications@github.com ha scritto:
Purtroppo l'addon non funziona più, questo è il log:
2019-11-13 15:54:27.044 T:3699872640 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--[/COLOR]
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS![/COLOR] Error Type: <type 'exceptions.IndexError'>[/COLOR] Error Contents: list index out of range[/COLOR] Traceback (most recent call last):[/COLOR] File "/storage/.kodi/addons/plugin.video.raitv/default.py", line 46, in [/COLOR] raisport_keys = cache.cacheFunction(RaiPlay().fillRaiSportKeys)[/COLOR] File "/storage/.kodi/addons/plugin.video.raitv/resources/lib/StorageServer.py", line 577, in cacheFunction[/COLOR] ret_val = funct(*args)[/COLOR] File "/storage/.kodi/addons/plugin.video.raitv/resources/lib/raiplay.py", line 105, in fillRaiSportKeys[/COLOR] title=dataTematica[0].split('|')[0][/COLOR] IndexError: list index out of range[/COLOR] -->End of Python script error report<--[/COLOR] 2019-11-13 15:54:27.133 T:3612341120 ERROR: GetDirectory - Error getting plugin://plugin.video.raitv/?content_type=audio[/COLOR] 2019-11-13 15:54:27.136 T:4064108560 ERROR: CGUIMediaWindow::GetDirectory(plugin://plugin.video.raitv/?content_type=audio) failed[/COLOR]
@tomax80 https://github.com/tomax80 Che versione hai? Perché con l'ultima versione (3.3.9 ) il problema dovrebbe essere corretto
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/nightflyer73/plugin.video.raitv/issues/51?email_source=notifications&email_token=AFMQNMHTXIKZ2UUQG4HHHK3QTQLI7A5CNFSM4I3XETNKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOED6PP3I#issuecomment-553449453, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFMQNMES5RGHCM2LFQLXYBDQTQLI7ANCNFSM4I3XETNA .
@maxbambi @cttynul E se facessimo un canale Telegram dove pubblicate i vari aggiornamenti? Secondo me potrebbe interessare a molti
@tomax80 L'obiettivo finale è il repo di kodi (se aggiustassero quella storia della libreria common cache!) Se non ci si riesce, si potrebbe cercare uno spazio pubblico e fare un repo nostro con i materiali d'interesse per l'utenza italiana.
@maxbambi sarebbe veramente comodo 👍
Ciao @fabpolli :-)
Anche io sono autore di due plugin kodi, da un lato avere un unico repo italiano è interessante, dall'altro però già gli utenti sono pochi, se non si entra nel repo ufficiale non si raggiungono mai tutti gli interessati. Io ho il plugin La7-La7d su repo, e il plugin RepubblicaItaliana solo su github, ma solo perché sono subentrato a quello La7 e già era su repo kodi. Per quelli vecchi già presenti permettono di rimanere, per il momento, su python2. Comunque da phyton 2 a 3 saranno poche stupidaggini da aggiornare
@Testato, nel mio fork c'è già un branch per la compatibilità a python 3... come ho scritto in https://github.com/maxbambi/plugin.video.raitv/issues/9 sono in attesa che venga inserito nel repo ufficiale l'aggiornamento di common.plugin.cache alla 2.6 (https://github.com/xbmc/repo-scripts/pull/1208) perché senza quella libreria aggiornata il nostro plugin non funziona in python3.... Ho fatto una prova installando manualmente da zip la libreria nuova e sembra funzionare tutto...
Ciao @fabpolli :-)
Ciao @Testato interessi comuni vedo :-) Infatti @maxbambi ha già provato a inviare la richiesta per entrare nel repo ufficiale e fu respinta, speriamo che accettino la richiesta fatta e la nuova richiesta per il plugin della rai, fuori dal repo ufficiale pochi raggiungono i vari plugin.
Mi sono accordo l'altra sera che manca una funzionalità abbastanza importante (secondo me) una visualizzazione dell'On-demand più pratica. Mi spiego meglio, c'è il cerca ok ma se non conosco il titolo e voglio vedere l'offerta devo navigare in tutte le cartelle messe in ordine alfabetico, @maxbambi @cttynul che ne pensate della possibilità di aggiungere dentro ad ogni classificazione prima di [0 - 9] un [Tutti] come nel menù precedente? Se lo ritenete percorribile come idea, provo a implementarla.
@fabpolli, se provi a guardare nel mio repo, nel branch "comp-python3" c'è un tentativo di migliorare il menu: ho aggiunto una voce 'Home page', che ricrea il menu delle proposte della homepage di raiplay e quindi fornisce accesso più veloce ai contenuti più importanti. Lavorandoci si può anche provare ad implementare l'autenticazione dell'utente
Da ieri appare un errore nel tentativo di accedere ai programmi di raireplay con segnalazione d'errore di indice non valido nell'array. Dal log non è chiaro se è un problema di parametri di chiamata al servizio o se questo sta rispondendo in modo non conforme a quanto si aspetta lo script