Closed Axel-Erfurt closed 3 years ago
Hi, not an issue,
python script to grab the free German TV Channels from MediathekView API,
output in m3u format
import requests channels_logos = {"ARD": "https://raw.githubusercontent.com/cytec/tvlogos/master/ard.png", "ARD ONE": "https://raw.githubusercontent.com/cytec/tvlogos/master/one.png", "ARD Alpha": "https://raw.githubusercontent.com/cytec/tvlogos/master/br-alpha.png" , "ARD Tagesschau": "https://raw.githubusercontent.com/cytec/tvlogos/master/tagesschau24.png" , "ZDF": "https://raw.githubusercontent.com/cytec/tvlogos/master/zdf.png" , "ZDF neo": "https://raw.githubusercontent.com/cytec/tvlogos/master/zdfneo.png" , "ZDF info": "https://raw.githubusercontent.com/cytec/tvlogos/master/zdfinfo.png" , "MDR Sachsen": "https://raw.githubusercontent.com/cytec/tvlogos/master/mdr.png" , "MDR Sachsen-Anhalt": "https://raw.githubusercontent.com/cytec/tvlogos/master/mdr.png" , "MDR Thüringen": "https://raw.githubusercontent.com/cytec/tvlogos/master/mdr.png" , "PHOENIX": "https://raw.githubusercontent.com/cytec/tvlogos/master/phoenix.png" , "RBB Berlin": "https://raw.githubusercontent.com/cytec/tvlogos/master/rbb.png" , "RBB Brandenburg": "https://raw.githubusercontent.com/cytec/tvlogos/master/rbb.png" , "BR Süd": "https://raw.githubusercontent.com/cytec/tvlogos/master/br.png" , "BR Nord": "https://raw.githubusercontent.com/cytec/tvlogos/master/br.png" , "HR": "https://raw.githubusercontent.com/cytec/tvlogos/master/hr.png" , "SR": "https://raw.githubusercontent.com/cytec/tvlogos/master/sr.png" , "SWR RP": "https://raw.githubusercontent.com/cytec/tvlogos/master/swr.png" , "SWR BW": "https://raw.githubusercontent.com/cytec/tvlogos/master/swr.png" , "NDR": "https://raw.githubusercontent.com/cytec/tvlogos/master/ndr.png" , "NDR Fernsehen": "https://raw.githubusercontent.com/cytec/tvlogos/master/ndr.png" , "NDR Niedersachsen": "https://raw.githubusercontent.com/cytec/tvlogos/master/ndr.png" , "NDR Mecklenburg-Vorpommern": "https://raw.githubusercontent.com/cytec/tvlogos/master/ndr.png" , "NDR Schleswig-Holstein": "https://raw.githubusercontent.com/cytec/tvlogos/master/ndr.png" , "NDR Hamburg": "https://raw.githubusercontent.com/cytec/tvlogos/master/ndr.png" , "NDR Fernsehen Schleswig-Holstein": "https://raw.githubusercontent.com/cytec/tvlogos/master/ndr.png" , "DW": "https://raw.githubusercontent.com/jnk22/kodinerds-iptv/master/logos/tv/deutschewelle.png" , "WDR": "https://raw.githubusercontent.com/cytec/tvlogos/master/wdr.png" , "ARTE DE": "https://raw.githubusercontent.com/cytec/tvlogos/master/arte.png" , "3Sat": "https://raw.githubusercontent.com/cytec/tvlogos/master/3sat.png" , "kika": "https://raw.githubusercontent.com/cytec/tvlogos/master/kika.png" , "ORF-1": "https://raw.githubusercontent.com/cytec/tvlogos/master/orf-eins.png" , "ORF-2": "https://raw.githubusercontent.com/jnk22/kodinerds-iptv/master/logos/tv/orf2hd.png" , "ORF-3": "https://raw.githubusercontent.com/jnk22/kodinerds-iptv/master/logos/tv/orf3hd.png" , "ORF-Sport": "https://upload.wikimedia.org/wikipedia/de/thumb/9/9c/ORFsport_logo.svg/320px-ORFsport_logo.svg.png" } channels = ["ard", "zdf", "mdr", "phoenix", "rbb", "br", "hr", "sr", "swr", "ndr", "dw", "wdr", "arte", "3sat", "kika", "orf", "sf"] chList = [] urlList = [] def getURL(name): headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0', 'Accept': '*/*', 'Accept-Language': 'de-DE,en;q=0.5', 'Content-Type': 'text/plain;charset=UTF-8', 'Connection': 'keep-alive', } data = {"queries":[{"fields":["title","topic"],"query":"livestream"},{"fields":["channel"],"query":"" + name + ""}]} response = requests.post('https://mediathekviewweb.de/api/query', headers=headers, json=data) response_json = response.json() count = int(response_json['result']['queryInfo']['resultCount']) for x in range(count): title = response_json['result']['results'][x]['title'] url = response_json['result']['results'][x]['url_video'] if "Extra" in title: continue if ".m3u8" in url and "3Sat" in title: chList.append(title.replace(".", " ").replace(' Livestream', '')) urlList.append(url) if ".m3u8" in url and "KiKA" in title: title = "kika" chList.append(title) urlList.append(url) if ".m3u8" in url and name.upper() in title: chList.append(title.replace(".", " ").replace(' Livestream', '')) urlList.append(url) result = "#EXTM3U\n" for ch in channels: r = getURL(ch) for x in range(len(chList)): name = chList[x] if name in channels_logos: logo = channels_logos[name] id = "" url = urlList[x] result += f'#EXTINF:-1 tvg-name="{name}" group-title="{"Germany"}" tvg-logo="{logo}" tvg-id="{id}",{name}\n{url}' result += "\n" print(result)
output today for example:
#EXTM3U #EXTINF:-1 tvg-name="ARD" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/ard.png" tvg-id="",ARD http://mcdn.daserste.de/daserste/de/master.m3u8 #EXTINF:-1 tvg-name="ARD ONE" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/one.png" tvg-id="",ARD ONE http://onelivestream-lh.akamaihd.net/i/one_livestream@568814/master.m3u8 #EXTINF:-1 tvg-name="ARD Alpha" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/br-alpha.png" tvg-id="",ARD Alpha http://brlive-lh.akamaihd.net/i/bralpha_germany@119899/master.m3u8 #EXTINF:-1 tvg-name="ARD Tagesschau" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/tagesschau24.png" tvg-id="",ARD Tagesschau http://tagesschau-lh.akamaihd.net/i/tagesschau_1@119231/master.m3u8 #EXTINF:-1 tvg-name="ZDF" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/zdf.png" tvg-id="",ZDF http://zdf-hls-15.akamaized.net/hls/live/2016498/de/high/master.m3u8 #EXTINF:-1 tvg-name="ZDF neo" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/zdfneo.png" tvg-id="",ZDF neo http://zdf-hls-16.akamaized.net/hls/live/2016499/de/high/master.m3u8 #EXTINF:-1 tvg-name="ZDF info" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/zdfinfo.png" tvg-id="",ZDF info http://zdf-hls-17.akamaized.net/hls/live/2016500/de/high/master.m3u8 #EXTINF:-1 tvg-name="MDR Sachsen" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/mdr.png" tvg-id="",MDR Sachsen https://mdrtvsnhls.akamaized.net/hls/live/2016928/mdrtvsn/master.m3u8 #EXTINF:-1 tvg-name="MDR Sachsen-Anhalt" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/mdr.png" tvg-id="",MDR Sachsen-Anhalt https://mdrtvsahls.akamaized.net/hls/live/2016879/mdrtvsa/master.m3u8 #EXTINF:-1 tvg-name="MDR Thüringen" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/mdr.png" tvg-id="",MDR Thüringen https://mdrtvthhls.akamaized.net/hls/live/2016880/mdrtvth/master.m3u8 #EXTINF:-1 tvg-name="PHOENIX" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/phoenix.png" tvg-id="",PHOENIX http://zdf-hls-19.akamaized.net/hls/live/2016502/de/high/master.m3u8 #EXTINF:-1 tvg-name="RBB Berlin" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/rbb.png" tvg-id="",RBB Berlin http://rbblive-lh.akamaihd.net/i/rbb_berlin@144674/master.m3u8 #EXTINF:-1 tvg-name="RBB Brandenburg" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/rbb.png" tvg-id="",RBB Brandenburg http://rbblive-lh.akamaihd.net/i/rbb_brandenburg@349369/master.m3u8 #EXTINF:-1 tvg-name="BR Süd" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/br.png" tvg-id="",BR Süd http://mcdn.br.de/bfs_sued/de/master.m3u8 #EXTINF:-1 tvg-name="BR Nord" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/br.png" tvg-id="",BR Nord http://brlive-lh.akamaihd.net/i/bfsnord_germany@119898/master.m3u8 #EXTINF:-1 tvg-name="HR" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/hr.png" tvg-id="",HR http://hrlive1-lh.akamaihd.net/i/hr_fernsehen@75910/master.m3u8 #EXTINF:-1 tvg-name="SR" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/sr.png" tvg-id="",SR http://srlive24-lh.akamaihd.net/i/sr_universal02@107595/master.m3u8 #EXTINF:-1 tvg-name="SWR RP" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/swr.png" tvg-id="",SWR RP https://swrrphls-i.akamaihd.net/hls/live/667639/swrrpd/master.m3u8 #EXTINF:-1 tvg-name="SWR BW" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/swr.png" tvg-id="",SWR BW https://swrbwhls-i.akamaihd.net/hls/live/667638/swrbwd/master.m3u8 #EXTINF:-1 tvg-name="NDR Fernsehen" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/ndr.png" tvg-id="",NDR Fernsehen https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_1992_av-b.m3u8 #EXTINF:-1 tvg-name="NDR Niedersachsen" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/ndr.png" tvg-id="",NDR Niedersachsen https://mcdn.ndr.de/ndr/hls/ndr_fs/ndr_nds/master.m3u8 #EXTINF:-1 tvg-name="NDR Mecklenburg-Vorpommern" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/ndr.png" tvg-id="",NDR Mecklenburg-Vorpommern https://mcdn.ndr.de/ndr/hls/ndr_fs/ndr_mv/master.m3u8 #EXTINF:-1 tvg-name="NDR Schleswig-Holstein" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/ndr.png" tvg-id="",NDR Schleswig-Holstein https://ndrfs-lh.akamaihd.net/i/ndrfs_sh@430234/master.m3u8 #EXTINF:-1 tvg-name="NDR Hamburg" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/ndr.png" tvg-id="",NDR Hamburg https://ndrfs-lh.akamaihd.net/i/ndrfs_hh@430231/master.m3u8 #EXTINF:-1 tvg-name="NDR Fernsehen Schleswig-Holstein" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/ndr.png" tvg-id="",NDR Fernsehen Schleswig-Holstein https://ndrfs-lh.akamaihd.net/i/ndrfs_sh@430234/index_1992_av-b.m3u8 #EXTINF:-1 tvg-name="DW" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/jnk22/kodinerds-iptv/master/logos/tv/deutschewelle.png" tvg-id="",DW http://dwstream6-lh.akamaihd.net/i/dwstream6_live@123962/master.m3u8 #EXTINF:-1 tvg-name="WDR" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/wdr.png" tvg-id="",WDR http://wdrfsgeo-lh.akamaihd.net/i/wdrfs_geogeblockt@530016/master.m3u8 #EXTINF:-1 tvg-name="ARTE DE" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/arte.png" tvg-id="",ARTE DE http://artelive-lh.akamaihd.net/i/artelive_de@393591/master.m3u8 #EXTINF:-1 tvg-name="3Sat" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/3sat.png" tvg-id="",3Sat http://zdf-hls-18.akamaized.net/hls/live/2016501/dach/high/master.m3u8 #EXTINF:-1 tvg-name="kika" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/kika.png" tvg-id="",kika https://kikageohls.akamaized.net/hls/live/2022693/livetvkika_de/master.m3u8 #EXTINF:-1 tvg-name="ORF-1" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/cytec/tvlogos/master/orf-eins.png" tvg-id="",ORF-1 https://orf1.mdn.ors.at/out/u/orf1/qxb/manifest.m3u8 #EXTINF:-1 tvg-name="ORF-2" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/jnk22/kodinerds-iptv/master/logos/tv/orf2hd.png" tvg-id="",ORF-2 https://orf2.mdn.ors.at/out/u/orf2/qxb/manifest.m3u8 #EXTINF:-1 tvg-name="ORF-3" group-title="Germany" tvg-logo="https://raw.githubusercontent.com/jnk22/kodinerds-iptv/master/logos/tv/orf3hd.png" tvg-id="",ORF-3 https://orf3.mdn.ors.at/out/u/orf3/qxb/manifest.m3u8 #EXTINF:-1 tvg-name="ORF-Sport" group-title="Germany" tvg-logo="" tvg-id="",ORF-Sport https://orfs.mdn.ors.at/out/u/orfs/qxb/manifest.m3u8
Thanks, create a tools/ directory with a README.md inside if you want to put this somewhere.
Hi, not an issue,
python script to grab the free German TV Channels from MediathekView API,
output in m3u format
output today for example: