flexget.plugins.urlrewrite_deadfrog
Covered: 15 lines
Missed: 18 lines
Skipped 10 lines
Percent: 45 %
 1
import urllib2
 2
import logging
 3
from plugin_urlrewriting import UrlRewritingError
 4
from flexget.plugin import *
 5
from flexget.utils.tools import urlopener
 6
from flexget.utils.soup import get_soup
 7
import re
 9
log = logging.getLogger('deadfrog')
12
class UrlRewriteDeadFrog(object):
13
    """DeadFrog urlrewriter."""
16
    def url_rewritable(self, feed, entry):
17
        url = entry['url']
18
        if url.startswith('http://www.deadfrog.us/download/'):
19
            return False
20
        if url.startswith('http://www.deadfrog.us/') or url.startswith('http://deadfrog.us/'):
21
            return True
22
        return False
25
    def url_rewrite(self, feed, entry):
26
        entry['url'] = self.parse_download_page(entry['url'])
28
    @internet(log)
29
    def parse_download_page(self, url):
30
        txheaders = {'User-agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
31
        req = urllib2.Request(url, None, txheaders)
32
        page = urlopener(req, log)
33
        try:
34
            soup = get_soup(page)
35
        except Exception, e:
36
            raise UrlRewritingError(e)
37
        down_link = soup.find('a', attrs={'href': re.compile("download/\d+/.*\.torrent")})
38
        if not down_link:
39
            raise UrlRewritingError('Unable to locate download link from url %s' % url)
40
        return 'http://www.deadfrog.us/' + down_link.get('href')
42
register_plugin(UrlRewriteDeadFrog, 'deadfrog', groups=['urlrewriter'])