Cobbled together logic for insert a new item in the mp3 feed.
This commit is contained in:
parent
7d55cc49b8
commit
61b59bd4ad
4 changed files with 1997 additions and 4338 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
*.swp
|
||||||
|
*out.xml
|
51
append.py
Normal file
51
append.py
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
import sys
|
||||||
|
import feedparser
|
||||||
|
from urllib2 import HTTPError, URLError
|
||||||
|
import logging
|
||||||
|
|
||||||
|
def __fetch_feed(url):
|
||||||
|
try:
|
||||||
|
feed = feedparser.parse(url)
|
||||||
|
|
||||||
|
return feed.entries[0]
|
||||||
|
except HTTPError, e:
|
||||||
|
logging.error('Failed with HTTP status code %d' % e.code)
|
||||||
|
return None
|
||||||
|
except URLError, e:
|
||||||
|
logging.error('Failed to connect with network.')
|
||||||
|
logging.debug('Network failure reason, %s.' % e.reason)
|
||||||
|
return None
|
||||||
|
|
||||||
|
def __append_mp3(entry):
|
||||||
|
latest = __fetch_feed('cmdln_mp3_in.xml')
|
||||||
|
if entry.title.find(latest.title) != -1:
|
||||||
|
logging.info('Up to date.')
|
||||||
|
return
|
||||||
|
f = open('cmdln_mp3_in.xml')
|
||||||
|
o = open('cmdln_mp3_out.xml', 'w')
|
||||||
|
first = False
|
||||||
|
try:
|
||||||
|
for line in f:
|
||||||
|
if line.find('<item>') != -1 and not first:
|
||||||
|
logging.info('Insert new item.')
|
||||||
|
first = True
|
||||||
|
else:
|
||||||
|
logging.info('Preserve existing item.')
|
||||||
|
o.write(line)
|
||||||
|
finally:
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
def main():
|
||||||
|
logging.basicConfig(level=logging.INFO,
|
||||||
|
format='%(message)s')
|
||||||
|
entry = __fetch_feed('http://thecommandline.net/category/podcast/feed/')
|
||||||
|
if entry is None:
|
||||||
|
logging.error('Failed to fetch feed.')
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
__append_mp3(entry)
|
||||||
|
|
||||||
|
print entry.title
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
4338
cmdln_mp3_in.xml
4338
cmdln_mp3_in.xml
File diff suppressed because it is too large
Load diff
1944
cmdln_site.xml
Normal file
1944
cmdln_site.xml
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue