Skip to content

Instantly share code, notes, and snippets.

@stiletto
Created August 5, 2014 12:46
Show Gist options
  • Save stiletto/36681525e4e149976c5e to your computer and use it in GitHub Desktop.
Save stiletto/36681525e4e149976c5e to your computer and use it in GitHub Desktop.
#!/usr/bin/env python2
# coding: utf-8
import feedparser
import hashlib
import re
import os
class RssAnimeProvider:
def __init__(self,feed_url,id_prefix='',name_regex=''):
self.feed_url=feed_url
self.id_prefix=id_prefix
self.regex=re.compile(name_regex)
def get_items(self):
feed=feedparser.parse(self.feed_url)
for entry in feed.entries:
if not self.regex.search(entry['title']):
#print entry['title']
continue
entry_id=self.id_prefix+hashlib.md5(entry['id']).hexdigest()
yield (entry_id,entry['title'],entry['link'])
if __name__=="__main__":
import argparse
parser = argparse.ArgumentParser('Get files from RSS and add them to transmission')
parser.add_argument('url', help='Feed URL')
parser.add_argument('-a', '--add', help='Proced with addition', default=False, action='store_true')
parser.add_argument('-r', '--regex', help='Entry name regex', default='')
parser.add_argument('-u', '--urls', help='Only urls in output', default=False, action='store_true')
parser.add_argument('-d', '--dir', help='Directory to download to')
args = parser.parse_args()
provider = RssAnimeProvider(args.url, name_regex=args.regex)
items = list(provider.get_items())
maxlen = max(len(item[1]) for item in items)
for item in items:
if args.urls:
print item[2]
else:
print ('%'+str(-maxlen)+'s %s') % (item[1], item[2])
if args.add:
assert args.dir != None
os.spawnlp(os.P_WAIT,'transmission-remote', 'transmission-remote', '-a', item[2], '-w', args.dir, '--start')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment