From 00ffa61a25412e3ae20dcb0b2caa4e0f233aa067 Mon Sep 17 00:00:00 2001 From: Anton Bazhanov Date: Sun, 10 Feb 2019 00:06:30 +0300 Subject: [PATCH] added support for casstudio.tv tracker. --- torrt/trackers/casstudio.py | 48 +++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 torrt/trackers/casstudio.py diff --git a/torrt/trackers/casstudio.py b/torrt/trackers/casstudio.py new file mode 100644 index 0000000..e1312f0 --- /dev/null +++ b/torrt/trackers/casstudio.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +import logging + +import six + +from torrt.base_tracker import GenericPrivateTracker +from torrt.utils import TrackerClassesRegistry + + +LOGGER = logging.getLogger(__name__) + + +class CasstudioTracker(GenericPrivateTracker): + """This class implements .torrent files downloads for https://casstudio.tv/ tracker.""" + + alias = 'casstudio.tv' + login_url = 'https://%(domain)s/ucp.php?mode=login' + auth_cookie_name = 'phpbb3_lawmj_sid' + auth_qs_param_name = 'mode' + + def get_login_form_data(self, login, password): + index_page = self.get_response(url=(self.login_url % {'domain': self.alias})) + soup_response = self.make_page_soup(index_page.text) + sid = soup_response.find(attrs={'name': 'sid'}).get('value') + self.cookies = index_page.cookies + self.login_url += '&sid=%s' % sid + return {'username': login, 'password': password, 'autologin': 'on', + 'redirect': 'index.php', 'sid': sid, 'login': six.u('Вход')} + + def get_download_link(self, url): + """Tries to find .torrent file download link at forum thread page and return that one.""" + page_soup = self.get_response( + url, referer=url, cookies=self.cookies, query_string=self.query_string, as_soup=True + ) + + domain = self.extract_domain(url) + + is_anonymous = self.find_links(url, page_soup, '\./ucp\.php\?mode=login') is not None + if is_anonymous: + self.login(domain) + page_soup = self.get_response( + url, referer=url, cookies=self.cookies, query_string=self.query_string, as_soup=True + ) + download_link = self.find_links(url, page_soup, '\./download/file\.php\?id=\d+$') + return download_link + + +TrackerClassesRegistry.add(CasstudioTracker)