flexget.plugins.urlrewrite_bakabt
Covered: 14 lines
Missed: 19 lines
Skipped 10 lines
Percent: 42 %
 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
 8
log = logging.getLogger('bakabt')
11
class UrlRewriteBakaBT(object):
12
    """BakaBT urlrewriter."""
15
    def url_rewritable(self, feed, entry):
16
        url = entry['url']
17
        if url.startswith('http://www.bakabt.com/download/'):
18
            return False
19
        if url.startswith('http://www.bakabt.com/') or url.startswith('http://bakabt.com/'):
20
            return True
21
        return False
24
    def url_rewrite(self, feed, entry):
25
        entry['url'] = self.parse_download_page(entry['url'])
27
    @internet(log)
28
    def parse_download_page(self, url):
29
        txheaders = {'User-agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
30
        req = urllib2.Request(url, None, txheaders)
31
        page = urlopener(req, log)
32
        try:
33
            soup = get_soup(page)
34
        except Exception, e:
35
            raise UrlRewritingError(e)
36
        tag_a = soup.find('a', attrs={'class': 'download_link'})
37
        if not tag_a:
38
            raise UrlRewritingError('Unable to locate download link from url %s' % url)
39
        torrent_url = 'http://www.bakabt.com' + tag_a.get('href')
40
        return torrent_url
42
register_plugin(UrlRewriteBakaBT, 'bakabt', groups=['urlrewriter'])