Opvolger / plugin.video.uzg

Uitzendinggemist NPO NED1, NED2, NED3
GNU General Public License v3.0
56 stars 14 forks source link

No video playback on UZG anymore #20

Closed Xorky closed 5 years ago

Xorky commented 5 years ago

It seems no videos will been streamed. I use: LibreELEC, Krypton 17.6 and plugin.video.uzg-3.1.0

MatrixView commented 5 years ago

NPO heeft z'n API / site aangepast... waarschijnlijk alleen nog via browser / mobile app te zien. Alles lijkt achter DRM te hangen... :-(

RonaldNN commented 5 years ago

Ik heb even zitten kijken, maar volgens mij valt dat wel mee.... tenminste. Ik kan deze stream gewoon afspelen met iets als VLC: https://nl-ams-p1-am5.cdn.streamgate.nl/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1NTE0NDMyODIsInVyaSI6Ilwvdm9kXC9ucG9cL3VzcFwvbnBvXC9kYXNoX3VuZW5jcnlwdGVkXC9WUFdPTl8xMjk1MzkwXC9WUFdPTl8xMjk1MzkwX3YxNTQ5MzY0ODM2LmlzbSIsImNsaWVudF9pcCI6IjIxMy4xMjYuMTAzLjIxMiJ9.r4klSyHOrjcYyJZQXIRk6OhfUT1uG6MXo--z6hiMMoo/vod/npo/usp/npo/dash_unencrypted/VPWON_1295390/VPWON_1295390_v1549364836.ism/stream.mpd

MatrixView commented 5 years ago

Heb je die eerst uit de browser (F12) gevist? Maar kun je 'm ook in z'n geheel downloaden naar een file? Uiteraard werkt de bovenstaande lange link niet voor mij... (hij is authorized voor jou)...

Gebuik jij de nieuwe API?

RonaldNN commented 5 years ago

Gewoon met F12 uit de browser gehaald ja. Een MDP bestand is gewoon een XML bestand met de streamdefinities. Ik kan hem op meerdere PC's openen via VLC (versie 3.0.6) Met VLC kan je hem ook gewoon als een .ts bestand op schijf opslaan en opnieuw afspelen. VLC ondersteund geen DRM beveiligde streams. Naar mijn idee zal DRM niet zo zeer het probleem zijn.

MatrixView commented 5 years ago

Ok, browser kan ik me nog indenken... die doet een hoop javascript. Maar, werkt alles met jouw plugin/script nog? Dus zonder browser... Heb je verschillende links geprobeerd?

MatrixView commented 5 years ago

O sorry, ik dacht dat je de author was van de plugin... Maar dat is "Opvolger".

Opvolger commented 5 years ago

