diff --git a/gui/slick/images/providers/french-adn.png b/gui/slick/images/providers/french_adn.png
similarity index 100%
rename from gui/slick/images/providers/french-adn.png
rename to gui/slick/images/providers/french_adn.png
diff --git a/gui/slick/images/providers/french-adn_com.png b/gui/slick/images/providers/french_adn_com.png
similarity index 100%
rename from gui/slick/images/providers/french-adn_com.png
rename to gui/slick/images/providers/french_adn_com.png
diff --git a/sickbeard/__init__.py b/sickbeard/__init__.py
index e6fe03748a..b0beeef970 100644
--- a/sickbeard/__init__.py
+++ b/sickbeard/__init__.py
@@ -18,7 +18,6 @@
# along with SickRage. If not, see .
# pylint: disable=too-many-lines
-import webbrowser
import datetime
import socket
import os
@@ -2177,6 +2176,13 @@ def save_config(): # pylint: disable=too-many-statements, too-many-branches
def launchBrowser(protocol='http', startPort=None, web_root='/'):
+
+ try:
+ import webbrowser
+ except ImportError:
+ logger.log(u"Unable to load the webbrowser module, cannot launch the browser.", logger.WARNING)
+ return
+
if not startPort:
startPort = WEB_PORT
diff --git a/sickbeard/clients/generic.py b/sickbeard/clients/generic.py
index 8f79e970d9..469d54e7ca 100644
--- a/sickbeard/clients/generic.py
+++ b/sickbeard/clients/generic.py
@@ -6,7 +6,7 @@
from base64 import b16encode, b32decode
import sickbeard
-from sickbeard import logger
+from sickbeard import logger, helpers
from bencode import bencode, bdecode
import requests
import cookielib
@@ -27,7 +27,7 @@ def __init__(self, name, host=None, username=None, password=None):
self.response = None
self.auth = None
self.last_time = time.time()
- self.session = requests.Session()
+ self.session = helpers.make_session()
self.session.auth = (self.username, self.password)
self.session.cookies = cookielib.CookieJar()
diff --git a/sickbeard/helpers.py b/sickbeard/helpers.py
index 1d99be40c1..b27664b2e2 100644
--- a/sickbeard/helpers.py
+++ b/sickbeard/helpers.py
@@ -58,6 +58,8 @@
from sickrage.helper.exceptions import ex
from sickrage.show.Show import Show
from cachecontrol import CacheControl
+# from httpcache import CachingHTTPAdapter
+
from itertools import izip, cycle
import shutil
@@ -1381,6 +1383,14 @@ def _getTempDir():
return ek(os.path.join, tempfile.gettempdir(), "sickrage-%s" % uid)
+def make_session():
+ session = requests.Session()
+ # session.mount('http://', CachingHTTPAdapter())
+ # session.mount('http://', CachingHTTPAdapter())
+ session = CacheControl(sess=session, cache_etags=True)
+ return session
+
+
def _setUpSession(session, headers):
"""
Returns a session initialized with default cache and parameter settings
@@ -1390,9 +1400,6 @@ def _setUpSession(session, headers):
:return: session object
"""
- # request session
- session = CacheControl(sess=session, cache_etags=True)
-
# request session clear residual referer
# pylint: disable=superfluous-parens
# These extra parens are necessary!
@@ -1760,7 +1767,7 @@ def getDiskSpaceUsage(diskPath=None):
def getTVDBFromID(indexer_id, indexer): # pylint:disable=too-many-return-statements
- session = requests.Session()
+ session = make_session()
tvdb_id = ''
if indexer == 'IMDB':
url = "http://www.thetvdb.com/api/GetSeriesByRemoteID.php?imdbid=%s" % indexer_id
diff --git a/sickbeard/imdbPopular.py b/sickbeard/imdbPopular.py
index 68d5ceb642..73dc5f5387 100644
--- a/sickbeard/imdbPopular.py
+++ b/sickbeard/imdbPopular.py
@@ -2,7 +2,6 @@
import re
import os
import posixpath
-import requests
from bs4 import BeautifulSoup
from datetime import date
@@ -25,7 +24,7 @@ def __init__(self):
'year': '%s,%s' % (date.today().year - 1, date.today().year + 1)
}
- self.session = requests.Session()
+ self.session = helpers.make_session()
def fetch_popular_shows(self):
"""Get popular show information from IMDB"""
diff --git a/sickbeard/indexers/indexer_config.py b/sickbeard/indexers/indexer_config.py
index 10b1e90309..5effb5c321 100644
--- a/sickbeard/indexers/indexer_config.py
+++ b/sickbeard/indexers/indexer_config.py
@@ -1,17 +1,19 @@
# coding=utf-8
from tvdb_api.tvdb_api import Tvdb
-import requests
+from sickbeard import helpers
initConfig = {
- 'valid_languages': ["da", "fi", "nl", "de", "it", "es", "fr", "pl", "hu", "el", "tr",
- "ru", "he", "ja", "pt", "zh", "cs", "sl", "hr", "ko", "en", "sv", "no"
- ],
- 'langabbv_to_id': {'el': 20, 'en': 7, 'zh': 27,
- 'it': 15, 'cs': 28, 'es': 16, 'ru': 22, 'nl': 13, 'pt': 26, 'no': 9,
- 'tr': 21, 'pl': 18, 'fr': 17, 'hr': 31, 'de': 14, 'da': 10, 'fi': 11,
- 'hu': 19, 'ja': 25, 'he': 24, 'ko': 32, 'sv': 8, 'sl': 30
- }
+ 'valid_languages': [
+ "da", "fi", "nl", "de", "it", "es", "fr", "pl", "hu", "el", "tr",
+ "ru", "he", "ja", "pt", "zh", "cs", "sl", "hr", "ko", "en", "sv", "no"
+ ],
+ 'langabbv_to_id': {
+ 'el': 20, 'en': 7, 'zh': 27,
+ 'it': 15, 'cs': 28, 'es': 16, 'ru': 22, 'nl': 13, 'pt': 26, 'no': 9,
+ 'tr': 21, 'pl': 18, 'fr': 17, 'hr': 31, 'de': 14, 'da': 10, 'fi': 11,
+ 'hu': 19, 'ja': 25, 'he': 24, 'ko': 32, 'sv': 8, 'sl': 30
+ }
}
INDEXER_TVDB = 1
@@ -22,11 +24,12 @@
'id': INDEXER_TVDB,
'name': 'theTVDB',
'module': Tvdb,
- 'api_params': {'apikey': 'F9C450E78D99172E',
- 'language': 'en',
- 'useZip': True,
- },
- 'session': requests.Session(),
+ 'api_params': {
+ 'apikey': 'F9C450E78D99172E',
+ 'language': 'en',
+ 'useZip': True,
+ },
+ 'session': helpers.make_session(),
'trakt_id': 'tvdb_id',
'xem_origin': 'tvdb',
'icon': 'thetvdb16.png',
diff --git a/sickbeard/metadata/helpers.py b/sickbeard/metadata/helpers.py
index 972dc5cf5e..d721797e8c 100644
--- a/sickbeard/metadata/helpers.py
+++ b/sickbeard/metadata/helpers.py
@@ -20,9 +20,8 @@
from sickbeard import helpers
from sickbeard import logger
-import requests
-meta_session = requests.Session()
+meta_session = helpers.make_session()
def getShowImage(url, imgNum=None):
diff --git a/sickbeard/network_timezones.py b/sickbeard/network_timezones.py
index 78e3e302cb..bdfa506f38 100644
--- a/sickbeard/network_timezones.py
+++ b/sickbeard/network_timezones.py
@@ -20,7 +20,6 @@
import re
import datetime
-import requests
from dateutil import tz
from sickbeard import db
@@ -39,8 +38,8 @@
def update_network_dict():
"""Update timezone information from SR repositories"""
- url = 'https://raw.githubusercontent.com/pymedusa/sickrage.github.io/master/sb_network_timezones/network_timezones.txt'
- url_data = helpers.getURL(url, session=requests.Session(), returns='text')
+ url = 'http://raw.githubusercontent.com/pymedusa/sickrage.github.io/master/sb_network_timezones/network_timezones.txt'
+ url_data = helpers.getURL(url, session=helpers.make_session(), returns='text')
if not url_data:
logger.log(u'Updating network timezones failed, this can happen from time to time. URL: %s' % url, logger.WARNING)
load_network_dict()
diff --git a/sickbeard/notifiers/plex.py b/sickbeard/notifiers/plex.py
index 9855e9217b..e6ad745d79 100644
--- a/sickbeard/notifiers/plex.py
+++ b/sickbeard/notifiers/plex.py
@@ -19,7 +19,6 @@
# along with SickRage. If not, see .
import re
-import requests
try:
import xml.etree.cElementTree as etree
except ImportError:
@@ -27,7 +26,7 @@
import sickbeard
from sickbeard import logger, common
-from sickbeard.helpers import getURL
+from sickbeard.helpers import getURL, make_session
from sickrage.helper.exceptions import ex
@@ -40,7 +39,7 @@ def __init__(self):
'X-Plex-Client-Identifier': sickbeard.common.USER_AGENT,
'X-Plex-Version': '2016.02.10'
}
- self.session = requests.Session()
+ self.session = make_session()
@staticmethod
def _notify_pht(message, title='SickRage', host=None, username=None, password=None, force=False): # pylint: disable=too-many-arguments
diff --git a/sickbeard/notifiers/pushbullet.py b/sickbeard/notifiers/pushbullet.py
index 906a696234..c0dc5ebb04 100644
--- a/sickbeard/notifiers/pushbullet.py
+++ b/sickbeard/notifiers/pushbullet.py
@@ -19,11 +19,10 @@
# along with SickRage. If not, see .
import json
-import requests
import traceback
import sickbeard
-from sickbeard import logger
+from sickbeard import logger, helpers
from sickbeard.common import notifyStrings
from sickbeard.common import NOTIFY_SNATCH
from sickbeard.common import NOTIFY_DOWNLOAD
@@ -35,7 +34,7 @@
class Notifier(object):
- session = requests.Session()
+ session = helpers.make_session()
TEST_EVENT = 'Test'
def __init__(self):
diff --git a/sickbeard/nzbSplitter.py b/sickbeard/nzbSplitter.py
index a3d25d15d4..86a177af67 100644
--- a/sickbeard/nzbSplitter.py
+++ b/sickbeard/nzbSplitter.py
@@ -20,7 +20,6 @@
# pylint: disable=line-too-long
-import requests # pylint: disable=import-error
import re
try:
@@ -150,7 +149,7 @@ def split_result(obj):
:param obj: to search for results
:return: a list of episode objects or an empty list
"""
- url_data = helpers.getURL(obj.url, session=requests.Session(), returns='content')
+ url_data = helpers.getURL(obj.url, session=helpers.make_session(), returns='content')
if url_data is None:
logger.log(u"Unable to load url " + obj.url + ", can't download season NZB", logger.ERROR)
return []
diff --git a/sickbeard/postProcessor.py b/sickbeard/postProcessor.py
index f56482c34a..18d01a7896 100644
--- a/sickbeard/postProcessor.py
+++ b/sickbeard/postProcessor.py
@@ -421,7 +421,7 @@ def _int_copy(cur_file_path, new_file_path):
helpers.copyFile(cur_file_path, new_file_path)
helpers.chmodAsParent(new_file_path)
except (IOError, OSError) as e:
- logger.log(u"Unable to copy file " + cur_file_path + " to " + new_file_path + ": " + ex(e), logger.ERROR)
+ self._log(u"Unable to copy file " + cur_file_path + " to " + new_file_path + ": " + ex(e), logger.ERROR)
raise
self._combined_file_operation(file_path, new_path, new_base_name, associated_files, action=_int_copy,
diff --git a/sickbeard/scene_exceptions.py b/sickbeard/scene_exceptions.py
index 291b874bc8..44964c800f 100644
--- a/sickbeard/scene_exceptions.py
+++ b/sickbeard/scene_exceptions.py
@@ -295,9 +295,7 @@ def _anidb_exceptions_fetcher():
setLastRefresh('anidb')
return anidb_exception_dict
-
-xem_session = requests.Session()
-
+xem_session = helpers.make_session()
def _xem_exceptions_fetcher():
if shouldRefresh('xem'):
diff --git a/sickbeard/showUpdater.py b/sickbeard/showUpdater.py
index b8b10b962a..d226dc0e68 100644
--- a/sickbeard/showUpdater.py
+++ b/sickbeard/showUpdater.py
@@ -40,7 +40,7 @@ def __init__(self):
self.lock = threading.Lock()
self.amActive = False
- self.session = requests.Session()
+ self.session = helpers.make_session()
def run(self, force=False): # pylint: disable=unused-argument, too-many-locals, too-many-branches, too-many-statements
diff --git a/sickbeard/versionChecker.py b/sickbeard/versionChecker.py
index 4017a13ba1..6740fea253 100644
--- a/sickbeard/versionChecker.py
+++ b/sickbeard/versionChecker.py
@@ -27,7 +27,6 @@
import traceback
import time
import datetime
-import requests
import shutil
import shutil_custom
@@ -58,7 +57,7 @@ def __init__(self):
elif self.install_type == 'source':
self.updater = SourceUpdateManager()
- self.session = requests.Session()
+ self.session = helpers.make_session()
def run(self, force=False):
@@ -701,7 +700,7 @@ def __init__(self):
self._newest_commit_hash = None
self._num_commits_behind = 0
- self.session = requests.Session()
+ self.session = helpers.make_session()
@staticmethod
def _find_installed_branch():
diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py
index 499d3d1cb6..f6b4992538 100644
--- a/sickbeard/webserve.py
+++ b/sickbeard/webserve.py
@@ -1227,7 +1227,7 @@ def getDBcompare():
def displayShow(self, show=None):
# todo: add more comprehensive show validation
try:
- show = int(show) # fails if show id ends in a period PyMedusa/SickRage-issues#65
+ show = int(show) # fails if show id ends in a period SickRage/sickrage-issues#65
showObj = Show.find(sickbeard.showList, show)
except (ValueError, TypeError):
return self._genericMessage("Error", "Invalid show ID: %s" % str(show))
@@ -2241,7 +2241,7 @@ def index(self):
changes = helpers.getURL('https://api.pymedusa.com/changelog.md', session=requests.Session(), returns='text')
except Exception:
logger.log(u'Could not load changes from repo, giving a link!', logger.DEBUG)
- changes = 'Could not load changes from the repo. [Click here for CHANGES.md](https://raw.githubusercontent.com/pymedusa/sickrage.github.io/master/sickrage-news/CHANGES.md)'
+ changes = 'Could not load changes from the repo. [Click here for CHANGES.md](https://api.pymedusa.com/CHANGES.md)'
t = PageTemplate(rh=self, filename="markdown.mako")
data = markdown2.markdown(changes if changes else "The was a problem connecting to github, please refresh and try again", extras=['header-ids'])
diff --git a/sickrage/show/recommendations/anidb.py b/sickrage/show/recommendations/anidb.py
index d91c33334b..0d3fd8a36f 100644
--- a/sickrage/show/recommendations/anidb.py
+++ b/sickrage/show/recommendations/anidb.py
@@ -1,15 +1,16 @@
# coding=utf-8
-import requests
from anidbhttp import anidbquery
from anidbhttp.query import QUERY_HOT
+from sickbeard import helpers
from sickrage.helper.common import try_int
from recommended import RecommendedShow
+
class AnidbPopular(object):
def __init__(self):
self.cache_subfolder = __name__.split('.')[-1] if '.' in __name__ else __name__
- self.session = requests.Session()
+ self.session = helpers.make_session()
def fetch_latest_hot_shows(self):
"""Get popular show information from IMDB"""
@@ -21,7 +22,7 @@ def fetch_latest_hot_shows(self):
for show in shows:
try:
recommended_show = RecommendedShow(show.id, show.titles['x-jat'][0], 1, show.tvdbid, cache_subfolder=self.cache_subfolder,
- rating=str(show.ratings['temporary']['rating']), votes=str(try_int(show.ratings['temporary']['count'],0)), image_href=show.url)
+ rating=str(show.ratings['temporary']['rating']), votes=str(try_int(show.ratings['temporary']['count'], 0)), image_href=show.url)
# Check cache or get and save image
recommended_show.cache_image("http://img7.anidb.net/pics/anime/{0}".format(show.image_path))
diff --git a/sickrage/show/recommendations/imdb.py b/sickrage/show/recommendations/imdb.py
index 99b83d1923..46b8e241ac 100644
--- a/sickrage/show/recommendations/imdb.py
+++ b/sickrage/show/recommendations/imdb.py
@@ -2,7 +2,6 @@
import re
import os
import posixpath
-import requests
from bs4 import BeautifulSoup
from datetime import date
@@ -25,7 +24,7 @@ def __init__(self):
'year': '%s,%s' % (date.today().year - 1, date.today().year + 1)
}
- self.session = requests.Session()
+ self.session = helpers.make_session()
def fetch_popular_shows(self):
"""Get popular show information from IMDB"""
diff --git a/sickrage/show/recommendations/recommended.py b/sickrage/show/recommendations/recommended.py
index 3afbad3ba4..f68ac12fe8 100644
--- a/sickrage/show/recommendations/recommended.py
+++ b/sickrage/show/recommendations/recommended.py
@@ -23,7 +23,6 @@
import os
import posixpath
-import requests
import sickbeard
from sickbeard import helpers
@@ -62,7 +61,7 @@ def __init__(self, show_id, title, indexer, indexer_id, cache_subfolder=u'recomm
# Check if the show is currently already in the db
self.show_in_list = self.indexer_id in {show.indexerid for show in sickbeard.showList if show.indexerid}
- self.session = requests.Session()
+ self.session = helpers.make_session()
def cache_image(self, image_url):
"""
diff --git a/tests/torrent_tests.py b/tests/torrent_tests.py
index 11df7c31a2..6abca544e3 100644
--- a/tests/torrent_tests.py
+++ b/tests/torrent_tests.py
@@ -31,10 +31,9 @@
sys.path.insert(1, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from bs4 import BeautifulSoup
-from sickbeard.helpers import getURL
+from sickbeard.helpers import getURL, make_session
from sickbeard.providers.bitcannon import BitCannonProvider
from sickbeard.tv import TVEpisode, TVShow
-import requests # pylint: disable=import-error
import tests.test_lib as test
import urlparse
@@ -81,7 +80,7 @@ def test_search(): # pylint: disable=too-many-locals
url = 'http://kickass.to/'
search_url = 'http://kickass.to/usearch/American%20Dad%21%20S08%20-S08E%20category%3Atv/?field=seeders&sorder=desc'
- html = getURL(search_url, session=requests.Session(), returns='text')
+ html = getURL(search_url, session=make_session(), returns='text')
if not html:
return