import logging from datetime import datetime from urllib.request import Request, urlopen from xml.dom.minidom import parseString 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 (others aswell sometimes) if not s_url.endswith("-100.html"): continue s_title = getText(show, "title") # if not s_title.startswith(title): # broke vor Maithink X # 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") 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 if __name__ == "__main__": pass # print(zdf("comedy/heute-show")) # print(zdf("comedy/die-anstalt")) # print(zdf("comedy/zdf-magazin-royale")) # print(zdf("show/mai-think-x-die-show"))