Support magnet URLs when downloading with piratebay
Also better text and strip description.
This commit is contained in:
parent
ee04a92f04
commit
21d0002dbf
3 changed files with 23 additions and 7 deletions
|
|
@ -17,15 +17,15 @@
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from weboob.capabilities.torrent import ICapTorrent
|
from weboob.capabilities.torrent import ICapTorrent, MagnetOnly
|
||||||
from weboob.tools.backend import BaseBackend
|
from weboob.tools.backend import BaseBackend
|
||||||
|
from weboob.capabilities.base import NotAvailable
|
||||||
|
|
||||||
from .browser import PiratebayBrowser
|
from .browser import PiratebayBrowser
|
||||||
|
|
||||||
|
|
||||||
__all__ = ['PiratebayBackend']
|
__all__ = ['PiratebayBackend']
|
||||||
|
|
||||||
|
|
||||||
class PiratebayBackend(BaseBackend, ICapTorrent):
|
class PiratebayBackend(BaseBackend, ICapTorrent):
|
||||||
NAME = 'piratebay'
|
NAME = 'piratebay'
|
||||||
MAINTAINER = 'Julien Veyssier'
|
MAINTAINER = 'Julien Veyssier'
|
||||||
|
|
@ -46,6 +46,8 @@ class PiratebayBackend(BaseBackend, ICapTorrent):
|
||||||
if not torrent:
|
if not torrent:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
if torrent.url is NotAvailable and torrent.magnet:
|
||||||
|
raise MagnetOnly(torrent.magnet)
|
||||||
return self.browser.openurl(torrent.url.encode('utf-8')).read()
|
return self.browser.openurl(torrent.url.encode('utf-8')).read()
|
||||||
|
|
||||||
def iter_torrents(self, pattern):
|
def iter_torrents(self, pattern):
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ class TorrentPage(BasePage):
|
||||||
leech = ch.text
|
leech = ch.text
|
||||||
prev_child_txt = ch.text
|
prev_child_txt = ch.text
|
||||||
elif div.attrib.get('class', '') == 'nfo':
|
elif div.attrib.get('class', '') == 'nfo':
|
||||||
description = div.getchildren()[0].text
|
description = div.getchildren()[0].text.strip()
|
||||||
torrent = Torrent(id, title)
|
torrent = Torrent(id, title)
|
||||||
torrent.url = url or NotAvailable
|
torrent.url = url or NotAvailable
|
||||||
torrent.magnet = magnet
|
torrent.magnet = magnet
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# Copyright(C) 2010-2011 Julien Veyssier
|
# Copyright(C) 2010-2012 Julien Veyssier, Laurent Bachelier
|
||||||
#
|
#
|
||||||
# This file is part of weboob.
|
# This file is part of weboob.
|
||||||
#
|
#
|
||||||
|
|
@ -18,11 +18,25 @@
|
||||||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from weboob.tools.test import BackendTest
|
from weboob.tools.test import BackendTest
|
||||||
|
from weboob.capabilities.torrent import MagnetOnly
|
||||||
|
|
||||||
|
from random import choice
|
||||||
|
|
||||||
class PiratebayTest(BackendTest):
|
class PiratebayTest(BackendTest):
|
||||||
BACKEND = 'piratebay'
|
BACKEND = 'piratebay'
|
||||||
|
|
||||||
def test_torrent(self):
|
def test_torrent(self):
|
||||||
l = list(self.backend.iter_torrents('debian'))
|
# try something popular so we sometimes get a magnet-only torrent
|
||||||
if len(l) > 0:
|
l = list(self.backend.iter_torrents('ubuntu linux'))
|
||||||
self.backend.get_torrent_file(l[0].id)
|
if len(l):
|
||||||
|
torrent = choice(l)
|
||||||
|
full_torrent = self.backend.get_torrent(torrent.id)
|
||||||
|
assert torrent.name
|
||||||
|
assert full_torrent.name == torrent.name
|
||||||
|
# I assume descriptions can be empty
|
||||||
|
assert isinstance(full_torrent.description, basestring)
|
||||||
|
try:
|
||||||
|
assert self.backend.get_torrent_file(torrent.id)
|
||||||
|
except MagnetOnly, e:
|
||||||
|
assert e.magnet.startswith('magnet:')
|
||||||
|
assert e.magnet == full_torrent.magnet
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue