Skip to content

Instantly share code, notes, and snippets.

@jaylinski
Last active April 25, 2024 02:02
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jaylinski/5e6a40b066c4bfcc310e79d9143cf741 to your computer and use it in GitHub Desktop.
Save jaylinski/5e6a40b066c4bfcc310e79d9143cf741 to your computer and use it in GitHub Desktop.
Kodi playlist containing free and public TV streams from DE/AT/CH.
#EXTM3U
# Use https://epggw.a1.net/img/station/darkbg/200x200/ as logo URL.
# Use https://tvthek.orf.at/livestream/_token for new DRM tokens.
# See https://github.com/iptv-org/iptv/blob/master/streams/at.m3u
# TV
#EXTINF:-1 tvg-id="908",ORF 1
#KODIPROP:inputstream=inputstream.adaptive
#KODIPROP:inputstream.adaptive.manifest_type=mpd
#KODIPROP:inputstream.adaptive.license_type=com.widevine.alpha
#KODIPROP:inputstream.adaptive.license_key=https://drm.ors.at/acquire-license/widevine?BrandGuid=13f2e056-53fe-4469-ba6d-999970dbe549&userToken=tfoj7l1aPgDJD57678f3wzyzd3ltjSuHB38DUwVK9bFyrTylyDJRwmKs7RP7tDlJ%2BaQm%2FY1yrLxBdRTE49CRk1OfPC%2FK55hzBuRMa6yAGHNpVKaFd2O%2Ffu10O0HWi%2FC3lvmcIFp0dr6VaMPscip%2FVFQgBreOc%2FEXHojsNoV5g%2BUy2wjJinC%2BAXonZ%2B%2FkWIWBnSFVTcM8M8buiT%2B8vCH5FxSbc%2FBHIDFnadMVE4AxmEAZcTut6DvyNss%2F4DUPLCcH|Content-Type=application/octet-stream|R{SSM}|
https://orf1.mdn.ors.at/orf/orf1/drmqxa/manifest.mpd
#EXTINF:-1 tvg-id="638",ORF 2
#KODIPROP:inputstream=inputstream.adaptive
#KODIPROP:inputstream.adaptive.manifest_type=mpd
#KODIPROP:inputstream.adaptive.license_type=com.widevine.alpha
#KODIPROP:inputstream.adaptive.license_key=https://drm.ors.at/acquire-license/widevine?BrandGuid=13f2e056-53fe-4469-ba6d-999970dbe549&userToken=tfoj7l1aPgDJD57678f3wzyzd3ltjSuHB38DUwVK9bFyrTylyDJRwmKs7RP7tDlJ%2BaQm%2FY1yrLxBdRTE49CRk1OfPC%2FK55hzBuRMa6yAGHNpVKaFd2O%2Ffu10O0HWi%2FC3lvmcIFp0dr6VaMPscip%2FVFQgBreOc%2FEXHojsNoV5g%2BUy2wjJinC%2BAXonZ%2B%2FkWIWBnSFVTcM8M8buiT%2B8vCH5FxSbc%2FBHIDFnadMVE4AxmEAZcTut6DvyNss%2F4DUPLCcH|Content-Type=application/octet-stream|R{SSM}|
https://orf2.mdn.ors.at/orf/orf2/drmqxa/manifest.mpd
#EXTINF:-1 tvg-id="633",ORF 2 OÖ
#KODIPROP:inputstream=inputstream.adaptive
#KODIPROP:inputstream.adaptive.manifest_type=mpd
#KODIPROP:inputstream.adaptive.license_type=com.widevine.alpha
#KODIPROP:inputstream.adaptive.license_key=https://drm.ors.at/acquire-license/widevine?BrandGuid=13f2e056-53fe-4469-ba6d-999970dbe549&userToken=tfoj7l1aPgDJD57678f3wzyzd3ltjSuHB38DUwVK9bFyrTylyDJRwmKs7RP7tDlJ%2BaQm%2FY1yrLxBdRTE49CRk1OfPC%2FK55hzBuRMa6yAGHNpVKaFd2O%2Ffu10O0HWi%2FC3lvmcIFp0dr6VaMPscip%2FVFQgBreOc%2FEXHojsNoV5g%2BUy2wjJinC%2BAXonZ%2B%2FkWIWBnSFVTcM8M8buiT%2B8vCH5FxSbc%2FBHIDFnadMVE4AxmEAZcTut6DvyNss%2F4DUPLCcH|Content-Type=application/octet-stream|R{SSM}|
https://orf2ooe.mdn.ors.at/orf/orf2ooe/drmqxa/manifest.mpd
#EXTINF:-1 tvg-id="628",ORF III Kultur und Information
#KODIPROP:inputstream=inputstream.adaptive
#KODIPROP:inputstream.adaptive.manifest_type=mpd
#KODIPROP:inputstream.adaptive.license_type=com.widevine.alpha
#KODIPROP:inputstream.adaptive.license_key=https://drm.ors.at/acquire-license/widevine?BrandGuid=13f2e056-53fe-4469-ba6d-999970dbe549&userToken=tfoj7l1aPgDJD57678f3wzyzd3ltjSuHB38DUwVK9bFyrTylyDJRwmKs7RP7tDlJ%2BaQm%2FY1yrLxBdRTE49CRk1OfPC%2FK55hzBuRMa6yAGHNpVKaFd2O%2Ffu10O0HWi%2FC3lvmcIFp0dr6VaMPscip%2FVFQgBreOc%2FEXHojsNoV5g%2BUy2wjJinC%2BAXonZ%2B%2FkWIWBnSFVTcM8M8buiT%2B8vCH5FxSbc%2FBHIDFnadMVE4AxmEAZcTut6DvyNss%2F4DUPLCcH|Content-Type=application/octet-stream|R{SSM}|
https://orf3.mdn.ors.at/orf/orf3/qxb/manifest.mpd
#EXTINF:-1 tvg-id="629",ORF Sport+
#KODIPROP:inputstream=inputstream.adaptive
#KODIPROP:inputstream.adaptive.manifest_type=mpd
#KODIPROP:inputstream.adaptive.license_type=com.widevine.alpha
#KODIPROP:inputstream.adaptive.license_key=https://drm.ors.at/acquire-license/widevine?BrandGuid=13f2e056-53fe-4469-ba6d-999970dbe549&userToken=tfoj7l1aPgDJD57678f3wzyzd3ltjSuHB38DUwVK9bFyrTylyDJRwmKs7RP7tDlJ%2BaQm%2FY1yrLxBdRTE49CRk1OfPC%2FK55hzBuRMa6yAGHNpVKaFd2O%2Ffu10O0HWi%2FC3lvmcIFp0dr6VaMPscip%2FVFQgBreOc%2FEXHojsNoV5g%2BUy2wjJinC%2BAXonZ%2B%2FkWIWBnSFVTcM8M8buiT%2B8vCH5FxSbc%2FBHIDFnadMVE4AxmEAZcTut6DvyNss%2F4DUPLCcH|Content-Type=application/octet-stream|R{SSM}|
https://orfs.mdn.ors.at/orf/orfs/drmqxa/manifest.mpd
#EXTINF:-1 tvg-id="20130",ServusTV
https://stv-live.akamaized.net/hls/live/2031011/lingeoSTVATwebPri/master_6692.m3u8
#EXTINF:-1 tvg-id="887",gotv
https://nstream17.gotv.at:1443/live/_definst_/gotvlive_576p/chunklist.m3u8
#EXTINF:-1 tvg-logo="https://www.dorftv.at/sites/default/themes/dorftv_omega/logo.png",dorftv
https://stream.openplayout.org/hls/dorftv/live_high/index.m3u8
#EXTINF:-1 tvg-id="20197",3SAT
https://zdf-hls-18.akamaized.net/hls/live/2016501/dach/veryhigh/master.m3u8
#EXTINF:-1 tvg-id="20129",ARTE
http://artelive-lh.akamaihd.net/i/artelive_de@393591/index_5_av-p.m3u8?sd=10&rebase=on
#EXTINF:-1 tvg-id="20131",Das Erste
https://daserstehdint-lh.akamaihd.net/i/daserstehd_int@629195/index_3776_av-p.m3u8?sd=10&rebase=on
#EXTINF:-1 tvg-id="646",ZDF
http://zdf1314-lh.akamaihd.net/i/de14_v1@392878/index_3056_av-b.m3u8?sd=10&dw=0&rebase=on
#EXTINF:-1 tvg-id="20199",BR
https://brlive-lh.akamaihd.net/i/bfssued_worldwide@119891/index_3776_av-p.m3u8?sd=10&rebase=on
# Radio
#EXTINF:-1 tvg-id="225894952366" radio="true",Ö1
https://orf-live.ors-shoutcast.at/oe1-q1a
#EXTINF:-1 tvg-id="225894440332" radio="true",Radio Oberösterreich
https://orf-live.ors-shoutcast.at/ooe-q1a
#EXTINF:-1 tvg-id="224890919986" radio="true",Hitradio Ö3
https://orf-live.ors-shoutcast.at/oe3-q1a
#EXTINF:-1 tvg-id="225894952285" radio="true",FM4
https://orf-live.ors-shoutcast.at/fm4-q1a
@jaylinski
Copy link
Author

