diff --git a/modules/isohunt/__init__.py b/modules/isohunt/__init__.py deleted file mode 100644 index e9db6014..00000000 --- a/modules/isohunt/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .backend import IsohuntBackend - -__all__ = ['IsohuntBackend'] diff --git a/modules/isohunt/backend.py b/modules/isohunt/backend.py deleted file mode 100644 index 221ecda7..00000000 --- a/modules/isohunt/backend.py +++ /dev/null @@ -1,62 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2010-2011 Julien Veyssier -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - - -from weboob.capabilities.torrent import ICapTorrent, Torrent -from weboob.tools.backend import BaseBackend - -from .browser import IsohuntBrowser - - -__all__ = ['IsohuntBackend'] - - -class IsohuntBackend(BaseBackend, ICapTorrent): - NAME = 'isohunt' - MAINTAINER = u'Julien Veyssier' - EMAIL = 'julien.veyssier@aiur.fr' - VERSION = '0.h' - DESCRIPTION = 'isoHunt BitTorrent tracker' - LICENSE = 'AGPLv3+' - BROWSER = IsohuntBrowser - - def get_torrent(self, id): - return self.browser.get_torrent(id) - - def get_torrent_file(self, id): - torrent = self.browser.get_torrent(id) - if not torrent: - return None - return self.browser.openurl(torrent.url.encode('utf-8')).read() - - def iter_torrents(self, pattern): - return self.browser.iter_torrents(pattern.replace(' ', '+')) - - def fill_torrent(self, torrent, fields): - if 'description' in fields or 'files' in fields: - tor = self.get_torrent(torrent.id) - torrent.description = tor.description - torrent.magnet = tor.magnet - torrent.files = tor.files - torrent.url = tor.url - return torrent - - OBJECTS = { - Torrent: fill_torrent - } diff --git a/modules/isohunt/browser.py b/modules/isohunt/browser.py deleted file mode 100644 index 6b162534..00000000 --- a/modules/isohunt/browser.py +++ /dev/null @@ -1,50 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2010-2011 Julien Veyssier -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - - -from weboob.tools.browser import BaseBrowser, BrowserHTTPNotFound - -from .pages.torrents import TorrentsPage, TorrentPage - - -__all__ = ['IsohuntBrowser'] - - -class IsohuntBrowser(BaseBrowser): - DOMAIN = 'isohunt.com' - PROTOCOL = 'https' - ENCODING = 'utf-8' - USER_AGENT = BaseBrowser.USER_AGENTS['wget'] - PAGES = { - 'https://isohunt.com/torrents/.*iht=-1&ihp=1&ihs1=1&iho1=d': TorrentsPage, - 'https://isohunt.com/torrent_details.*tab=summary': TorrentPage, - } - - def iter_torrents(self, pattern): - self.location('https://isohunt.com/torrents/%s?iht=-1&ihp=1&ihs1=1&iho1=d' % pattern.encode('utf-8')) - assert self.is_on_page(TorrentsPage) - return self.page.iter_torrents() - - def get_torrent(self, id): - try: - self.location('https://isohunt.com/torrent_details/%s/?tab=summary' % id) - except BrowserHTTPNotFound: - return - if self.is_on_page(TorrentPage): - return self.page.get_torrent(id) diff --git a/modules/isohunt/favicon.png b/modules/isohunt/favicon.png deleted file mode 100644 index 55c30772..00000000 Binary files a/modules/isohunt/favicon.png and /dev/null differ diff --git a/modules/isohunt/pages/__init__.py b/modules/isohunt/pages/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/modules/isohunt/pages/torrents.py b/modules/isohunt/pages/torrents.py deleted file mode 100644 index 2c4a4e50..00000000 --- a/modules/isohunt/pages/torrents.py +++ /dev/null @@ -1,128 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2010-2011 Julien Veyssier -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - - -from weboob.capabilities.torrent import Torrent -from weboob.tools.browser import BasePage -from weboob.tools.misc import get_bytes_size -from weboob.capabilities.base import NotAvailable, NotLoaded - - -__all__ = ['TorrentsPage'] - - -class TorrentsPage(BasePage): - def iter_torrents(self): - for tr in self.document.getiterator('tr'): - if tr.attrib.get('class', '') == 'hlRow': - # sometimes the first tr also has the attribute hlRow - # i use that to ditinct it from the others - if 'onmouseout' in tr.attrib: - size = NotAvailable - seed = NotAvailable - leech = NotAvailable - atitle = tr.getchildren()[2].getchildren()[1] - title = unicode(atitle.text) - if not title: - title = u'' - for bold in atitle.getchildren(): - if bold.text: - title += bold.text - if bold.tail: - title += bold.tail - idt = tr.getchildren()[2].getchildren()[0].attrib.get('href', '') - idt = idt.split('/')[2] - size = tr.getchildren()[3].text - u = size[-2:] - size = float(size[:-3]) - sseed = tr.getchildren()[4].text - sleech = tr.getchildren()[5].text - if sseed is not None and sseed != "": - seed = int(sseed) - if sleech is not None and sleech != "": - leech = int(sleech) - url = u'https://isohunt.com/download/%s/mon_joli_torrent.torrent' % idt - torrent = Torrent(idt, title) - torrent.url = url - torrent.size = get_bytes_size(size, u) - torrent.seeders = seed - torrent.leechers = leech - torrent.description = NotLoaded - torrent.files = NotLoaded - yield torrent - - -class TorrentPage(BasePage): - def get_torrent(self, id): - title = NotAvailable - size = NotAvailable - url = 'https://isohunt.com/download/%s/%s.torrent' % (id, id) - title = unicode(self.parser.select( - self.document.getroot(), 'head > meta[name=title]', 1).attrib.get('content', '')) - seed = NotAvailable - leech = NotAvailable - tip_id = "none" - for span in self.document.getiterator('span'): - if span.attrib.get('style', '') == 'color:green;' and ('ShowTip' in span.attrib.get('onmouseover', '')): - seed = int(span.tail.split(' ')[1]) - tip_id = span.attrib.get('onmouseover', '').split("'")[1] - for div in self.document.getiterator('div'): - # find the corresponding super tip which appears on super mouse hover! - if div.attrib.get('class', '') == 'dirs ydsf' and tip_id in div.attrib.get('id', ''): - leech = int(div.getchildren()[0].getchildren()[1].tail.split(' ')[2]) - # the with the size in it doesn't have a distinction - # have to get it by higher - elif div.attrib.get('id', '') == 'torrent_details': - size = div.getchildren()[6].getchildren()[0].getchildren()[0].text - u = size[-2:] - size = float(size[:-3]) - size = get_bytes_size(size, u) - - # files and description (uploader's comment) - description = NotAvailable - files = [] - count_p_found = 0 - for p in self.document.getiterator('p'): - if p.attrib.get('style', '') == 'line-height:1.2em;margin-top:1.8em': - count_p_found += 1 - if count_p_found == 1: - if p.getchildren()[1].tail is not None: - description = unicode(p.getchildren()[1].tail) - if count_p_found == 2: - if p.getchildren()[0].text == 'Directory:': - files.append(p.getchildren()[0].tail.strip() + '/') - else: - files.append(p.getchildren()[0].tail.strip()) - - for td in self.document.getiterator('td'): - if td.attrib.get('class', '') == 'fileRows': - filename = td.text - for slash in td.getchildren(): - filename += '/' - filename += slash.tail - files.append(filename) - - torrent = Torrent(id, title) - torrent.url = url - torrent.size = size - torrent.seeders = seed - torrent.leechers = leech - torrent.description = description - torrent.files = files - return torrent diff --git a/modules/isohunt/test.py b/modules/isohunt/test.py deleted file mode 100644 index d054ba21..00000000 --- a/modules/isohunt/test.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2010-2011 Julien Veyssier -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - -from weboob.tools.test import BackendTest - -from random import choice - - -class IsohuntTest(BackendTest): - BACKEND = 'isohunt' - - def test_torrent(self): - l = list(self.backend.iter_torrents('debian')) - if len(l): - torrent = choice(l) - full_torrent = self.backend.get_torrent(torrent.id) - assert torrent.name - assert full_torrent.name - assert self.backend.get_torrent_file(torrent.id)