import logging from urllib.request import urlopen, Request from datetime import datetime from xml.dom.minidom import parse, parseString import locale def getText(dom, element): textNode = dom.getElementsByTagName(element)[0].firstChild if textNode: return textNode.data return "" def zdf(feed): url = f"https://www.zdf.de/rss/zdf/{feed}" try: res = urlopen(Request(url)) except Exception as exc: logging.error("Request to zdf failed.", exc_info=exc) return None try: rss = res.read() xml = parseString(rss) except Exception as exc: logging.error("Parsing to zdf failed.", exc_info=exc) return None try: title = getText(xml, "title") description = getText(xml, "description") content = [] for show in xml.getElementsByTagName("item"): s_url = getText(show, "link") if not s_url: continue # Full episodes have the ID 100 if not s_url.endswith("-100.html"): continue s_title = getText(show, "title") if not s_title.startswith(title): continue s_date = getText(show, "pubDate") s_date_parsed = datetime.strptime(s_date, "%a, %d %b %Y %H:%M:%S %z") if s_date_parsed.timestamp() > datetime.now().timestamp(): continue # s_tmp = s_title = getText(show, 'title') # if s_tmp.startswith(f'{title} vom '): # s_tmp = s_tmp[len(f'{title} vom '):] # saved = locale.setlocale(locale.LC_TIME) # locale.setlocale(locale.LC_TIME, "de_DE.utf8") # tmp = datetime.strptime(s_tmp, "%d. %B %Y") # locale.setlocale(locale.LC_TIME, saved) s_desc = getText(show, "description") s_guid = getText(show, "guid") print("Adding", s_url, s_desc) content.append( { "title": s_title, "url": s_url, "content": s_desc, "date": s_date, "guid": s_guid, } ) return { "title": title, "url": url, "description": description, "content": content, } except Exception as exc: logging.error("Working with zdf failed.", exc_info=exc) return None def main(): # print(zdf("comedy/heute-show")) # print(zdf("comedy/die-anstalt")) print(zdf("comedy/zdf-magazin-royale")) if __name__ == "__main__": # if len(sys.argv) != 2: # print('Usage:', sys.argv[0], '') # sys.exit(1) # main(sys.argv[1]) main()