Skip to content

Instantly share code, notes, and snippets.

@jaylinski
Last active April 24, 2024 23:32
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=EhFNuoB%2Bqaz5%2Fco%2BxgnPG%2FcQatj5cjej6elWGS7OJ148yLx69VD3wZI8Udi7ozLQcID3OllK3UhrUNqitj7laetElZgTFXCMOig63znh%2BzLp%2BK%2F%2F20rGjyzyAAM%2BYUFFZM9%2BYy31YaIumUF1y0aU%2BiqmcQEJp3f0xuFRgvV5q5ftQWL34Zg2J4rC2eWt9BFoFjLjBdavZFTiBxYh6UEO5ncAVyROls0%2FACMN7kxDj2IJ%2BxaG8Xt0wX2Vk6KztU5K|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=EhFNuoB%2Bqaz5%2Fco%2BxgnPG%2FcQatj5cjej6elWGS7OJ148yLx69VD3wZI8Udi7ozLQcID3OllK3UhrUNqitj7laetElZgTFXCMOig63znh%2BzLp%2BK%2F%2F20rGjyzyAAM%2BYUFFZM9%2BYy31YaIumUF1y0aU%2BiqmcQEJp3f0xuFRgvV5q5ftQWL34Zg2J4rC2eWt9BFoFjLjBdavZFTiBxYh6UEO5ncAVyROls0%2FACMN7kxDj2IJ%2BxaG8Xt0wX2Vk6KztU5K|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=EhFNuoB%2Bqaz5%2Fco%2BxgnPG%2FcQatj5cjej6elWGS7OJ148yLx69VD3wZI8Udi7ozLQcID3OllK3UhrUNqitj7laetElZgTFXCMOig63znh%2BzLp%2BK%2F%2F20rGjyzyAAM%2BYUFFZM9%2BYy31YaIumUF1y0aU%2BiqmcQEJp3f0xuFRgvV5q5ftQWL34Zg2J4rC2eWt9BFoFjLjBdavZFTiBxYh6UEO5ncAVyROls0%2FACMN7kxDj2IJ%2BxaG8Xt0wX2Vk6KztU5K|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=EhFNuoB%2Bqaz5%2Fco%2BxgnPG%2FcQatj5cjej6elWGS7OJ148yLx69VD3wZI8Udi7ozLQcID3OllK3UhrUNqitj7laetElZgTFXCMOig63znh%2BzLp%2BK%2F%2F20rGjyzyAAM%2BYUFFZM9%2BYy31YaIumUF1y0aU%2BiqmcQEJp3f0xuFRgvV5q5ftQWL34Zg2J4rC2eWt9BFoFjLjBdavZFTiBxYh6UEO5ncAVyROls0%2FACMN7kxDj2IJ%2BxaG8Xt0wX2Vk6KztU5K|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=EhFNuoB%2Bqaz5%2Fco%2BxgnPG%2FcQatj5cjej6elWGS7OJ148yLx69VD3wZI8Udi7ozLQcID3OllK3UhrUNqitj7laetElZgTFXCMOig63znh%2BzLp%2BK%2F%2F20rGjyzyAAM%2BYUFFZM9%2BYy31YaIumUF1y0aU%2BiqmcQEJp3f0xuFRgvV5q5ftQWL34Zg2J4rC2eWt9BFoFjLjBdavZFTiBxYh6UEO5ncAVyROls0%2FACMN7kxDj2IJ%2BxaG8Xt0wX2Vk6KztU5K|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
@aschbacd
Copy link

ORF eins, 2, and Sport+ is not working for me, using PVR IPTV Simple Client

@jaylinski
Copy link
Author

@aschbacd ORF moved to DRM protected streams, so most of the programs do not work anymore...

You have to either use plugin.video.orftvthek (https://github.com/s0faking/plugin.video.orftvthek/releases/tag/0.12.2%2Bmatrix.1) or build your own strm-file: https://gist.github.com/jaylinski/b89aaddc724961ce6f07582adeb450d6 (sadly the userToken param is time-limited, so it has to be updated every hour or so).

@jaylinski
Copy link
Author

@aschbacd ORF eins, 2, and Sport+ are working again. Requirements:

  • Kodi >= 18
  • inputstream.adaptive-addon
  • Widevine (DRM lib) installed via InputStream Helper addon
  • IPTV simple (or other) PVR client is configured with "Auto refresh mode" set to 10 min.

(The playlist is now automatically updated every 30 minutes with a fresh token.)

@aschbacd
Copy link

Wow, thank you! Works like a charm :)

By the way, if the Widevine library is not automatically installed go to the settings of the InputStream Helper addon, then to configuration and select reinstall Widevine.

@jaylinski
Copy link
Author

jaylinski commented Oct 28, 2021

Apparently ORF decided to ditch DRM, since the token-endpoint doesn't work anymore.

For reference, the last revision with DRM: https://gist.github.com/jaylinski/5e6a40b066c4bfcc310e79d9143cf741/417aad6ab67505c57009eb89c68de94c97b975da

I guess they will enable DRM again at some point.

@finax1
Copy link

finax1 commented Dec 8, 2021

Livestream for ARTE does not work...

@jaylinski
Copy link
Author

@finax1 It is geoblocked, so only works in DE or FR.

@finax1
Copy link

finax1 commented Dec 8, 2021

@jaylinski Is there a stream that works in Austria?

@jaylinski
Copy link
Author

@finax1 None that I know of...

@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