Merge branch 'master' into develop

This commit is contained in:
JackDandy 2018-06-01 16:01:37 +01:00
commit ffa6e4e9b3
5 changed files with 44 additions and 24 deletions

View file

@ -23,6 +23,11 @@
### 0.16.14 (2018-06-01 15:55:00 UTC)
* Change improve IPT and RarBG providers
### 0.16.13 (2018-05-26 17:00:00 UTC) ### 0.16.13 (2018-05-26 17:00:00 UTC)
* Change add blacklog search terms for anime PROPERS * Change add blacklog search terms for anime PROPERS

View file

@ -6,46 +6,54 @@
SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more. SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more.
#### Why SickGear? #### Why SickGear?
* SickGear maintains a perfect uptime with the longest track record of being stable, reliable and trusted to work * SickGear maintains a perfect uptime with the longest track record of being stable, reliable, and trusted to work
* SickGear gives fast issue resolution and provider updates (historically, with 99% of provider updates under 24 hours)
* SickGear has the least issues and the least number of changes that require even more "fixes", less is more
* SickGear Wiki pages are updated from feedback and the supported providers list is accurate and true
* SickGear delivers valued quality from active development with a wealth of options on a dark or light themed interface * SickGear delivers valued quality from active development with a wealth of options on a dark or light themed interface
* SickGear is said to be, simply the bestest all round SickBeard descendant there is, not our words, and very humbling
#### What now? #### What now?
Hey you made it here, first, welcome to SickGear! You can dive straight in, or better to read below for what to expect...
* [Install guides](https://github.com/SickGear/SickGear/wiki/Installation-Instructions) for many platforms * [Install guides](https://github.com/SickGear/SickGear/wiki/Installation-Instructions) for many platforms
* [Migrating](https://github.com/SickGear/SickGear/wiki/Install-SickGear-%5B0%5D-Migrate) to a hassle free and feature rich set up is super simple * [Migrating](https://github.com/SickGear/SickGear/wiki/Install-SickGear-%5B0%5D-Migrate) to a hassle free and feature rich set up is super simple
Or read more below... Here's a taster for what to expect...
## Some innovative SickGear features ## Some of the sick innovative gear you get
* Ideas of shows to add from Trakt, IMDb, and AniDB categories; anticipating, new seasons, new shows, popular, and more * Ideas of shows to add from Trakt, IMDb, and AniDB categories; anticipating, new seasons, new shows, popular, and more
* Advanced add show finder that near always returns results sorted A-Z, Aired, or Relevancy, with known shows separated * Advanced add show finder that near always returns results sorted A-Z, Aired, or Relevancy, with known shows separated
* Releases can be searched during adding a show (e.g. optionally fetch oldest and/or newest without further effort) * Releases can be auto fetched when a show is adding (e.g. optionally fetch oldest and/or newest without further effort)
* Advanced automated search that always works to prevent you wasting time manually scanning result lists * Advanced automated search always works to save you from wasting your time manually picking from result lists
* Choose to delete watched episodes from a list built directly from played media at Kodi, Emby, and/or Plex (No Trakt!) * Choose to delete watched episodes pulled directly from played media at Kodi, Emby, and/or Plex (without Trakt tracking!)
* Smart custom qualities selector system that helps achieve an optimal quality selection for automated episode search * Each show can keep all, or any set number of most recent episodes; e.g. only keep daily releases from the last 40 days
* Smart custom qualities selector that guides to achieve an optimal quality selection for automated episode search
* Choose to have episodes upgraded in quality, or keep existing archive quality, and upgrade future episodes either way * Choose to have episodes upgraded in quality, or keep existing archive quality, and upgrade future episodes either way
* Single out providers to target "scene releases" either exclusively, with fallbacks to non-scene, and with optional user exclusions * Single out providers to target "scene releases" either exclusively, with fallbacks to non-scene, and with optional exclusions
* Mark providers to avoid "scene nuked" releases, with optional fallback when no other choice is available * Mark providers to avoid "scene nuked" releases, with optional fallback when no other choice is available
* Natively use a most powerful regex pattern matching system for superior information handling * Natively use a most powerful regex pattern matching system for superior information handling
* Select a UI style anytime; Regular, Proview I, or Proview II - independently for Episode View, and for Display Show * Select a UI style anytime; Regular, Proview I, or Proview II - independently for Episode View, and for Display Show
* Smart fanart system allows you to rate avoid/prefer. UI can be moved or toggled off/on to fully appreciate a fanart * Smart fanart system allows you to rate avoid/prefer. UI can be moved or toggled off/on to fully appreciate a fanart
* Episode View Layout "Day by Day" displays a fanart background from randomly selected imminent releases * Episode View Layout "Day by Day" displays fanart backgrounds of imminent releases
* Configure from 0 to 500 fanart images to cache per show, default is 3. * Configure from 0 to 500 fanart images to cache per show, default is 3
* Provider server failure charts display what failed, when and why * Provider server failure charts display what failed, when and why
* Provider server failure handler that pauses connecting the more a server fails * Provider server failure handler that pauses connecting to a server the more it fails
* Provider server activity graph and stats display how each are performing * Provider server activity graph and stats display how each are performing
* Integrated IsItDownRightNow buttons for the used TVDB, TheXem, and Github sites to see if any are/were offline
* Built-in providers that have proved over time to deliver leading durability among its application class and third parties * Built-in providers that have proved over time to deliver leading durability among its application class and third parties
* Secure support of Cloudflare IUAM access with no need to install node.js
* Built-in Kodi repository service to maintain SickGear add-ons, the first add-on is Watched State Updater * Built-in Kodi repository service to maintain SickGear add-ons, the first add-on is Watched State Updater
* Separate Plex server and Plex client settings, multiple LAN Plex server support, and Plex Home multiple user support * Separate Plex server and Plex client settings, multiple LAN Plex server support, and Plex Home multiple user support
* Intelligent library updates target the actual Plex server that carries the show of an episode (multi LAN server) * Intelligent library updates target the actual Plex server that carries the show of an episode (multi LAN server)
* Communicate directly with NZBGet using a dedicated integration script * NZBGet to SickGear direct connection using a purpose built add-on
* Communicate directly with qBittorrent/Deluge/Transmission etc. using a dedicated integration script * Communicate directly with qBittorrent/Deluge/Transmission etc. using a dedicated integration script
* Proxy auto-config (PAC) support to define when a proxy is used instead of using one for every system request * Proxy auto-config (PAC) support to define when a proxy is used instead of using one for every system request
* Change file date, to the date that the episode aired (yup, the feature was first created here for XBMC file sorting) * Change file date, to the date that the episode aired (feature first created here for XBMC file list sorting)
* Visual percentage progress of managed episodes * Visual percentage progress of managed episodes
* Configure an episode status for removed media files * Configure an episode status for removed media files
* Configurable default home page * Configurable default home page
Features above link to the UI; innovations also exist in core, we often inspire imitators, but you can [get the real deal!](https://github.com/SickGear/SickGear/wiki/Installation-Instructions) Innovations also exist in core, we often inspire imitators, but you can [get the real gear!](https://github.com/SickGear/SickGear/wiki/Installation-Instructions)
Other features and worthy points; Other features and worthy points;
* Stable, quality assured testing and development cycle * Stable, quality assured testing and development cycle
@ -56,8 +64,8 @@ Other features and worthy points;
* View missed and upcoming shows at a glance with "day by day" and other layouts * View missed and upcoming shows at a glance with "day by day" and other layouts
* Automatic and manual search for availability of episodes you want * Automatic and manual search for availability of episodes you want
* Well known established sources are used to gather reliable show information * Well known established sources are used to gather reliable show information
* Known and user added alternative show names can be searched * Known and user editable alternative show names can be searched
* Known and user added alternative numbered seasons and/or episodes can be searched * Known and user editable alternative numbered seasons and/or episodes can be searched
* Forward search results directly to clients like NZBGet, SABNZBd, qBitTorrent, Deluge and others * Forward search results directly to clients like NZBGet, SABNZBd, qBitTorrent, Deluge and others
* Save search results to a "blackhole" folder, a place designated for clients to auto scan * Save search results to a "blackhole" folder, a place designated for clients to auto scan
* Built-in post processing of episodes, with renaming to custom folder and/or file names * Built-in post processing of episodes, with renaming to custom folder and/or file names
@ -69,7 +77,7 @@ Other features and worthy points;
* Notification * Notification
* Home Theater/NAS (Emby, Kodi, Plex, Syno, Tivo, and more) can be notified to update their library * Home Theater/NAS (Emby, Kodi, Plex, Syno, Tivo, and more) can be notified to update their library
* Social notifiers (Trakt, Slack, Gitter, Discord, E-mail, and more) * Social notifiers (Trakt, Slack, Gitter, Discord, E-mail, and more)
* Device notifiers (Boxcar2, Notify My Android, Growl, Prowl, and more) * Device notifiers (Boxcar2, Growl, Prowl, and more)
* Server friendly with minimal number of API calls using both active and passive search tech * Server friendly with minimal number of API calls using both active and passive search tech
* Automated alternative show names and episode numbering from XEM * Automated alternative show names and episode numbering from XEM
@ -109,6 +117,9 @@ Other features and worthy points;
<tr align="center"> <tr align="center">
<td colspan=5>[ ++ Install <a href="https://github.com/SickGear/SickGear/wiki/Installation-Instructions">Guides</a> ++ ][ Frequently <a href="https://github.com/SickGear/SickGear/wiki/Frequently-Answered-Questions">Answered</a> ][ Discover <a href="https://github.com/SickGear/SickGear/wiki">Wiki</a> ]</td> <td colspan=5>[ ++ Install <a href="https://github.com/SickGear/SickGear/wiki/Installation-Instructions">Guides</a> ++ ][ Frequently <a href="https://github.com/SickGear/SickGear/wiki/Frequently-Answered-Questions">Answered</a> ][ Discover <a href="https://github.com/SickGear/SickGear/wiki">Wiki</a> ]</td>
</tr> </tr>
<tr align="center">
<td>Github Stats</td><td>(reliability)</td><td><a href="http://isitmaintained.com/project/SickGear/SickGear" title="Average time to resolve an issue"><img title="Average time to resolve an issue" src="http://isitmaintained.com/badge/resolution/SickGear/SickGear.svg"></a></td><td><a href="http://isitmaintained.com/project/SickGear/SickGear" title="Percentage of issues still open"><img title="Percentage of issues still open" src="http://isitmaintained.com/badge/open/SickGear/SickGear.svg"></a></td>
</tr>
</tbody> </tbody>
</table> </table>
@ -138,7 +149,7 @@ Finally, a massive thanks to all those that remain in the shadows, the quiet one
* <a href="https://gitter.im/SickGear/"><img src="https://badges.gitter.im/sickgear.svg"></a> web based (most likely one on one with a dev) * <a href="https://gitter.im/SickGear/"><img src="https://badges.gitter.im/sickgear.svg"></a> web based (most likely one on one with a dev)
* <a name="freenode"><img src="https://img.shields.io/badge/style-join%20chat-blue.svg?style=flat.svg&label=freenode"></a>&nbsp;(`irc.freenode.net` channel `#SickGear`) * <a name="freenode"><img src="https://img.shields.io/badge/style-join%20chat-blue.svg?style=flat.svg&label=freenode"></a>&nbsp;(`irc.freenode.net` channel `#SickGear`)
Although support is available, you should understand the basics of your Linux or Windows OS. If you don't understand basics like locating a db file, not running as root, or things like setting file permissions, then SickGear might not be for you. Although support is available, you should understand the basics of your OS. If you can't understand locating a db file, not running as root, or setting file permissions, then SickGear might not be for you.
--- ---
Enjoy SickGear - stability, reliability, assured. Enjoy SickGear - stability, reliability, assured.

View file

@ -1481,6 +1481,7 @@ class TorrentProvider(GenericProvider):
return None return None
failure_count += self.failure_count failure_count += self.failure_count
self.failure_count = 0 self.failure_count = 0
cur_url = cur_url.replace('{ts}', '%s.' % str(time.time())[2:6])
if 10 < len(cur_url) and ((expire and (expire > int(time.time()))) or if 10 < len(cur_url) and ((expire and (expire > int(time.time()))) or
self._has_signature(self.get_url(cur_url, skip_auth=True))): self._has_signature(self.get_url(cur_url, skip_auth=True))):
for k, v in getattr(self, 'url_tmpl', {}).items(): for k, v in getattr(self, 'url_tmpl', {}).items():

View file

@ -32,7 +32,7 @@ class IPTorrentsProvider(generic.TorrentProvider):
generic.TorrentProvider.__init__(self, 'IPTorrents') generic.TorrentProvider.__init__(self, 'IPTorrents')
self.url_home = (['https://iptorrents.%s/' % u for u in 'eu', 'com', 'me', 'ru'] + self.url_home = (['https://iptorrents.%s/' % u for u in 'eu', 'com', 'me', 'ru'] +
['http://rss.workisboring.com/', 'https://ipt-update.com'] + ['http://rss.workisboring.com/'] +
[base64.b64decode(x) for x in [''.join(x) for x in [ [base64.b64decode(x) for x in [''.join(x) for x in [
[re.sub('(?i)[q\s1]+', '', x[::-1]) for x in [ [re.sub('(?i)[q\s1]+', '', x[::-1]) for x in [
'c0RHa', 'vo1QD', 'hJ2L', 'GdhdXe', 'vdnLoN', 'J21cptmc', '5yZulmcv', '02bj', '=iq=']], 'c0RHa', 'vo1QD', 'hJ2L', 'GdhdXe', 'vdnLoN', 'J21cptmc', '5yZulmcv', '02bj', '=iq=']],
@ -44,8 +44,10 @@ class IPTorrentsProvider(generic.TorrentProvider):
'HGa', 'voDc0R', '21L', 'bucmbvt', 'ZyZWQ1L0Vm', 'ycrFW', '02bej5', 'e=gq']], 'HGa', 'voDc0R', '21L', 'bucmbvt', 'ZyZWQ1L0Vm', 'ycrFW', '02bej5', 'e=gq']],
[re.sub('(?i)[q\sei]+', '', x[::-1]) for x in [ [re.sub('(?i)[q\sei]+', '', x[::-1]) for x in [
'Q0RHa', 'voiQDc', 'asF2L', 'hVmLuVW', 'yZulGd', 'mbhdmcv1', 'Adl5mLjl', '==Qe']], 'Q0RHa', 'voiQDc', 'asF2L', 'hVmLuVW', 'yZulGd', 'mbhdmcv1', 'Adl5mLjl', '==Qe']],
[re.sub('(?i)[q\si1g]+', '', x[::-1]) for x in [ [re.sub('[r\sh]+', '', x[::-1]) for x in [
'Dc0GRHa', 'vo', 'Cdwl2L', 'FWZy5', 'bvJWL1k', '9mLzt2', 'wZy', '=GG=q']] 'fzRh3re', 'ChdwhlW', 'FW Zyh5', 'vJWhrLk', 'Lhz t2b', 'wZyhh9m', '=rr=']],
[re.sub('[S\sN]+', '', x[::-1]) for x in [
'zSSR3e', 'wNlWNf', 'zN 5Cd', '2SNJXZ', 'ySNAXZ', 'j5SSCc', '=S02 b']],
]]]) ]]])
self.url_vars = {'login': 't', 'search': 't?%s;q=%s;qf=ti%s%s#torrents'} self.url_vars = {'login': 't', 'search': 't?%s;q=%s;qf=ti%s%s#torrents'}

View file

@ -62,8 +62,9 @@ class RarbgProvider(generic.TorrentProvider):
if not self.should_skip() and response and 'token' in response: if not self.should_skip() and response and 'token' in response:
self.token = response['token'] self.token = response['token']
self.token_expiry = datetime.datetime.now() + datetime.timedelta(minutes=14) self.token_expiry = datetime.datetime.now() + datetime.timedelta(minutes=14)
time.sleep(2)
return True return True
time.sleep(1.1) time.sleep(2)
logger.log(u'No usable API token returned from: %s' % self.urls['api_token'], logger.ERROR) logger.log(u'No usable API token returned from: %s' % self.urls['api_token'], logger.ERROR)
return False return False