-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfeed.py
58 lines (42 loc) · 2.24 KB
/
feed.py
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
import yaml
import xml.etree.ElementTree as xml_tree
with open('feed.yaml', 'r') as file:
yaml_data = yaml.safe_load(file)
# Create the root element of the XML
rss_element = xml_tree.Element(
'rss',
{
'version': '2.0',
'xmlns:itunes': 'http://www.itunes.com/dtds/podcast-1.0.dtd',
'xmlns:content': 'http://purl.org/rss/1.0/modules/content/'
}
)
# Create the channel element
channel_element = xml_tree.SubElement(rss_element, 'channel')
# Add the title element to the channel
link_prefix = yaml_data['link']
xml_tree.SubElement(channel_element, 'title').text = yaml_data['title']
xml_tree.SubElement(channel_element, 'format').text = yaml_data['format']
xml_tree.SubElement(channel_element, 'subtitle').text = yaml_data['subtitle']
xml_tree.SubElement(channel_element, 'itunes:author').text = yaml_data['author']
xml_tree.SubElement(channel_element, 'description').text = yaml_data['description']
xml_tree.SubElement(channel_element, 'itunes:image', {'href': link_prefix + yaml_data['image']})
xml_tree.SubElement(channel_element, 'language').text = yaml_data['language']
xml_tree.SubElement(channel_element, 'itunes:category', {'text':yaml_data['category']})
for item in yaml_data['item']:
item_element = xml_tree.SubElement(channel_element, 'item')
xml_tree.SubElement(item_element,'title').text = item['title']
xml_tree.SubElement(item_element,'itunes:author').text = yaml_data['author']
xml_tree.SubElement(item_element,'description').text = item['description']
xml_tree.SubElement(item_element,'itunes:duration').text = item['duration']
xml_tree.SubElement(item_element,'pubDate').text = item['published']
enclosure = xml_tree.SubElement(item_element, 'enclosure',{
'url': link_prefix + item['file'],
'type': 'audio/mpeg',
'length': item['length']
})
# Add more elements here if needed, e.g.:
# xml_tree.SubElement(channel_element, 'description').text = yaml_data.get('description', '')
# Write the XML tree to a file
output_tree = xml_tree.ElementTree(rss_element)
output_tree.write('podcast.xml', encoding="UTF-8", xml_declaration=True)