Maar goed, er lopen hier meerdere dingen door elkaar heen.

  1. ja, de addon welke bij kodi in de repo staat is gemeld als "broken". Voorwaarden zijn veranderd, dus deze mag ik nu niet meer aanmelden.
  2. De nieuwe versie van de addon welke je van tab "releases" kan afhalen, doet het wel weer MAAR
  3. NPO codeert nu alles met Widevine DRM, dit werkt niet op 17.x alleen op 18.x en hoger. (mets je een services-addon (https://mirrors.kodi.tv/addons/leia/script.module.inputstreamhelper/) hebt geïnstalleerd welke gewoon in de kodi-repo staat).

kortom, je kan alleen met kodi 18.x met de nieuwe addon welke dus hier te vinden is: https://github.com/Opvolger/plugin.video.uzg/releases alles zien.

Ik zal nog een nieuwe versie uitbrengen welke deze addon automatisch installeerd met uzg-addon

Pic00 commented 5 years ago

Beste Opvolger,

Op het moment is bij mij wel een probleem met het afspelen. Draait op Kodi 18 en UZG 3.1.0 Het volgende is in de log file opgeslagen: 18:45:55.778T:139888427652864ERROR:EXCEPTIONThrown(PythonToCppException):-->Pythoncallback/scriptreturnedthefollowingerror<-- -NOTE:IGNORINGTHISCANLEADTOMEMORYLEAKS! ErrorType:<type'exceptions.ValueError'> ErrorContents:NoJSONobjectcouldbedecoded Traceback(mostrecentcalllast): File"/storage/.kodi/addons/plugin.video.uzg/addon.py",line164,in<module> router(sys.argv[2][1:]) File"/storage/.kodi/addons/plugin.video.uzg/addon.py",line146,inrouter play_video(params['whatson_id']) File"/storage/.kodi/addons/plugin.video.uzg/addon.py",line130,inplay_video play_item=xbmcgui.ListItem(path=uzg.get_play_url(whatson_id)) File"/storage/.kodi/addons/plugin.video.uzg/resources/lib/uzg.py",line138,inget_play_url returnself.npoHelpers.get_play_url(whatson_id) File"/storage/.kodi/addons/plugin.video.uzg/resources/lib/npoapihelpers.py",line36,inget_play_url json_data=json.loads(data) File"/usr/lib/python2.7/json/__init__.py",line339,inloads File"/usr/lib/python2.7/json/decoder.py",line364,indecode File"/usr/lib/python2.7/json/decoder.py",line382,inraw_decode ValueError:NoJSONobjectcouldbedecoded -->EndofPythonscripterrorreport<-- 18:45:55.816T:139889803177344ERROR:PlaylistPlayer:skippingunplayableitem:0,path[plugin://plugin.video.uzg/?action=play&whatson_id=VPWON_1267141]

gvlierop commented 5 years ago

Hallo Beste Opvolger, Ik heb Kodi geupdated naar 18.1 en tevens de https://mirrors.kodi.tv/addons/leia/script.module.inputstreamhelper/script.module.inputstreamhelper-0.3.3.zip geinstalleerd. Echter geen resultaat :( Ben benieuwd wat ik verkeerd doe. Het zip bestand heb ik zoals gebruikelijk geinstalleerd middels 'Install from zip file"- methode. Ook via de addon Video Test streams' gecontroleerd of ik IA Dash Widevine kan afspelen en dat lijkt inderdaad het geval.

djvl commented 5 years ago

I'm experiencing the same as @Pic00 ..

Opvolger commented 5 years ago

ik zie het nu ook, hij is "weer¨ stuk. ik zal hem weer proberen te maken, maar dat word niet vandaag.

Xorky commented 5 years ago

Na een update naar LibreELEC (9.0.1), Leia 18.1 op een RPI2.arm architectuur. Mijn log: ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--

Xorky commented 5 years ago

Okee, succes bij het 'repareren'! MvG en BvD ;-) George

johan-adriaans commented 5 years ago

Hoi! Ik heb er net even naar gekeken, en er lijkt inderdaad het een en ander veranderd. Dit is de eerste keer dat ik er naar kijk (uberhaupt naar de NPO API..) dus ik ben er niet zeker van, maar als ik naar de json data kijk die ik terug krijg dan lijkt dat niet op de data die python verwacht. Ik wil naar bed dus ik gooi hier even in de groep waar ik nu ben. Ik gebruik bash, curl voor de requests en jq om de json data te formatteren, jq is niet standaard dus die moet je wsl installeren.

Alleereerst een programmalijst van het journaal: curl -s -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:64.0) Gecko/20100101 Firefox/64.0" -H "ApiKey: e45fe473feaf42ad9a215007c6aa5e7e" https://start-api.npo.nl/page/franchise/NOSJournaal | jq Ik vind hier geen whatson_id in, wel een "id" en een "prid" dat ook werkt in de volgende stappen. De output van dit commando zit in de attachment: NOSJournaal.txt

Als ik dan 1 van die id's gebuik (laten we zeggen: POW_04059364) dan kan ik, volgens mij, de mogelijke files ophalen. Omdat ik hier ook een auth token voor nodig heb, heb ik het even in een shell-script gegoten:

#!/usr/bin/env bash

whatson_id="POW_04059364"

token=$(curl -s -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:64.0) Gecko/20100101 Firefox/64.0" -H "ApiKey: e45fe473feaf42ad9a215007c6aa5e7e" http://ida.omroep.nl/app.php/auth | jq -r ".token")

curl -s -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:64.0) Gecko/20100101 Firefox/64.0" "http://ida.omroep.nl/app.php/$whatson_id?adaptive&adaptive=yes&part=1&token=$token" | jq

