Die Frage die sich mir grade stellte, wie steht es eigentlich mit der Unterstützung in Kodi für das Adobe HDS Protokoll aus?
Blizzard verwendet das gerne für ihre Streams von der Blizzcon und anderen Events.
Kodi Plugin für Blizzard Events?
-
balabana -
14. August 2017 um 12:02 -
Unerledigt
-
-
Ist ja anscheinend nichts anderes als adaptives Streaming, wie man es auch von Amazon und Netflix kennt.
-> https://www.encoding.com/http-dynamic-streaming-hds/
Daher zumindest denkbar.
Bei Adobe ist es nur meist noch mal extra-schwierig durch Verschlüsselungen.
Setzen die echt noch auf Flash? -
-
Zumindest letzten Herbst ja.
OOyala hat den Player und die Infrastruktur geliefert und man hat den HDSLinkDetector gebraucht und dann in PHP https://github.com/K-S-V/Scripts genutzt um die Teilfragmente zusammenzusetzen. -
Wär AdobeHDS etwas was man tiefergehend einbauen müsste&sollte etwa in inputstream.adaptive @peak3d ?
-
-
Weiterhin notwendig für dieses Jahr bleibt Flash, also weiterhin AdobeHDS im Einsatz vermutlich
-
Wär das was für InputStream.Adaptive als weiterer möglicher Quelltyp @peak3d ?
-
-
Sieht so aus als gäbe es auch HLS für Leute ohne Flashplayer.
Man könnte es also auch so machen, hat jemand Interesse? -
Wär das was für InputStream.Adaptive als weiterer möglicher Quelltyp @peak3d ?
definitiv denkbar, hat jemand Beispiele zur Hand, anhand deren ich mich orientieren kann?
-
-
Die archivierten Radiosendungen der BBC waren früher HDS, müsst mal schauen ob man da noch rankommt mit nem "alten Browser".
Die aktuellen Blizzcon Sachen mit nem aktuellen Browser sind HLS mit Akamai Token. Da dürfte das gleiche gelten.
Ich fälsch mal den Useragent und probiers aus.
-
Die freien streams von der Startseite sind alles normale HLS streams, ohne Verschlüsselung und sollten (auch mit inputstream.adaptive) in kodi abspielbar sein.
Ich kenne HDS nicht, aber wenn es ein sterbender Schwan ist, investiere ich nicht wirklich gerne Zeit darauf. -
-
JavaScript
Alles anzeigenJS_callbacks0({ "media": [{ "service": "stream-nonuk-audio_streaming_concrete_combined", "encoding": "aac", "connection": [{ "protocol": "http", "href": "http://aod-dash-ww-live.akamaized.net/usp/auth/vod/piff_abr_full_audio/694fc6-b09bhx7x/vf_b09bhx7x_356a72bd-529b-4e39-a5e1-d60b9c59f5b2.ism/pc_hd_abr_v2_nonuk_dash_master.mpd?__gda__=1509764365_e153912992c5a6458dd107c166921633", "authExpires": "2017-11-04T06:45:13+00:00", "transferFormat": "dash", "dpw": "50", "authExpiresOffset": 35148, "supplier": "af_akamai_nonuk_dash", "priority": "1" }, { "protocol": "http", "transferFormat": "hds", "href": "http://aod-hds-ww-live.akamaized.net/usp/auth/vod/piff_abr_full_audio/694fc6-b09bhx7x/vf_b09bhx7x_356a72bd-529b-4e39-a5e1-d60b9c59f5b2.ism/pc_hd_abr_v2_nonuk_hds_master.f4m?__gda__=1509764365_4b4acb709011faf7d96d0bd6fbafba02", "authExpires": "2017-11-04T06:07:18+00:00", "dpw": "50", "authExpiresOffset": 32873, "supplier": "af_akamai_nonuk_hds", "priority": "1" }, { "authExpiresOffset": 18473, "supplier": "af_limelight_nonuk_dash", "priority": "2", "authExpires": "2017-11-04T02:07:18+00:00", "transferFormat": "dash", "href": "http://aod-dash-ww-live.bbcfmt.hs.llnwd.net/usp/auth/vod/piff_abr_full_audio/694fc6-b09bhx7x/vf_b09bhx7x_356a72bd-529b-4e39-a5e1-d60b9c59f5b2.ism/pc_hd_abr_v2_nonuk_dash_master.mpd?s=1509721165&e=1509764365&h=aa3629c3f47f9dc4be8d8a01fc32dede", "protocol": "http" }, { "authExpires": "2017-11-04T01:47:51+00:00", "transferFormat": "hds", "href": "http://aod-hds-ww-live.bbcfmt.hs.llnwd.net/usp/auth/vod/piff_abr_full_audio/694fc6-b09bhx7x/vf_b09bhx7x_356a72bd-529b-4e39-a5e1-d60b9c59f5b2.ism/pc_hd_abr_v2_nonuk_hds_master.f4m?s=1509721165&e=1509764365&h=2c1fd84dfa901574ce6b5120b2671be4", "protocol": "http", "authExpiresOffset": 17306, "supplier": "af_limelight_nonuk_hds", "priority": "2" }, { "supplier": "af_akamai_nonuk_dash_https", "authExpiresOffset": 33370, "priority": "10", "dpw": "50", "transferFormat": "dash", "authExpires": "2017-11-04T06:15:35+00:00", "href": "https://aod-dash-ww-live.akamaized.net/usp/auth/vod/piff_abr_full_audio/694fc6-b09bhx7x/vf_b09bhx7x_356a72bd-529b-4e39-a5e1-d60b9c59f5b2.ism/pc_hd_abr_v2_nonuk_dash_master.mpd?__gda__=1509764365_e153912992c5a6458dd107c166921633", "protocol": "https" }, { "transferFormat": "hds", "authExpires": "2017-11-04T08:34:46+00:00", "href": "https://aod-hds-ww-live.akamaized.net/usp/auth/vod/piff_abr_full_audio/694fc6-b09bhx7x/vf_b09bhx7x_356a72bd-529b-4e39-a5e1-d60b9c59f5b2.ism/pc_hd_abr_v2_nonuk_hds_master.f4m?__gda__=1509764365_4b4acb709011faf7d96d0bd6fbafba02", "protocol": "https", "authExpiresOffset": 41721, "supplier": "af_akamai_nonuk_hds_https", "priority": "10", "dpw": "50" }, { "protocol": "https", "authExpires": "2017-11-04T01:46:53+00:00", "transferFormat": "dash", "href": "https://aod-dash-ww-live.bbcfmt.hs.llnwd.net/usp/auth/vod/piff_abr_full_audio/694fc6-b09bhx7x/vf_b09bhx7x_356a72bd-529b-4e39-a5e1-d60b9c59f5b2.ism/pc_hd_abr_v2_nonuk_dash_master.mpd?s=1509721165&e=1509764365&h=5889a39b8bd0aa8bc04436a86886403f", "authExpiresOffset": 17248, "supplier": "af_limelight_nonuk_dash_https", "priority": "20" }, { "authExpiresOffset": 17602, "supplier": "af_limelight_nonuk_hds_https", "priority": "20", "protocol": "https", "authExpires": "2017-11-04T01:52:47+00:00", "transferFormat": "hds", "href": "https://aod-hds-ww-live.bbcfmt.hs.llnwd.net/usp/auth/vod/piff_abr_full_audio/694fc6-b09bhx7x/vf_b09bhx7x_356a72bd-529b-4e39-a5e1-d60b9c59f5b2.ism/pc_hd_abr_v2_nonuk_hds_master.f4m?s=1509721165&e=1509764365&h=be472b48d188344c5bb0174ca6083ed2" }], "expires": "2017-11-28T15:00:00Z", "kind": "audio", "bitrate": "320", "type": "audio/mp4" }, { "expires": "2017-11-28T15:00:00Z", "connection": [{ "authString": "auth=daEbKatahbqbcahdWb9ctaCbMamaJdAdKdN-bz_nIT-bWG-HnuDHoCoHBuHvxD&aifp=v001&slist=/prod_af_mp4_heaacv1_48/iplayerstream/l2o/b09bhx7x_6c345e20-5be4-4f12-b078-22a657beee29.mp4", "dpw": "50", "server": "cp107663.edgefcs.net", "priority": "10", "identifier": "mp4:/prod_af_mp4_heaacv1_48/iplayerstream/l2o/b09bhx7x_6c345e20-5be4-4f12-b078-22a657beee29.mp4", "application": "ondemand", "authExpiresOffset": 6331, "supplier": "akamai", "protocol": "rtmp", "authExpires": "2017-11-03T22:44:56+00:00" }, { "supplier": "limelight", "application": "a5999/e1", "identifier": "mp4:/prod_af_mp4_heaacv1_48/iplayerstream/l2o/b09bhx7x_6c345e20-5be4-4f12-b078-22a657beee29.mp4", "authExpiresOffset": 5852, "priority": "20", "server": "bbcodspdns.fcod.llnwd.net", "authString": "as=adobe-hmac-sha256&av=1&te=connect&mp=/prod_af_mp4_heaacv1_48/iplayerstream/l2o/b09bhx7x_6c345e20-5be4-4f12-b078-22a657beee29.mp4&et=1509749965&fmta-token=ac4b15d019ff6509d2482aaadfd6f04b7f794be483acdd8162ee0e62cb63e69e", "authExpires": "2017-11-03T22:36:57+00:00", "protocol": "rtmp" }], "encoding": "aac", "service": "stream-nonuk-audio_streaming_aac_vlow", "kind": "audio", "type": "audio/mp4", "bitrate": "48", "media_file_size": "44972469" }], "disclaimer": "This code and data form part of the BBC iPlayer content protection system. Tampering with, removal of, misuse of, or unauthorised use of this code or data constitutes circumvention of the BBC's content protection measures and may result in legal action. BBC (C) 2017." });
Die F4M Dateien sehen dann so aus:
XML
Alles anzeigen<?xml version="1.0" encoding="utf-8"?> <manifest xmlns="http://ns.adobe.com/f4m/4.0"> <id>vf_b09bhx7x_356a72bd-529b-4e39-a5e1-d60b9c59f5b2</id> <startTime>2006-07-24T07:15:00+01:00</startTime> <duration>7379.97</duration> <mimeType>video/mp4</mimeType> <streamType>recorded</streamType> <deliveryType>streaming</deliveryType> <!-- -audio_eng_1=48000, -audio_eng_1=96000 --> <bootstrapInfo id="boot1" profile="named">AAAAi2Fic3QAAAAAAAAEggAAAAPoAAAAAABwnAAAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAABIIBAAAARmFmcnQAAAAAAAAD6AAAAAADAAAAAQAAAAAAAAAAAAAZAAAABIIAAAAAAHCZAAAAAwAAAAAAAAAAAAAAAAAAAAAAAA==</bootstrapInfo> <media url="vf_b09bhx7x_356a72bd-529b-4e39-a5e1-d60b9c59f5b2-audio_eng_1=48000-" bitrate="48" bootstrapInfoId="boot1" /> <media url="vf_b09bhx7x_356a72bd-529b-4e39-a5e1-d60b9c59f5b2-audio_eng_1=96000-" bitrate="96" bootstrapInfoId="boot1" /> </manifest>
Der Akamai Token is halt ätzend insofern war damals die HDS Variante die angenehmere.
Die Blizzard M3U8s sehen so aus:
XML
Alles anzeigen#EXTM3U #EXT-X-INDEPENDENT-SEGMENTS #EXT-X-MEDIA:TYPE=CLOSED-CAPTIONS,GROUP-ID="cc",NAME="Closed Captions",DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="eng",INSTREAM-ID="CC1" #EXT-X-STREAM-INF:BANDWIDTH=9475651,AVERAGE-BANDWIDTH=7835363,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1280x720,FRAME-RATE=60,CLOSED-CAPTIONS="cc" https://blizzcon17p8-i.akamaihd.net/hls/live/523700/legendpgm/Akam_Legendary_PGM_VIDEO_1_7628000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39 #EXT-X-STREAM-INF:BANDWIDTH=9475651,AVERAGE-BANDWIDTH=7835363,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1280x720,FRAME-RATE=60,CLOSED-CAPTIONS="cc" https://blizzcon17p8-i.akamaihd.net/hls/live/523700-b/legendpgm/Akam_Legendary_PGM_VIDEO_1_7628000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39 #EXT-X-STREAM-INF:BANDWIDTH=7676764,AVERAGE-BANDWIDTH=6302663,CODECS="avc1.640020,mp4a.40.2",RESOLUTION=1280x720,FRAME-RATE=60,CLOSED-CAPTIONS="cc" https://blizzcon17p8-i.akamaihd.net/hls/live/523700/legendpgm/Akam_Legendary_PGM_VIDEO_2_6128000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39 #EXT-X-STREAM-INF:BANDWIDTH=7676764,AVERAGE-BANDWIDTH=6302663,CODECS="avc1.640020,mp4a.40.2",RESOLUTION=1280x720,FRAME-RATE=60,CLOSED-CAPTIONS="cc" https://blizzcon17p8-i.akamaihd.net/hls/live/523700-b/legendpgm/Akam_Legendary_PGM_VIDEO_2_6128000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39 #EXT-X-STREAM-INF:BANDWIDTH=5250551,AVERAGE-BANDWIDTH=4259063,CODECS="avc1.640020,mp4a.40.2",RESOLUTION=1280x720,FRAME-RATE=60,CLOSED-CAPTIONS="cc" https://blizzcon17p8-i.akamaihd.net/hls/live/523700/legendpgm/Akam_Legendary_PGM_VIDEO_3_4128000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39 #EXT-X-STREAM-INF:BANDWIDTH=5250551,AVERAGE-BANDWIDTH=4259063,CODECS="avc1.640020,mp4a.40.2",RESOLUTION=1280x720,FRAME-RATE=60,CLOSED-CAPTIONS="cc" https://blizzcon17p8-i.akamaihd.net/hls/live/523700-b/legendpgm/Akam_Legendary_PGM_VIDEO_3_4128000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39 #EXT-X-STREAM-INF:BANDWIDTH=3152011,AVERAGE-BANDWIDTH=2522003,CODECS="avc1.4D401F,mp4a.40.2",RESOLUTION=960x540,FRAME-RATE=30,CLOSED-CAPTIONS="cc" https://blizzcon17p8-i.akamaihd.net/hls/live/523700/legendpgm/Akam_Legendary_PGM_VIDEO_4_2428000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39 #EXT-X-STREAM-INF:BANDWIDTH=3152011,AVERAGE-BANDWIDTH=2522003,CODECS="avc1.4D401F,mp4a.40.2",RESOLUTION=960x540,FRAME-RATE=30,CLOSED-CAPTIONS="cc" https://blizzcon17p8-i.akamaihd.net/hls/live/523700-b/legendpgm/Akam_Legendary_PGM_VIDEO_4_2428000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39 #EXT-X-STREAM-INF:BANDWIDTH=2082816,AVERAGE-BANDWIDTH=1653473,CODECS="avc1.4D401E,mp4a.40.2",RESOLUTION=704x396,FRAME-RATE=30,CLOSED-CAPTIONS="cc" https://blizzcon17p8-i.akamaihd.net/hls/live/523700/legendpgm/Akam_Legendary_PGM_VIDEO_5_1578000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39 #EXT-X-STREAM-INF:BANDWIDTH=2082816,AVERAGE-BANDWIDTH=1653473,CODECS="avc1.4D401E,mp4a.40.2",RESOLUTION=704x396,FRAME-RATE=30,CLOSED-CAPTIONS="cc" https://blizzcon17p8-i.akamaihd.net/hls/live/523700-b/legendpgm/Akam_Legendary_PGM_VIDEO_5_1578000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39 #EXT-X-STREAM-INF:BANDWIDTH=1250168,AVERAGE-BANDWIDTH=989303,CODECS="avc1.4D4015,mp4a.40.2",RESOLUTION=512x288,FRAME-RATE=30,CLOSED-CAPTIONS="cc" https://blizzcon17p8-i.akamaihd.net/hls/live/523700/legendpgm/Akam_Legendary_PGM_VIDEO_6_928000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39 #EXT-X-STREAM-INF:BANDWIDTH=1250168,AVERAGE-BANDWIDTH=989303,CODECS="avc1.4D4015,mp4a.40.2",RESOLUTION=512x288,FRAME-RATE=30,CLOSED-CAPTIONS="cc" https://blizzcon17p8-i.akamaihd.net/hls/live/523700-b/legendpgm/Akam_Legendary_PGM_VIDEO_6_928000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39 #EXT-X-STREAM-INF:BANDWIDTH=792984,AVERAGE-BANDWIDTH=631673,CODECS="avc1.4D400D,mp4a.40.2",RESOLUTION=384x216,FRAME-RATE=30,CLOSED-CAPTIONS="cc" https://blizzcon17p8-i.akamaihd.net/hls/live/523700/legendpgm/Akam_Legendary_PGM_VIDEO_7_578000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39 #EXT-X-STREAM-INF:BANDWIDTH=792984,AVERAGE-BANDWIDTH=631673,CODECS="avc1.4D400D,mp4a.40.2",RESOLUTION=384x216,FRAME-RATE=30,CLOSED-CAPTIONS="cc" https://blizzcon17p8-i.akamaihd.net/hls/live/523700-b/legendpgm/Akam_Legendary_PGM_VIDEO_7_578000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39 #EXT-X-STREAM-INF:BANDWIDTH=186103,AVERAGE-BANDWIDTH=171863,CODECS="mp4a.40.2" https://blizzcon17p8-i.akamaihd.net/hls/live/523700/legendpgm/Akam_Legendary_PGM_AUDIO_0_128000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39 #EXT-X-STREAM-INF:BANDWIDTH=186103,AVERAGE-BANDWIDTH=171863,CODECS="mp4a.40.2" https://blizzcon17p8-i.akamaihd.net/hls/live/523700-b/legendpgm/Akam_Legendary_PGM_AUDIO_0_128000.m3u8?hdntl=exp=1509825430~acl=/hls/live/523700*~data=hdntl~hmac=70780fdcb806c2391f10ff0b4265340e53e2835ff6ed075725c7eb88f70a3f39
Die URLs verlieren ihre Gültigkeit sobald man sie 1mal abgerufen hat. -
Nimm doch einfach die dash version aus dem JS:
"http://aod-dash-ww-live.akamaized.net/usp/auth/vod/p…dd107c166921633"
Da kommt ein shönes DASH manifest zurück, welches so direkt abspielbar sein sollte.
-
-
BBC geht problemlos ich weiß, mir geht es wie der Titel des Themas sagt um eine gemütliche Runde des Activision Events im Wohnzimmer. Ich scheitere nur an deren Streams. BBC war nur ein leichter zugängliches Beispiel für einen Teil des Blizz Problems.
-
Um ehrlich zu sein verstehe ich hier nur Bahnhof
- Was ist der Akamai Token?
- Was ist die damalige HLS Variante?
- Wie bist du auf die m3u8 playlist gekommen? Ist die Bestandteil der HDS Diskusion?Ich bin kein BlizzCon User, daher weiss ich Null was vorliegt, bzw. was hier gewünscht ist.
Das Einzige, was sich mir hier gerade erschliesst ist: Du bist irgendwie in der Lage, an die f4m Datei zu kommen, ja?
Wie es damit dann weitergeht, habe ich noch nicht erkennen können, sorry. -
-
Wir haben ein Event, die von Blizzard veranstaltete Blizzcon dieses Wochenende in Anaheim.
Dazu gibt es Live-Streaming der einzelnen Veranstaltungen/Panels.
Es gibt sie auch im Nachgang zum nachträglichen Anschauen aus der Konserve für ne Weile.Beides würde ich gerne im Kodi anschauen.
Blizzard nutzte früher für die Übertragung Adobe HDS so dass man die Daten sobald man die F4M Datei aus dem Netzwerktraffic gekratzt hatte mit den DevTools, die einzelnen Fragmente des Videos herunterladen konnte und sie zu einem Video zusammensetzen konnte.
Das war der Ursprung dieses Themas.
Jetzt bevorzugen sie HLS. Diese m3u8 Dateien kann man zwar ebenfalls im Browser auslesen allerdings sind sie wertlos.
Sobald der Browser sie abspielt werden sie ungültig da nach dem ersten Fragment die Authentisierungsmethode geändert wird auf Cookies.Da es auch mit FF 10 als Useragent und deaktivierten MediaSources keine F4M Dateien mehr gibt für die Blizzcon wie ich eben feststellte ( ), müsste man den Beitrag umbenennen in
"Wer baut ein Blizzcon Plugin zum Anschauen und Aufzeichnen?" -
Ok, verstanden, also Cookie Auth haben wir auch schon mal umgesetzt, ich glaube es war pvr.zattoo.
Wenn derjenige, der sich mit dem addon dann beschäftigt, diesbezüglich Fragen hat, einfach melden..... -
-
Jepp Cookies waren PVR. Zattoo. Die haben auch HLS.
@rbuehlma , hast du Interesse das hier zu bauen? -
https://github.com/xbmc-catchuptv-au/plugin.video.abc_iview & https://github.com/peak3d/inputstream.adaptive/issues/72 zeigen wie man mit Akamai und Keksen umgeht.
Jemand interessiert?
-
-
Mal ein paar Details die ich als Laie aus der Seite herausgezogen hab.
Cookies für blizzcon.com : User & Session
Schedule der einzelnen Sessions:
https://blizzcon.com/en-us/schedule#thu-oct-26Beispiel für einen Kalender-Eintrag
HTML
Alles anzeigen<div class="timeline-cell"> <article data-id='1267' data-franchise="heroes" data-esports="data-esports" data-hours='1' data-left-offset='0.25' data-stage="2017.ow_heroes" class="event" data-toggle="modal" data-target="#event-modal-1267"> <header> <div class="event-details"> <div class="event-heading"> <h1>HGC - Group A - Match 1</h1> </div> <div class="event-timespan blizzcon-time"><span class="svg-icon clock"><svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><use xlink:href="#clock"></use></svg></span><time datetime="2017-10-26T11:15:00-07:00" itemprop="startTime">11:15AM</time> - <time datetime="2017-10-26T12:15:00-07:00" itemprop="endTime">12:15PM</time></div> <div class="event-stage visible-xs"><span class="svg-icon map-marker"><svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><use xlink:href="#map-marker"></use></svg></span><span>Opening Week</span></div> </div> <div class="event-icons"><a href="" data-id='1267' data-name="HGC - Group A - Match 1" class="event-favorite"><span class="svg-icon star-empty"><svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><use xlink:href="#star-empty"></use></svg></span><span class="svg-icon star-filled hidden"><svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><use xlink:href="#star-filled"></use></svg></span></a><a href="https://blizzcon.com/en-us/watch?v=516b9cd-00d3ab898cf" data-id='1267' data-start-time="2017-10-26T11:15:00-07:00" data-end-time="2017-10-26T12:15:00-07:00" data-has-vod="data-has-vod" data-vod-name="HGC - Group A - Match 1" class="event-play"><span class="svg-icon play"><svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><use xlink:href="#play"></use></svg></span></a></div> </header> </article> </div>
Hier wird direkt auf das jeweilige Video verlinkt: https://blizzcon.com/en-us/watch?v=516b9cd-00d3ab898cf
Play läd den JWPlayer und folgende Playlists:https://blizzcon2017vod.akamaized.net/p/516b9cd-00d3…0d06de1e4e427bc
&
https://blizzcon2017vod.akamaized.net/p/516b9cd-00d3…prog_index.m3u8
st(art) and exp(ire) sind Zeiten im Unix Format
2018-02-04T16:05:19+00:00 in ISO 8601
2018-02-04T16:05:49+00:00 in ISO 8601hdnts und hmac sind Verweise auf das Akamai System zum Zugriffschutz.
Kritisch ebenso das Cookie von https://blizzcon2017vod.akamaized.net , genannt hdntl mit dem WertZitatexp=1517847375~acl=/*~data=hdntl~hmac=7f92f701f229a47a8b9f7e3b76c6e3300c3b9b674c6c5fae1037300ece1aa14c
ohne das der Player mit Zugriffsverletzung abbricht und einen Fehler anzeigt.
Die Übersicht aller Videos bekommt man unter https://blizzcon.com/(en-us|de-de|*)/watch
Detaillierter jedoch geht es über JSON /HTML Listen :https://blizzcon.com/en-us/watch/vi…00000000&skip=0
Das gibt zurück
JavaScript{ "categories": ["Voice and Sound", "Virtual Ticket", "Virtual Ticket", "Inside the Games", "From the Floor", "Esports", "Community", "BlizzCraft"], "totalCount": 265, "currentCount": 16, "html": "XXX" }
Im HTML Teil sind die einzelnen Videos sortiert nach den einzelnen Titeln mit Beschreibung und Vorschau-Bildern
HTML
Alles anzeigen<div data-franchise=\ "Hearthstone\" class=\ "VideoGridItem mdc-layout-grid__cell bz-ip__hearthstone\"> <a class=\ "Watch-video\" href=\ "watch?v=516b9cd-00d470ec609\" data-video-id=\ "039e87dc5eb04f39\" data-video-guid=\ "516b9cd-00d470ec609\" data-video-mediaid=\ "nEDUrM42\" data-video-title=\ "Tavern vs. Tavern Finals\" data-video-description=\ "Hearthstone\" data-video-url=\ "https://blizzcon2017vod.akamaized.net/p/516b9cd-00d470ec609/039e87dc5eb04f39_enUS-14452728/039e87dc5eb04f39_enUS-14452728.m3u8\" data-video-lang=\ "en-us\" data-video-poster=\ "https://blizzcon2017vod.akamaized.net/p/516b9cd-00d470ec609/039e87dc5eb04f39.jpg\" data-video-live=\ "false\" data-video-a=\ "true\" data-video-type=\ "VOD\" data-video-vt=\ "false\" data-franchise=\ "Hearthstone\" data-section=\ "thumbnails\"> <div class=\ "mdc-card__media VideoGridItem-thumbnail\"> <div data-overlay-text=\ "Watching\" class=\ "Watch-thumbnail\"><img src=\ "https://blizzcon2017vod.akamaized.net/p/516b9cd-00d470ec609/039e87dc5eb04f39_enUS-14452695.jpg\" class=\ "Watch-thumbnailTag\"/></div> <div class=\ "vod__length\">02:04:54</div> </div> <div class=\ "VideoGridItem-info mdc-card__primary\"> <div class=\ "VideoGridItem-title Watch-primary mdc-card__title mdc-card__title--large\">Tavern vs. Tavern Finals</div> <div class=\ "VideoGridItem-subtitle Watch-secondary mdc-card__subtitle\">Hearthstone - Esports</div> </div> </a> </div>
Neben den Unter-Kategorien die im JSON angegeben sind, kann man noch nach den Hauptkategorien filtern.
Diese sind "Blizzard", "Overwatch", "World of Warcraft", "Heroes of the Storm", "Diablo 3" , "Hearthstone" und "Starcraft 2"Spoiler anzeigen
Haupt-Kategorie: Blizzardhttps://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0Haupt-Kategorie: Overwatch
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0Haupt-Kategorie: World of Warcraft
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0Haupt-Kategorie: Heroes of the Storm
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0 (empty)
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0Haupt-Kategorie: Diablo 3
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0 (empty)
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0 (empty)
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0 (empty)
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0Haupt-Kategorie: Hearthstone
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0 (empty)
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0Haupt-Kategorie: Starcraft:
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0 (empty)
https://blizzcon.com/en-us/watch/vi…limit=16&skip=0Ob man das anders als im DMAX Addon dynamisch statt mit festkodierten URLS auf den Kategorien machen kann müsste man sich überlegen,
macht halt mehr Arbeit.
Auch vermutlich leere Unterkategorien vorher dynamisch aussortieren wär vermutlich sinnvoll.den
Zitat&limit=x
Parameter kann man natürlich beliebig erhöhen bis er gleich dem
ZitattotalCount
aus der JSON Antwort ist.
-
Anfang November geht es wieder los.
-
-
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!