summaryrefslogtreecommitdiff
path: root/zdf.py
blob: afaf65309509eee3b215b7849c00885065dbf95d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import locale
import logging
from datetime import datetime
from urllib.request import Request, urlopen
from xml.dom.minidom import parse, 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")
            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"))
    print(zdf("show/mai-think-x-die-show"))


if __name__ == "__main__":
    # if len(sys.argv) != 2:
    #     print('Usage:', sys.argv[0], '<foobar>')
    #     sys.exit(1)
    # main(sys.argv[1])
    main()