diff --git a/sickbeard/providers/generic.py b/sickbeard/providers/generic.py index e66be74c3925670e71fd9dba5d8d28d597057c13..037253b05acbd7a4f0cffd3e47e5a3208c8e05e3 100644 --- a/sickbeard/providers/generic.py +++ b/sickbeard/providers/generic.py @@ -24,11 +24,13 @@ import os import re import itertools import urllib -import random +from random import shuffle +from base64 import b16encode, b32decode -import sickbeard import requests +from hachoir_parser import createParser +import sickbeard from sickbeard import helpers, classes, logger, db from sickbeard.common import MULTI_EP_RESULT, SEASON_RESULT, USER_AGENT from sickbeard import tvcache @@ -36,15 +38,16 @@ from sickbeard import encodingKludge as ek from sickbeard.exceptions import ex from sickbeard.name_parser.parser import NameParser, InvalidNameException, InvalidShowException from sickbeard.common import Quality +from sickbeard.common import user_agents + -from hachoir_parser import createParser -from base64 import b16encode, b32decode class GenericProvider: NZB = "nzb" TORRENT = "torrent" def __init__(self, name): + # these need to be set in the subclass self.providerType = None self.name = name @@ -71,7 +74,8 @@ class GenericProvider: self.session = requests.Session() - self.headers = {'User-Agent': USER_AGENT} + shuffle(user_agents) + self.headers = {'User-Agent': user_agents[0]} self.btCacheURLS = [ 'http://torcache.net/torrent/{torrent_hash}.torrent', @@ -81,7 +85,7 @@ class GenericProvider: #'http://itorrents.org/torrent/{torrent_hash}.torrent', ] - random.shuffle(self.btCacheURLS) + shuffle(self.btCacheURLS) def getID(self): return GenericProvider.makeID(self.name) diff --git a/sickbeard/providers/libertalia.py b/sickbeard/providers/libertalia.py index 7b84346b390ca9b1867b147505b92f0fabab5e75..97c720b618c816571280dc467f11464567610ef1 100644 --- a/sickbeard/providers/libertalia.py +++ b/sickbeard/providers/libertalia.py @@ -124,8 +124,6 @@ class LibertaliaProvider(generic.TorrentProvider): if any(requests.utils.dict_from_cookiejar(self.session.cookies).values()): return True - self.headers.update({'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/17.0.940.0 Safari/535.8'}) - login_params = {'username': self.username, 'password': self.password } diff --git a/sickbeard/providers/nextgen.py b/sickbeard/providers/nextgen.py index 1931c6625a4c8ff7dfd0913bb89440211c82f0b8..ed4420d58a035b47f7a433fd02737cd447d4b982 100644 --- a/sickbeard/providers/nextgen.py +++ b/sickbeard/providers/nextgen.py @@ -65,8 +65,6 @@ class NextGenProvider(generic.TorrentProvider): self.last_login_check = None self.login_opener = None - self.headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20130519 Firefox/24.0)'} - def isEnabled(self): return self.enabled @@ -96,7 +94,7 @@ class NextGenProvider(generic.TorrentProvider): now = time.time() if self.login_opener and self.last_login_check < (now - 3600): try: - output = self.getURL(self.urls['test'], headers=self.headers) + output = self.getURL(self.urls['test']) if self.loginSuccess(output): self.last_login_check = now return True @@ -110,10 +108,10 @@ class NextGenProvider(generic.TorrentProvider): try: login_params = self.getLoginParams() - data = self.getURL(self.urls['login_page'], headers=self.headers) + data = self.getURL(self.urls['login_page']) with BS4Parser(data) as bs: csrfraw = bs.find('form', attrs={'id': 'login'})['action'] - output = self.getURL(self.urls['base_url'] + csrfraw, headers=self.headers, post_data=login_params) + output = self.getURL(self.urls['base_url'] + csrfraw, post_data=login_params) if self.loginSuccess(output): self.last_login_check = now @@ -192,7 +190,7 @@ class NextGenProvider(generic.TorrentProvider): searchURL = self.urls['search'] % (urllib.quote(search_string.encode('utf-8')), self.categories) logger.log(u"" + self.name + " search page URL: " + searchURL, logger.DEBUG) - data = self.getURL(searchURL, headers=self.headers) + data = self.getURL(searchURL) if not data: continue diff --git a/sickbeard/providers/rarbg.py b/sickbeard/providers/rarbg.py index 4b9b8737d824c67da27fdfc97129a9c8b3a9f35c..3e974e3beba00504b2960965db6be221f4f09576 100644 --- a/sickbeard/providers/rarbg.py +++ b/sickbeard/providers/rarbg.py @@ -85,8 +85,6 @@ class RarbgProvider(generic.TorrentProvider): self.cache = RarbgCache(self) - self.headers = {'User-Agent': USER_AGENT} - def isEnabled(self): return self.enabled @@ -99,7 +97,7 @@ class RarbgProvider(generic.TorrentProvider): resp_json = None - response = self.getURL(self.urls['token'], timeout=30, headers=self.headers, json=True) + response = self.getURL(self.urls['token'], timeout=30, json=True) if not response: logger.log(u'Unable to connect to %s provider.' % self.name, logger.WARNING) return False diff --git a/sickbeard/providers/titansoftv.py b/sickbeard/providers/titansoftv.py index 2d988e24a4a4154ce7a11d3fa024b724281b9a7a..f71fc29f2ea1eef727bfa5c5b91f9e3cdc731daa 100644 --- a/sickbeard/providers/titansoftv.py +++ b/sickbeard/providers/titansoftv.py @@ -75,7 +75,7 @@ class TitansOfTVProvider(generic.TorrentProvider): search_url = self.url + '?' + urllib.urlencode(params) logger.log(u'Search url: %s' % search_url) - parsedJSON = self.getURL(search_url, headers=self.headers, json=True) # do search + parsedJSON = self.getURL(search_url, json=True) # do search if not parsedJSON: logger.log(u'No data returned from ' + self.name, logger.ERROR) diff --git a/sickbeard/providers/xthor.py b/sickbeard/providers/xthor.py index 85e9a8c03ba44c266fa9f71567720c90d5cd3da6..f39771e71ffffa0dcd94bcb1eca3db0543327ff5 100644 --- a/sickbeard/providers/xthor.py +++ b/sickbeard/providers/xthor.py @@ -130,8 +130,6 @@ class XthorProvider(generic.TorrentProvider): if any(requests.utils.dict_from_cookiejar(self.session.cookies).values()): return True - self.headers.update({'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/17.0.940.0 Safari/535.8'}) - login_params = {'username': self.username, 'password': self.password, 'submitme': 'X'