I guess they will enable DRM again at some point.

They re-enabled DRM for Olympia. Bot is now active again and updates the key. I also had to re-install Widevine CDM via InputStream Helper for it to work again.

@bencooper1
Copy link

Hi! Thank for your list. Your playlist works perfectly on my Kodi. Do you know how to modify in the playlist if the license response (I meant this part: |Content-Type=application/octet-stream|R{SSM}| ) as in this case. It doesn't return directly base64 as ORF but seem binary format. I try to but |Content-Type=application/octet-stream|R{SSM}|R or |Content-Type=application/octet-stream|R{SSM}|B but doesn't work. If I |Content-Type=application/octet-stream|R{SSM}| Kodi plays encrypted mpd. Here is raw license response use inputstream.adaptive debug mode: ���˚� 4 �›?±üätl.�B∆Æs'Aæ��›?±üätl.�B∆Æs'Aæ�� �(�8�@�H……é�������0��V��'+(˚îP†‰ ØÑü�…Ï�@fe^œ�…�¿flN∫Gh∂´ÂÁYfi:ã¶√Í] £�ï��j�#щÖö∑•›°˜Ô^eeQµá˛∏ˆ=(�Í√ˇ–∏G ��Y
�≠:;
xZW∑øN�Sö-����©M?ˆ,�_tÃÒÊ
uJC��êë�L��∑∆(èFà[àw �(�2���B� �kc16����œŸq€Ä���b�SD_HD ……é�8�P�� gs-!;ï%áÍŸø¥F’fi�bM�‹�y/â ë1e‡=∞\"Ä�)�≈æv0\W8fiÜ.∂�õvb�Q†»öÂê k3Ú÷aÜã¯ÙI?qª5ø,ˇ|U�_ƒh»V›x•�xDS≈◊4��x S�G|'öÄŸ�V�‹“]�©/d*d��ß1ªW
°�†ÙH�í≥?�FOdXFiñw��_@õ<Sâ4 ÆV”Üfl|È:3 118.1.2 Built on Aug 16 2023 12:55:00 (1692215686)@�J∞��������∞����œŸq€»ΩfË���B�������T���@�����������������������������������������������������������������������ö�������¨�������æ���������������⁄����ò�ÈS}V�=�ߘ&sº∂Ih›�L(ñ\¶Ö˘O#añ¯�X�
I used Python convert to Base64 and find that it's a license response (CAIS): CAIS+wEKNAoQ3T+xn4p0bC4WQsaucydBvhIQ3T+xn4p0bC4WQsaucydBvhoAIAEoADgAQABIycnMqQYSBggBEAEwABpWEhAnKyj7YJRQoOQJr4SfAsnsGkBmRV7PG8kWwN8qTrpHaLar5edZ3jqLpsPqXcqjD5UWB2oUI/CE5IWat6XdoffvXmVlUbWH/rj2PSgH6sP/0LhHIAEaWQoQrTo7DXhaV7e/ThdTmi0UGBIQqU0/9iwOX3TM8eYNYHVKQxoQkJEdTPAQFbfGKI9GiFuIdyACKAEyAggAQhIKEGtjMTYAAAAAz9lx24AAAAhiBVNEX0hEIMnJzKkGOABQABogZ3MtITuVJYfq2b+0RtXeHGJNBtwSeS+JypExZeA9sFwigAEpAsW+djBcVzjehi62FJt2YhZRoMia5ZAKazPy1mGGi/j0ST9xuzW/LP98VRdfxGjIVt14pQh4RFPF1zQIHXgMUwtHfCeagNkOVgvc0l0QqS9kKmQEG2CnMbtXKqEUoPRIFZKzPwBgRk9kWEZplncPA19AmzxTiTQgrlbTht986TozCjExOC4xLjIgQnVpbHQgb24gQXVnIDE2IDIwMjMgMTI6NTU6MDAgKDE2OTIyMTU2ODYpQAFKsAEAAAACAAAAsAAFABDP2XHbyL1m6AAAAEIAAAAQAAAAVAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAJoAAAAQAAAArAAAABAAAAC+AAAAEAAAAAAAAAAAAAAA2gAAABCYFOlTfVYQPRmn9yZzvLZJaN0bTCiWXKaF+U8jYZb4BFgB

@twinkle2360
Copy link

Does this work on firestick downloader

@oje01
Copy link

oje01 commented Mar 8, 2024

orf 1 + orf 2 sind OK mit KODI 20,4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment