diff --git a/.gitignore b/.gitignore index 33ad38e9..59e5ad43 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -# SB User Related # ###################### +# SB User Related # cache/* cache.db* config.ini* @@ -11,18 +11,18 @@ server.crt server.key restore/ -# SB Test Related # ###################### +# SB Test Related # tests/Logs/* tests/sickbeard.* tests/cache.db -# Compiled source # ###################### +# Compiled source # *.py[co] -# IDE specific # ###################### +# IDE specific # *.bak *.tmp *.wpr @@ -35,8 +35,8 @@ tests/cache.db Session.vim .ropeproject/* -# OS generated files # ###################### +# OS generated files # .Spotlight-V100 .Trashes .DS_Store diff --git a/.travis.yml b/.travis.yml index c184a875..5bbbbf00 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,8 @@ python: install: - pip install cheetah + - pip install coveralls before_script: cd ./tests -script: python all_tests.py \ No newline at end of file +script: coverage run --source=.. --omit=../lib/*,../tornado/* all_tests.py +after_success: coveralls \ No newline at end of file diff --git a/CHANGES.md b/CHANGES.md index a9457087..4c49edc5 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,115 @@ +### 0.10.0 (2015-08-06 11:05:00 UTC) + +* Remove EZRSS provider +* Update Tornado webserver to 4.2 (fdfaf3d) +* Update change to suppress reporting of Tornado exception error 1 to updated package (ref:hacks.txt) +* Update fix for API response header for JSON content type and the return of JSONP data to updated package (ref:hacks.txt) +* Update Requests library 2.6.2 to 2.7.0 (8b5e457) +* Update change to suppress HTTPS verification InsecureRequestWarning to updated package (ref:hacks.txt) +* Change to consolidate cache database migration code +* Change to only rebuild namecache on show update instead of on every search +* Change to allow file moving across partition +* Add removal of old entries from namecache on show deletion +* Add Hallmark and specific ITV logos, remove logo of non-english Comedy Central Family +* Fix provider TD failing to find episodes of air by date shows +* Fix provider SCC failing to find episodes of air by date shows +* Fix provider SCC searching propers +* Fix provider SCC stop snatching releases for episodes already completed +* Fix provider SCC handle null server responses +* Change provider SCC remove 1 of 3 requests per search to save 30% time +* Change provider SCC login process to use General Config/Advanced/Proxy host setting +* Change provider SCD PEP8 and code convention cleanup +* Change provider HDB code simplify and PEP8 +* Change provider IPT only decode unicode search strings +* Change provider IPT login process to use General Config/Advanced/Proxy host setting +* Change provider TB logo icon used on Config/Search Providers +* Change provider TB PEP8 and code convention cleanup +* Change provider TB login process to use General Config/Advanced/Proxy host setting +* Remove useless webproxies from provider TPB as they fail for one reason or another +* Change provider TPB to use mediaExtensions from common instead of hard-coded private list +* Add new tld variants to provider TPB +* Add test for authenticity to provider TPB to notify of 3rd party block +* Change provider TD logo icon used on Config/Search Providers +* Change provider TD login process to use General Config/Advanced/Proxy host setting +* Change provider BTN code simplify and PEP8 +* Change provider BTS login process to use General Config/Advanced/Proxy host setting +* Change provider FSH login process to use General Config/Advanced/Proxy host setting +* Change provider RSS torrent code to use General Config/Advanced/Proxy host setting, simplify and PEP8 +* Change provider Wombles's PEP8 and code convention cleanup +* Change provider Womble's use SSL +* Change provider KAT remove dead url +* Change provider KAT to use mediaExtensions from common instead of private list +* Change provider KAT provider PEP8 and code convention cleanup +* Change refactor and code simplification for torrent and newznab providers +* Change refactor SCC to use torrent provider simplification and PEP8 +* Change refactor SCD to use torrent provider simplification +* Change refactor TB to use torrent provider simplification and PEP8 +* Change refactor TBP to use torrent provider simplification and PEP8 +* Change refactor TD to use torrent provider simplification and PEP8 +* Change refactor TL to use torrent provider simplification and PEP8 +* Change refactor BTS to use torrent provider simplification and PEP8 +* Change refactor FSH to use torrent provider simplification and PEP8 +* Change refactor IPT to use torrent provider simplification and PEP8 +* Change refactor KAT to use torrent provider simplification and PEP8 +* Change refactor TOTV to use torrent provider simplification and PEP8 +* Remove HDTorrents torrent provider +* Remove NextGen torrent provider +* Add Rarbg torrent provider +* Add MoreThan torrent provider +* Add AlphaRatio torrent provider +* Add PiSexy torrent provider +* Add Strike torrent provider +* Add TorrentShack torrent provider +* Add BeyondHD torrent provider +* Add GFTracker torrent provider +* Add TtN torrent provider +* Add GTI torrent provider +* Fix getManualSearchStatus: object has no attribute 'segment' +* Change handling of general HTTP error response codes to prevent issues +* Add handling for CloudFlare custom HTTP response codes +* Fix to correctly load local libraries instead of system installed libraries +* Update PyNMA to hybrid v1.0 +* Change first run after install to set up the main db to the current schema instead of upgrading +* Change don't create a backup from an initial zero byte main database file, PEP8 and code tidy up +* Fix show list view when no shows exist and "Group show lists shows into" is set to anything other than "One Show List" +* Fix fault matching air by date shows by using correct episode/season strings in find search results +* Change add 'hevc', 'x265' and some langs to Config Search/Episode Search/Ignore result with any word +* Change NotifyMyAndroid to its new web location +* Update feedparser library 5.1.3 to 5.2.0 (8c62940) +* Remove feedcache implementation and library +* Add coverage testing and coveralls support +* Add py2/3 regression testing for exception clauses +* Change py2 exception clauses to py2/3 compatible clauses +* Change py2 print statements to py2/3 compatible functions +* Change py2 octal literals into the new py2/3 syntax +* Change py2 iteritems to py2/3 compatible statements using six library +* Change py2 queue, httplib, cookielib and xmlrpclib to py2/3 compatible calls using six +* Change py2 file and reload functions to py2/3 compatible open and reload_module functions +* Change Kodi notifier to use requests as opposed to urllib +* Change to consolidate scene exceptions and name cache code +* Change check_url function to use requests instead of httplib library +* Update Six compatibility library 1.5.2 to 1.9.0 (8a545f4) +* Update SimpleJSON library 2.0.9 to 3.7.3 (0bcdf20) +* Update xmltodict library 0.9.0 to 0.9.2 (579a005) +* Update dateutil library 2.2 to 2.4.2 (a6b8925) +* Update ConfigObj library 4.6.0 to 5.1.0 (a68530a) +* Update Beautiful Soup to 4.3.2 (r353) +* Update jsonrpclib library r20 to (b59217c) +* Change cachecontrol library to ensure cache file exists before attempting delete +* Fix saving root dirs +* Change pushbullet from urllib2 to requests +* Change to make pushbullet error messages clearer +* Change pyNMA use of urllib to requests (ref:hacks.txt) +* Change Trakt url to fix baseline uses (e.g. add from trending) +* Fix edit on show page for shows that have anime enabled in mass edit +* Fix issue parsing items in ToktoToshokan provider +* Change to only show option "End upgrade on first match" on edit show page if quality custom is selected +* Change label "Show is grouped in" in edit show page to "Show is in group" and move the section higher +* Fix post processing of anime with version tags +* Change accept SD titles that contain audio quality +* Change readme.md + + ### 0.9.1 (2015-05-25 03:03:00 UTC) * Fix erroneous multiple downloads of torrent files which causes snatches to fail under certain conditions @@ -64,7 +176,7 @@ * Change disable the Force buttons on the Manage Searches page while a search is running * Change staggered periods of testing and updating of all shows "ended" status up to 460 days * Change "Archive" to "Upgrade to" in Edit show and other places and improve related texts for clarity -* Fix history consolidation to only update an episode status if the history disagrees with the status. +* Fix history consolidation to only update an episode status if the history disagrees with the status ### 0.8.3 (2015-04-25 08:48:00 UTC) diff --git a/HACKS.txt b/HACKS.txt index cbae91d6..5aea55dc 100644 --- a/HACKS.txt +++ b/HACKS.txt @@ -3,3 +3,5 @@ Libs with customisations... /tornado /lib/requests/packages/urllib3/connectionpool.py /lib/requests/packages/urllib3/util/ssl_.py +/lib/cachecontrol/caches/file_cache.py +/lib/pynma/pynma.py \ No newline at end of file diff --git a/SickBeard.py b/SickBeard.py index df572169..932886fa 100755 --- a/SickBeard.py +++ b/SickBeard.py @@ -18,6 +18,7 @@ # along with SickGear. If not, see . # Check needed software dependencies to nudge users to fix their setup +from __future__ import print_function from __future__ import with_statement import time @@ -32,7 +33,7 @@ import threading import getopt if sys.version_info < (2, 6): - print 'Sorry, requires Python 2.6 or 2.7.' + print('Sorry, requires Python 2.6 or 2.7.') sys.exit(1) try: @@ -41,13 +42,14 @@ try: if Cheetah.Version[0] != '2': raise ValueError except ValueError: - print 'Sorry, requires Python module Cheetah 2.1.0 or newer.' + print('Sorry, requires Python module Cheetah 2.1.0 or newer.') sys.exit(1) except: - print 'The Python module Cheetah is required' + print('The Python module Cheetah is required') sys.exit(1) -sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), 'lib'))) +sys.path.insert(1, os.path.abspath(os.path.join(os.path.dirname(__file__), 'lib'))) +from lib.six import moves # We only need this for compiling an EXE and I will just always do that on 2.6+ if sys.hexversion >= 0x020600F0: @@ -139,15 +141,15 @@ class SickGear(object): sickbeard.SYS_ENCODING = 'UTF-8' if not hasattr(sys, 'setdefaultencoding'): - reload(sys) + moves.reload_module(sys) try: # pylint: disable=E1101 # On non-unicode builds this will raise an AttributeError, if encoding type is not valid it throws a LookupError sys.setdefaultencoding(sickbeard.SYS_ENCODING) except: - print 'Sorry, you MUST add the SickGear folder to the PYTHONPATH environment variable' - print 'or find another way to force Python to use %s for string encoding.' % sickbeard.SYS_ENCODING + print('Sorry, you MUST add the SickGear folder to the PYTHONPATH environment variable') + print('or find another way to force Python to use %s for string encoding.' % sickbeard.SYS_ENCODING) sys.exit(1) # Need console logging for SickBeard.py and SickBeard-console.exe @@ -231,7 +233,7 @@ class SickGear(object): else: if self.consoleLogging: - print u'Not running in daemon mode. PID file creation disabled' + print(u'Not running in daemon mode. PID file creation disabled') self.CREATEPID = False @@ -242,7 +244,7 @@ class SickGear(object): # Make sure that we can create the data dir if not os.access(sickbeard.DATA_DIR, os.F_OK): try: - os.makedirs(sickbeard.DATA_DIR, 0744) + os.makedirs(sickbeard.DATA_DIR, 0o744) except os.error: sys.exit(u'Unable to create data directory: %s Exiting.' % sickbeard.DATA_DIR) @@ -260,11 +262,11 @@ class SickGear(object): os.chdir(sickbeard.DATA_DIR) if self.consoleLogging: - print u'Starting up SickGear from %s' % sickbeard.CONFIG_FILE + print(u'Starting up SickGear from %s' % sickbeard.CONFIG_FILE) # Load the config and publish it to the sickbeard package if not os.path.isfile(sickbeard.CONFIG_FILE): - print u'Unable to find "%s", all settings will be default!' % sickbeard.CONFIG_FILE + print(u'Unable to find "%s", all settings will be default!' % sickbeard.CONFIG_FILE) sickbeard.CFG = ConfigObj(sickbeard.CONFIG_FILE) @@ -272,12 +274,12 @@ class SickGear(object): if CUR_DB_VERSION > 0: if CUR_DB_VERSION < MIN_DB_VERSION: - print u'Your database version (%s) is too old to migrate from with this version of SickGear' \ - % CUR_DB_VERSION + print(u'Your database version (%s) is too old to migrate from with this version of SickGear' \ + % CUR_DB_VERSION) sys.exit(u'Upgrade using a previous version of SG first, or start with no database file to begin fresh') if CUR_DB_VERSION > MAX_DB_VERSION: - print u'Your database version (%s) has been incremented past what this version of SickGear supports' \ - % CUR_DB_VERSION + print(u'Your database version (%s) has been incremented past what this version of SickGear supports' \ + % CUR_DB_VERSION) sys.exit( u'If you have used other forks of SG, your database may be unusable due to their modifications') @@ -361,6 +363,10 @@ class SickGear(object): # refresh network timezones network_timezones.update_network_dict() + # load all ids from xem + startup_background_tasks = threading.Thread(name='FETCH-XEMDATA', target=sickbeard.scene_exceptions.get_xem_ids) + startup_background_tasks.start() + # sure, why not? if sickbeard.USE_FAILED_DOWNLOADS: failed_history.trimHistory() @@ -387,7 +393,7 @@ class SickGear(object): pid = os.fork() # @UndefinedVariable - only available in UNIX if pid != 0: os._exit(0) - except OSError, e: + except OSError as e: sys.stderr.write('fork #1 failed: %d (%s)\n' % (e.errno, e.strerror)) sys.exit(1) @@ -402,7 +408,7 @@ class SickGear(object): pid = os.fork() # @UndefinedVariable - only available in UNIX if pid != 0: os._exit(0) - except OSError, e: + except OSError as e: sys.stderr.write('fork #2 failed: %d (%s)\n' % (e.errno, e.strerror)) sys.exit(1) @@ -411,8 +417,8 @@ class SickGear(object): pid = str(os.getpid()) logger.log(u'Writing PID: %s to %s' % (pid, self.PIDFILE)) try: - file(self.PIDFILE, 'w').write('%s\n' % pid) - except IOError, e: + open(self.PIDFILE, 'w').write('%s\n' % pid) + except IOError as e: logger.log_error_and_exit( u'Unable to write PID file: %s Error: %s [%s]' % (self.PIDFILE, e.strerror, e.errno)) @@ -421,9 +427,9 @@ class SickGear(object): sys.stderr.flush() devnull = getattr(os, 'devnull', '/dev/null') - stdin = file(devnull, 'r') - stdout = file(devnull, 'a+') - stderr = file(devnull, 'a+') + stdin = open(devnull, 'r') + stdout = open(devnull, 'a+') + stderr = open(devnull, 'a+') os.dup2(stdin.fileno(), sys.stdin.fileno()) os.dup2(stdout.fileno(), sys.stdout.fileno()) os.dup2(stderr.fileno(), sys.stderr.fileno()) @@ -456,7 +462,7 @@ class SickGear(object): curShow = TVShow(int(sqlShow['indexer']), int(sqlShow['indexer_id'])) curShow.nextEpisode() sickbeard.showList.append(curShow) - except Exception, e: + except Exception as e: logger.log( u'There was an error creating the show in %s: %s' % (sqlShow['location'], str(e).decode('utf-8', 'replace')), diff --git a/autoProcessTV/autoProcessTV.cfg.sample b/autoProcessTV/autoProcessTV.cfg.sample index 7a213d29..15dc900c 100644 --- a/autoProcessTV/autoProcessTV.cfg.sample +++ b/autoProcessTV/autoProcessTV.cfg.sample @@ -1,7 +1,7 @@ -[SickBeard] -host=localhost -port=8081 -username= -password= -web_root= +[SickBeard] +host=localhost +port=8081 +username= +password= +web_root= ssl=0 \ No newline at end of file diff --git a/autoProcessTV/autoProcessTV.py b/autoProcessTV/autoProcessTV.py index 95e26623..adf1e0d8 100755 --- a/autoProcessTV/autoProcessTV.py +++ b/autoProcessTV/autoProcessTV.py @@ -18,14 +18,15 @@ # You should have received a copy of the GNU General Public License # along with SickGear. If not, see . +from __future__ import print_function from __future__ import with_statement import os.path import sys sickbeardPath = os.path.split(os.path.split(sys.argv[0])[0])[0] -sys.path.append(os.path.join(sickbeardPath, 'lib')) -sys.path.append(sickbeardPath) +sys.path.insert(1, os.path.join(sickbeardPath, 'lib')) +sys.path.insert(1, sickbeardPath) try: import requests @@ -132,7 +133,7 @@ def processEpisode(dir_to_process, org_NZB_name=None, status=None): sess.post(login_url, data={'username': username, 'password': password}, stream=True, verify=False) result = sess.get(url, params=params, stream=True, verify=False) if result.status_code == 401: - print 'Verify and use correct username and password in autoProcessTV.cfg' + print('Verify and use correct username and password in autoProcessTV.cfg') else: for line in result.iter_lines(): if line: diff --git a/autoProcessTV/hellaToSickBeard.py b/autoProcessTV/hellaToSickBeard.py index 07d4426d..2a677ed8 100755 --- a/autoProcessTV/hellaToSickBeard.py +++ b/autoProcessTV/hellaToSickBeard.py @@ -19,12 +19,13 @@ # along with SickGear. If not, see . +from __future__ import print_function import sys import autoProcessTV if len(sys.argv) < 4: - print 'No folder supplied - is this being called from HellaVCR?' + print('No folder supplied - is this being called from HellaVCR?') sys.exit() else: autoProcessTV.processEpisode(sys.argv[3], sys.argv[2]) diff --git a/autoProcessTV/mediaToSickbeard.py b/autoProcessTV/mediaToSickbeard.py index 1329424e..24174365 100755 --- a/autoProcessTV/mediaToSickbeard.py +++ b/autoProcessTV/mediaToSickbeard.py @@ -1,4 +1,5 @@ #!/usr/bin/env python2 +from __future__ import print_function import sys import os import time @@ -6,8 +7,8 @@ import ConfigParser import logging sickbeardPath = os.path.split(os.path.split(sys.argv[0])[0])[0] -sys.path.append(os.path.join(sickbeardPath, 'lib')) -sys.path.append(sickbeardPath) +sys.path.insert(1, os.path.join(sickbeardPath, 'lib')) +sys.path.insert(1, sickbeardPath) configFilename = os.path.join(sickbeardPath, 'config.ini') try: @@ -22,9 +23,11 @@ try: fp = open(configFilename, 'r') config.readfp(fp) fp.close() -except IOError, e: - print 'Could not find/read Sickbeard config.ini: ' + str(e) - print 'Possibly wrong mediaToSickbeard.py location. Ensure the file is in the autoProcessTV subdir of your Sickbeard installation' +except IOError as e: + print('Could not find/read Sickbeard config.ini: ' + str(e)) + print( + 'Possibly wrong mediaToSickbeard.py location. Ensure the file is in the autoProcessTV subdir of your Sickbeard ' + 'installation') time.sleep(3) sys.exit(1) @@ -41,7 +44,7 @@ logfile = os.path.join(logdir, 'sickbeard.log') try: handler = logging.FileHandler(logfile) except: - print 'Unable to open/create the log file at ' + logfile + print('Unable to open/create the log file at ' + logfile) time.sleep(3) sys.exit() @@ -53,7 +56,7 @@ def utorrent(): # print 'Calling utorrent' if len(sys.argv) < 2: scriptlogger.error('No folder supplied - is this being called from uTorrent?') - print 'No folder supplied - is this being called from uTorrent?' + print('No folder supplied - is this being called from uTorrent?') time.sleep(3) sys.exit() @@ -73,7 +76,7 @@ def deluge(): if len(sys.argv) < 4: scriptlogger.error('No folder supplied - is this being called from Deluge?') - print 'No folder supplied - is this being called from Deluge?' + print('No folder supplied - is this being called from Deluge?') time.sleep(3) sys.exit() @@ -86,7 +89,7 @@ def blackhole(): if None != os.getenv('TR_TORRENT_DIR'): scriptlogger.debug('Processing script triggered by Transmission') - print 'Processing script triggered by Transmission' + print('Processing script triggered by Transmission') scriptlogger.debug(u'TR_TORRENT_DIR: ' + os.getenv('TR_TORRENT_DIR')) scriptlogger.debug(u'TR_TORRENT_NAME: ' + os.getenv('TR_TORRENT_NAME')) dirName = os.getenv('TR_TORRENT_DIR') @@ -94,7 +97,7 @@ def blackhole(): else: if len(sys.argv) < 2: scriptlogger.error('No folder supplied - Your client should invoke the script with a Dir and a Relese Name') - print 'No folder supplied - Your client should invoke the script with a Dir and a Release Name' + print('No folder supplied - Your client should invoke the script with a Dir and a Release Name') time.sleep(3) sys.exit() @@ -127,13 +130,13 @@ def main(): if not use_torrents: scriptlogger.error(u'Enable Use Torrent on Sickbeard to use this Script. Aborting!') - print u'Enable Use Torrent on Sickbeard to use this Script. Aborting!' + print(u'Enable Use Torrent on Sickbeard to use this Script. Aborting!') time.sleep(3) sys.exit() if not torrent_method in ['utorrent', 'transmission', 'deluge', 'blackhole']: scriptlogger.error(u'Unknown Torrent Method. Aborting!') - print u'Unknown Torrent Method. Aborting!' + print(u'Unknown Torrent Method. Aborting!') time.sleep(3) sys.exit() @@ -141,13 +144,13 @@ def main(): if dirName is None: scriptlogger.error(u'MediaToSickbeard script need a dir to be run. Aborting!') - print u'MediaToSickbeard script need a dir to be run. Aborting!' + print(u'MediaToSickbeard script need a dir to be run. Aborting!') time.sleep(3) sys.exit() if not os.path.isdir(dirName): scriptlogger.error(u'Folder ' + dirName + ' does not exist. Aborting AutoPostProcess.') - print u'Folder ' + dirName + ' does not exist. Aborting AutoPostProcess.' + print(u'Folder ' + dirName + ' does not exist. Aborting AutoPostProcess.') time.sleep(3) sys.exit() @@ -174,26 +177,26 @@ def main(): login_url = protocol + host + ':' + port + web_root + '/login' scriptlogger.debug('Opening URL: ' + url + ' with params=' + str(params)) - print 'Opening URL: ' + url + ' with params=' + str(params) + print('Opening URL: ' + url + ' with params=' + str(params)) try: sess = requests.Session() sess.post(login_url, data={'username': username, 'password': password}, stream=True, verify=False) response = sess.get(url, auth=(username, password), params=params, verify=False, allow_redirects=False) - except Exception, e: + except Exception as e: scriptlogger.error(u': Unknown exception raised when opening url: ' + str(e)) time.sleep(3) sys.exit() if response.status_code == 401: scriptlogger.error(u'Verify and use correct username and password in autoProcessTV.cfg') - print 'Verify and use correct username and password in autoProcessTV.cfg' + print('Verify and use correct username and password in autoProcessTV.cfg') time.sleep(3) sys.exit() if response.status_code == 200: scriptlogger.info(u'Script ' + __file__ + ' Succesfull') - print 'Script ' + __file__ + ' Succesfull' + print('Script ' + __file__ + ' Succesfull') time.sleep(3) sys.exit() diff --git a/autoProcessTV/sabToSickBeard.py b/autoProcessTV/sabToSickBeard.py index ab215065..6ad44031 100755 --- a/autoProcessTV/sabToSickBeard.py +++ b/autoProcessTV/sabToSickBeard.py @@ -19,11 +19,12 @@ # along with SickGear. If not, see . +from __future__ import print_function import sys import autoProcessTV if len(sys.argv) < 2: - print 'No folder supplied - is this being called from SABnzbd?' + print('No folder supplied - is this being called from SABnzbd?') sys.exit() elif len(sys.argv) >= 8: autoProcessTV.processEpisode(sys.argv[1], sys.argv[2], sys.argv[7]) diff --git a/autoProcessTV/setup.py b/autoProcessTV/setup.py index c79e4fd6..bede0efe 100755 --- a/autoProcessTV/setup.py +++ b/autoProcessTV/setup.py @@ -1,13 +1,17 @@ from distutils.core import setup -import py2exe, sys, shutil +import sys +import shutil +try: + import py2exe +except: + pass sys.argv.append('py2exe') -setup( - options = {'py2exe': {'bundle_files': 1}}, -# windows = [{'console': "sabToSickbeard.py"}], - zipfile = None, - console = ['sabToSickbeard.py'], -) +setup(options={'py2exe': {'bundle_files': 1}}, + # windows = [{'console': "sabToSickbeard.py"}], + zipfile=None, + console=['sabToSickbeard.py'] + ) shutil.copy('dist/sabToSickbeard.exe', '.') diff --git a/contributing.md b/contributing.md deleted file mode 100644 index 51be9155..00000000 --- a/contributing.md +++ /dev/null @@ -1,125 +0,0 @@ -### Questions about SickGear? - -To get your questions answered, please ask in the [SickGear Forum], on IRC \#SickGear pn freenode.net, or webchat. - -# Contributing to SickGear - -1. [Getting Involved](#getting-involved) -2. [How To Report Bugs](#how-to-report-bugs) -3. [Tips For Submitting Code](#tips-for-submitting-code) - - -## Getting Involved - -There are a number of ways to get involved with the development of SickGear. Even if you've never contributed code to an Open Source project before, we're always looking for help identifying bugs, cleaning up code, writing documentation and testing. - -The goal of this guide is to provide the best way to contribute to the official SickGear repository. Please read through the full guide detailing [How to Report Bugs](#how-to-report-bugs). - -## Discussion - -### Issues and IRC - -If you think you've found a bug please [file it in the bug tracker](#how-to-report-bugs). - -Additionally most of the SickGear development team can be found in the [#SickGear](http://webchat.freenode.net/?channels=SickGear) IRC channel on irc.freenode.net. - - -## How to Report Bugs - -### Make sure it is a SickGear bug - -Many bugs reported are actually issues with the user mis-understanding of how something works (there are a bit of moving parts to an ideal setup) and most of the time can be fixed by just changing some settings to fit the users needs. - -If you are new to SickGear, it is usually a much better idea to ask for help first in the [SickGear IRC channel](http://webchat.freenode.net/?channels=SickGear). You will get much quicker support, and you will help avoid tying up the SickGear team with invalid bug reports. - -### Try the latest version of SickGear - -Bugs in old versions of SickGear may have already been fixed. In order to avoid reporting known issues, make sure you are always testing against the latest build/source. Also, we put new code in the `dev` branch first before pushing down to the `master` branch (which is what the binary builds are built off of). - - -## Tips For Submitting Code - - -### Code - -**NEVER write your patches to the master branch** - it gets messy (I say this from experience!) - -**ALWAYS USE A "TOPIC" BRANCH!** Personally I like the `branch-feature_name` format that way its easy to identify the branch and feature at a glance. Also please make note of any forum post / issue number in the pull commit so we know what you are solving (it helps with cleaning up the related items later). - - -Please follow these guidelines before reporting a bug: - -1. **Update to the latest version** — Check if you can reproduce the issue with the latest version from the `dev` branch. - -2. **Use the SickGear Forums search** — check if the issue has already been reported. If it has been, please comment on the existing issue. - -3. **Provide a means to reproduce the problem** — Please provide as much details as possible, e.g. SickGear log files (obfuscate apikey/passwords), browser and operating system versions, how you started SickGear, and of course the steps to reproduce the problem. Bugs are always reported in the forums. - - -### Feature requests - -Please follow the bug guidelines above for feature requests, i.e. update to the latest version and search for existing issues before posting a new request. You can submit Feature Requests in the [SickGear Forum] as well. - -### Pull requests - -[Pull requests](https://help.github.com/articles/using-pull-requests) are welcome and the preferred way of accepting code contributions. - -Please follow these guidelines before sending a pull request: - -1. Update your fork to the latest upstream version. - -2. Use the `dev` branch to base your code off of. Create a topic-branch for your work. We will not merge your 'dev' branch, or your 'master' branch, only topic branches, coming from dev are merged. - -3. Follow the coding conventions of the original repository. Do not change line endings of the existing file, as this will rewrite the file and loses history. - -4. Keep your commits as autonomous as possible, i.e. create a new commit for every single bug fix or feature added. - -5. Always add meaningful commit messages. We should not have to guess at what your code is supposed to do. - -6. One pull request per feature. If you want multiple features, send multiple PR's - -Please follow this process; it's the best way to get your work included in the project: - -- [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork, - and configure the remotes: - -```bash - # clone your fork of the repo into the current directory in terminal - git clone git@github.com:/SickGear.git - # navigate to the newly cloned directory - cd SickGear - # assign the original repo to a remote called "upstream" - git remote add upstream https://github.com/SickGear/SickGear.git - ``` - -- If you cloned a while ago, get the latest changes from upstream: - - ```bash - # fetch upstream changes - git fetch upstream - # make sure you are on your 'master' branch - git checkout master - # merge upstream changes - git merge upstream/master - ``` - -- Create a new topic branch to contain your feature, change, or fix: - - ```bash - git checkout -b dev - ``` - -- Commit your changes in logical chunks. or your pull request is unlikely - be merged into the main project. Use git's - [interactive rebase](https://help.github.com/articles/interactive-rebase) - feature to tidy up your commits before making them public. - -- Push your topic branch up to your fork: - - ```bash - git push origin - ``` - -- [Open a Pull Request](https://help.github.com/articles/using-pull-requests) with a - clear title and description. - diff --git a/gui/slick/css/style.css b/gui/slick/css/style.css index 8a6bff57..ccfdb7b6 100644 --- a/gui/slick/css/style.css +++ b/gui/slick/css/style.css @@ -507,6 +507,7 @@ inc_bottom.tmpl width:100%; padding:20px 0; text-align:center; + clear:both; font-size:12px } @@ -1009,6 +1010,10 @@ div.formpaginate{ font-weight:900 } +#addShowForm #blackwhitelist{ + padding:0 0 0 15px +} + #addShowForm #blackwhitelist, #addShowForm #blackwhitelist h4, #addShowForm #blackwhitelist p{ diff --git a/gui/slick/images/network/comedy central family.png b/gui/slick/images/network/comedy central family.png deleted file mode 100644 index 66331182..00000000 Binary files a/gui/slick/images/network/comedy central family.png and /dev/null differ diff --git a/gui/slick/images/network/hallmark channel.png b/gui/slick/images/network/hallmark channel.png new file mode 100644 index 00000000..259e0137 Binary files /dev/null and b/gui/slick/images/network/hallmark channel.png differ diff --git a/gui/slick/images/network/itv2.png b/gui/slick/images/network/itv2.png index 5fd35aba..7455a4bb 100644 Binary files a/gui/slick/images/network/itv2.png and b/gui/slick/images/network/itv2.png differ diff --git a/gui/slick/images/network/itv3.png b/gui/slick/images/network/itv3.png index 5fd35aba..059d4189 100644 Binary files a/gui/slick/images/network/itv3.png and b/gui/slick/images/network/itv3.png differ diff --git a/gui/slick/images/network/itv4.png b/gui/slick/images/network/itv4.png index 5fd35aba..72ce0189 100644 Binary files a/gui/slick/images/network/itv4.png and b/gui/slick/images/network/itv4.png differ diff --git a/gui/slick/images/providers/alpharatio.png b/gui/slick/images/providers/alpharatio.png new file mode 100644 index 00000000..1b483588 Binary files /dev/null and b/gui/slick/images/providers/alpharatio.png differ diff --git a/gui/slick/images/providers/beyondhd.png b/gui/slick/images/providers/beyondhd.png new file mode 100644 index 00000000..7e62d3e3 Binary files /dev/null and b/gui/slick/images/providers/beyondhd.png differ diff --git a/gui/slick/images/providers/gftracker.png b/gui/slick/images/providers/gftracker.png new file mode 100644 index 00000000..a9f2d2ff Binary files /dev/null and b/gui/slick/images/providers/gftracker.png differ diff --git a/gui/slick/images/providers/grabtheinfo.png b/gui/slick/images/providers/grabtheinfo.png new file mode 100644 index 00000000..4a11f06e Binary files /dev/null and b/gui/slick/images/providers/grabtheinfo.png differ diff --git a/gui/slick/images/providers/hdtorrents.png b/gui/slick/images/providers/hdtorrents.png deleted file mode 100644 index 2a5d0721..00000000 Binary files a/gui/slick/images/providers/hdtorrents.png and /dev/null differ diff --git a/gui/slick/images/providers/morethan.png b/gui/slick/images/providers/morethan.png new file mode 100644 index 00000000..acdd6fcb Binary files /dev/null and b/gui/slick/images/providers/morethan.png differ diff --git a/gui/slick/images/providers/nextgen.png b/gui/slick/images/providers/nextgen.png deleted file mode 100644 index 724e76e9..00000000 Binary files a/gui/slick/images/providers/nextgen.png and /dev/null differ diff --git a/gui/slick/images/providers/pisexy.png b/gui/slick/images/providers/pisexy.png new file mode 100644 index 00000000..20674ebb Binary files /dev/null and b/gui/slick/images/providers/pisexy.png differ diff --git a/gui/slick/images/providers/rarbg.png b/gui/slick/images/providers/rarbg.png new file mode 100644 index 00000000..11048b19 Binary files /dev/null and b/gui/slick/images/providers/rarbg.png differ diff --git a/gui/slick/images/providers/strike.png b/gui/slick/images/providers/strike.png new file mode 100644 index 00000000..a857f5ff Binary files /dev/null and b/gui/slick/images/providers/strike.png differ diff --git a/gui/slick/images/providers/the_pirate_bay.png b/gui/slick/images/providers/the_pirate_bay.png index 9fce30b6..4d209da3 100644 Binary files a/gui/slick/images/providers/the_pirate_bay.png and b/gui/slick/images/providers/the_pirate_bay.png differ diff --git a/gui/slick/images/providers/torrent.png b/gui/slick/images/providers/torrent.png new file mode 100644 index 00000000..0e3fdfa0 Binary files /dev/null and b/gui/slick/images/providers/torrent.png differ diff --git a/gui/slick/images/providers/torrentbytes.png b/gui/slick/images/providers/torrentbytes.png index 9c0f5e13..d9138065 100644 Binary files a/gui/slick/images/providers/torrentbytes.png and b/gui/slick/images/providers/torrentbytes.png differ diff --git a/gui/slick/images/providers/torrentday.png b/gui/slick/images/providers/torrentday.png index 13b8942f..835fa74c 100644 Binary files a/gui/slick/images/providers/torrentday.png and b/gui/slick/images/providers/torrentday.png differ diff --git a/gui/slick/images/providers/torrentshack.png b/gui/slick/images/providers/torrentshack.png new file mode 100644 index 00000000..f9ae440d Binary files /dev/null and b/gui/slick/images/providers/torrentshack.png differ diff --git a/gui/slick/images/providers/transmithe_net.png b/gui/slick/images/providers/transmithe_net.png new file mode 100644 index 00000000..bcb694d6 Binary files /dev/null and b/gui/slick/images/providers/transmithe_net.png differ diff --git a/gui/slick/interfaces/default/config_notifications.tmpl b/gui/slick/interfaces/default/config_notifications.tmpl index 5cfe06af..7963872e 100644 --- a/gui/slick/interfaces/default/config_notifications.tmpl +++ b/gui/slick/interfaces/default/config_notifications.tmpl @@ -41,7 +41,7 @@ @@ -52,7 +52,7 @@ @@ -61,7 +61,7 @@ @@ -70,7 +70,7 @@ @@ -79,7 +79,7 @@ @@ -88,7 +88,7 @@ @@ -97,7 +97,7 @@ @@ -106,7 +106,7 @@ @@ -165,7 +165,7 @@ @@ -175,7 +175,7 @@ @@ -184,7 +184,7 @@ @@ -193,7 +193,7 @@ @@ -202,7 +202,7 @@ @@ -211,7 +211,7 @@ @@ -220,7 +220,7 @@ @@ -229,7 +229,7 @@ @@ -352,7 +352,7 @@ @@ -361,7 +361,7 @@ @@ -370,7 +370,7 @@ @@ -411,7 +411,7 @@ @@ -441,7 +441,7 @@