De output is dan:

{
  "limited": false,
  "site": null,
  "items": [
    [
      {
        "label": "Adaptive",
        "contentType": "odi",
        "url": "https://odis.omroep.nl/video/ida/adaptive/1954d811a0071c1ad7396589197184ee/5c79a7cf/POW_04059364/1?extension=m3u8&type=jsonp&callback=?",
        "format": "hls"
      },
      {
        "label": "Hoog",
        "contentType": "odi",
        "url": "https://odis.omroep.nl/video/ida/h264_std/a7758891879092789651b6883dae4a63/5c79a7cf/POW_04059364/1?type=jsonp&callback=?",
        "format": "mp4"
      },
      {
        "label": "Normaal",
        "contentType": "odi",
        "url": "https://odis.omroep.nl/video/ida/h264_bb/9c8e387a62f7db9c93120b6388d38c78/5c79a7cf/POW_04059364/1?type=jsonp&callback=?",
        "format": "mp4"
      },
      {
        "label": "Laag",
        "contentType": "odi",
        "url": "https://odis.omroep.nl/video/ida/h264_sb/782b166c9b0b641caf05fb380fc153b3/5c79a7cf/POW_04059364/1?type=jsonp&callback=?",
        "format": "mp4"
      }
    ]
  ]
}

Wat er hoopvol uitziet, maar ook wat onzekerheid met zich meebrengt. Wat doet dat 2e vraagteken in de url? Ik neem aan de callback-variabele die gebruikt wordt voor jsonp, maar is dat mss verplicht geworden?

In python gebeurt er dit:

streamdataurl = json_data['items'][0][0]['url']
streamurl = str(streamdataurl.split("?")[0]) + '?extension=m3u8'

wat, zo snel ik even lees, moet resulteren in: https://odis.omroep.nl/video/ida/adaptive/1954d811a0071c1ad7396589197184ee/5c79a7cf/POW_04059364/1?extension=m3u8

Alleen als ik die url aanroep krijg ik een scene uit Office Space of een Rickroll. Haha, well played NPO.. well played :)

... Trusten!

Opvolger commented 5 years ago

Dat had ik ook al, geweldig. maar ik ben niet voor 1 gat te vangen. het koste mij 2 nachten, maar ik heb het nu gedeeltelijk voor elkaar. met wat steekproeven werken nu videos van 2019 t/m half 2017. ze gebruiken alleen nog een codec welke niet werkt op hele oude video's (zonder DRM zelfs) vlc steelt ze wel af.

nog geen release gemaakt, maar commits wel gedaan.

Pic00 commented 5 years ago

Goed bezig zeg!

De link naar Office Space of Rickroll is wel briljant, haha.

En alvast een biertje voor vanavond Opvolger!

saba1970 commented 5 years ago

Echt goed bezig Bas. Fijn dat we weer snel naar Uitzending gemist kunnen kijken.

MatrixView commented 5 years ago

Dank Bas,

Kun je met KODI/jouw plugin ook de videos downloaden? Zover ik kan zien niet, ook niet met je nieuwe commit, die van de widevine module gebruik maakt, dus DRM handling...

