Skip to content

Instantly share code, notes, and snippets.

@jaylinski
Last active July 16, 2026 23:53
Show Gist options
  • Select an option

  • Save jaylinski/5e6a40b066c4bfcc310e79d9143cf741 to your computer and use it in GitHub Desktop.

Select an option

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=9R0e%2FSnMPWth7SVeYD2GR80RmJuP2G29G7D%2FWPAfAUPrxN3KJyCewg3F%2FjdbPGkxrOE2E6BIvwloPF6Ipb3TGaPQAtO5SKR7vSb5BrXs6cFSdEZW9Rbs%2FSgRVTqLd5vaT1Rulhe7qX7dIYAKYLojWIS0l3UBkDEYUCXOuCXCeZxugbH8nauJkXHPDZ4jRP8C7NTLEd%2F8BJOtk4Txsm5YXxnIfNXsCTe%2BmRpiU%2FfTjn6SCR9qf8j20XxxeGjoTQZF|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=9R0e%2FSnMPWth7SVeYD2GR80RmJuP2G29G7D%2FWPAfAUPrxN3KJyCewg3F%2FjdbPGkxrOE2E6BIvwloPF6Ipb3TGaPQAtO5SKR7vSb5BrXs6cFSdEZW9Rbs%2FSgRVTqLd5vaT1Rulhe7qX7dIYAKYLojWIS0l3UBkDEYUCXOuCXCeZxugbH8nauJkXHPDZ4jRP8C7NTLEd%2F8BJOtk4Txsm5YXxnIfNXsCTe%2BmRpiU%2FfTjn6SCR9qf8j20XxxeGjoTQZF|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=9R0e%2FSnMPWth7SVeYD2GR80RmJuP2G29G7D%2FWPAfAUPrxN3KJyCewg3F%2FjdbPGkxrOE2E6BIvwloPF6Ipb3TGaPQAtO5SKR7vSb5BrXs6cFSdEZW9Rbs%2FSgRVTqLd5vaT1Rulhe7qX7dIYAKYLojWIS0l3UBkDEYUCXOuCXCeZxugbH8nauJkXHPDZ4jRP8C7NTLEd%2F8BJOtk4Txsm5YXxnIfNXsCTe%2BmRpiU%2FfTjn6SCR9qf8j20XxxeGjoTQZF|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=9R0e%2FSnMPWth7SVeYD2GR80RmJuP2G29G7D%2FWPAfAUPrxN3KJyCewg3F%2FjdbPGkxrOE2E6BIvwloPF6Ipb3TGaPQAtO5SKR7vSb5BrXs6cFSdEZW9Rbs%2FSgRVTqLd5vaT1Rulhe7qX7dIYAKYLojWIS0l3UBkDEYUCXOuCXCeZxugbH8nauJkXHPDZ4jRP8C7NTLEd%2F8BJOtk4Txsm5YXxnIfNXsCTe%2BmRpiU%2FfTjn6SCR9qf8j20XxxeGjoTQZF|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=9R0e%2FSnMPWth7SVeYD2GR80RmJuP2G29G7D%2FWPAfAUPrxN3KJyCewg3F%2FjdbPGkxrOE2E6BIvwloPF6Ipb3TGaPQAtO5SKR7vSb5BrXs6cFSdEZW9Rbs%2FSgRVTqLd5vaT1Rulhe7qX7dIYAKYLojWIS0l3UBkDEYUCXOuCXCeZxugbH8nauJkXHPDZ4jRP8C7NTLEd%2F8BJOtk4Txsm5YXxnIfNXsCTe%2BmRpiU%2FfTjn6SCR9qf8j20XxxeGjoTQZF|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
Copy Markdown

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

@jaylinski

Copy link
Copy Markdown
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
Copy Markdown
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
Copy Markdown

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

jaylinski commented Oct 28, 2021

Copy link
Copy Markdown
Author

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

finax1 commented Dec 8, 2021

Copy link
Copy Markdown

Livestream for ARTE does not work...

@jaylinski

Copy link
Copy Markdown
Author

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

@finax1

finax1 commented Dec 8, 2021

Copy link
Copy Markdown

@jaylinski Is there a stream that works in Austria?

@jaylinski

Copy link
Copy Markdown
Author

@finax1 None that I know of...

@jaylinski

Copy link
Copy Markdown
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
Copy Markdown

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
Copy Markdown

Does this work on firestick downloader

@oje01

oje01 commented Mar 8, 2024

Copy link
Copy Markdown

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

@worldmediaman

Copy link
Copy Markdown

Mit VPN läuft der oben angegebene Stream nicht, über die ORF ON Seite hingegen funktioniert es

@matthew1980s

Copy link
Copy Markdown

Hi, Good Night, Sorry for my English, as I wrote this message using Google Translate. Also, I'm new here and wanted to know how I can fix in Kodi a link with a token at the end.
Example: https://anbalancer.express.com.ar/live/c1eds/TNT_Sports_HD/SA_DASH_cipix/TNT_Sports_HD.mpd?dvr_window_length=30&token=IFiiZFWpH3jgDjugVofy4mpqZkG2KXWc

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