-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathupdate_feed.py
More file actions
44 lines (39 loc) · 2.2 KB
/
update_feed.py
File metadata and controls
44 lines (39 loc) · 2.2 KB
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
import xml.etree.ElementTree as ET
import argparse
from email.utils import formatdate
if __name__ == "__main__":
ET.register_namespace('itunes', "http://www.itunes.com/dtds/podcast-1.0.dtd")
ET.register_namespace('content',"http://purl.org/rss/1.0/modules/content/")
parser = argparse.ArgumentParser(description="Update the provided RSS feed with a new episode.")
parser.add_argument("path", type=str, help="Path to RSS feed being updated")
parser.add_argument("--title", type=str, required=True, help="Title of episode being added")
parser.add_argument("--url", type=str, required=True, help="URL of the episode being added")
parser.add_argument("--bytes", type=int, required=True, help="Size of the file (in bytes)")
parser.add_argument("--guid", type=str, required=True, help="guid for the episode)")
parser.add_argument("--timestamp", type=int, required=True, help="Publish date for the episode)")
parser.add_argument("--thumbnail", type=str, required=True, help="Thumbnail for this episode)")
parser.add_argument("--link", type=str, required=True, help="Link to the video episode)")
parser.add_argument("--description", type=str, required=True, help="Description for the episode")
args = parser.parse_args()
tree = ET.parse(args.path)
root = tree.getroot()
channel = root.find("channel")
new_item = ET.SubElement(channel, "item")
title_element = ET.SubElement(new_item, 'title')
title_element.text = args.title
enclosure_element = ET.SubElement(new_item, 'enclosure')
enclosure_element.set("url", args.url)
enclosure_element.set("type", "audio/mpeg")
enclosure_element.set("length", str(args.bytes))
guid_element = ET.SubElement(new_item, 'guid')
guid_element.text = args.guid
date_element = ET.SubElement(new_item, 'pubDate')
date_element.text = formatdate(args.timestamp, usegmt=True)
img_element = ET.SubElement(new_item, 'itunes:image')
img_element.set("href", args.thumbnail)
link_element = ET.SubElement(new_item, 'link')
link_element.text = args.link
description_element = ET.SubElement(new_item, 'description')
description_element.text = args.description
# Save the changes
tree.write(args.path)