Uiteraard gaat het je plugin gebruikers om het kunnen ZIEN van de videos in KODI, maar ik ben op zoek naar een oplossing om de streams te kunnen downloaden in een video file (voor het nageslacht zeg maar... haha) Uiteraard kan dit met screen capture software (daar kun je in principe altijd alles mee capturen, maar ik doe het liever direct vanaf de bron, zoals tot enkele dagen geleden waarbij de progressive files zelfs downloadable waren. Maar ook de adaptive streams via bijv. FFMpeg.

RonaldNN commented 5 years ago

@matrixview ... Probeer het eens met de Commandline cliënt van VLC.

https://wiki.videolan.org/Documentation:Streaming_HowTo/Receive_and_Save_a_Stream/

Opvolger commented 5 years ago

@MatrixView dat is niet de bedoeling van deze addon, zal het ook nooit worden. De NPO heeft alle video's nog van t/m 2009. dus denk dat ze alles van nu ook wel tot in de eeuwigheid zullen bewaren. Data opslag kost niks meer tegenwoordig @RonaldNN dan kan alleen met oude video's zonder DRM.

Hier kan je nieuwe video's weer kijken, alleen "hele" oude niet (2017 en ervoor). Je krijg in de logging dan een url van de video, welke dan wel werkt in VLC. (oude files hebben geen DRM)

https://github.com/Opvolger/plugin.video.uzg/releases/tag/3.2.0

pauldaytona commented 5 years ago

Ja hij doet het hier weer, bedankt Bas.

Xorky commented 5 years ago

Hier doet ie 't ook weer ;-)). Dank je wel... Wel overigens met her en der wat glitches, net als bij live streaming van de NPO (plugin.video.nederland24)

RonaldNN commented 5 years ago

Op mijn RPi (OSMC) ook werkend. Net weer fijn klokhuis kunnen kijken. Mèt ondertiteling, terwijl dat uit staat. Dat wel. 😋

Bas, fijne gozer, dank je wel!!!

Meteen de plugin maar geïnstalleerd met een git clone en een cronjob die elke nacht een git pull doet.

jhaand commented 5 years ago

Hij doet het weer!! Geweldig. Ook op m'n Odroid C2. Ik had even zenuwen toen ie die widevine CDN ging downloaden in een ChromeOS image. Zoveel ruimte heeft dat ding niet. Maar het ging dus goed.

johan-adriaans commented 5 years ago

Yep, hier werkt ook alles weer! Op ubuntu 16.04. Bedankt!!

numblock commented 5 years ago

Ik krijg het nog steeds niet werkend, ook niet met v3.2.0. Ik gebruik OSMC met Kodi 17.6 op RPI 2 en krijg het volgende in de log als ik een nieuwe video probeer af te spelen:

`09:05:24.653 T:1657111296 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--

Is Widevine nu wel of niet vereist voor alle NPO Uitzendinggemist video's?

EDIT: Nevermind, zie het antwoord hier staan: https://github.com/Opvolger/plugin.video.uzg/issues/20#issuecomment-468293100 Thanks voor al het werk, @Opvolger! Wel bizar dat NPO content die met publieksgeld gemaakt is achter DRM hangt!

RonaldNN commented 5 years ago

Met Kodi 17.6 werkt het ook niet. je moet Kodi 18 gebruiken. OSMC is er nog niet met Kodi 18, of je moet een beta pakken zoals ik heb gedaan. Ze zijn er hard mee aan de slag. Tot op heden nog geen problemen ervaren. Dit is wat ik heb gedaan: https://discourse.osmc.tv/t/testing-kodi-18-leia-builds-for-raspberry-pi/20631

basrieter commented 5 years ago

Ik vind OSMC toch echt te traag met updates de laatste tijd. LibreElec is veel sneller met het volgen van Kodi. Zou die aanraden.

RonaldNN commented 5 years ago

Hoe is jouw ervaring met de HDMI ondersteuning van openelec? Ik kan me herinneren dat de signalen van de afstandsbediening van de TV niet door openelec worden opgepikt. Met OSMC heb ik daar geen gedonder mee.

Opvolger commented 5 years ago

De discussie gaat niet meer om de addon, dus ik sluit de handel.