Config settings are now stored and encrypted into a sqlite database
Added code to migrate existing config files to new config database Refactored the term indexer to series provider Refactored the term indexer_id to series id for tv shows and episode_id for tv episodes Qualities are now enum classes Episode statuses are now enum classes Status / Quality composites are now enum classes Refactored series provider api to support multiple series providers Refactored core code to support multiple series providers Refactored metadata providers config code Data returned from SR backend to new SR web-ui is json using camelCase naming conventions Refactored how censored items are generatored and handled for log events Updated CI script Fixed seeders / leechers for IPTorrents
... | ... | @@ -6,10 +6,6 @@ stages: |
- release_sentry | ||
- release_deploy | ||
services: | ||
- name: docker:dind | ||
command: ["--mtu=1450"] | ||
#review:webpack: | ||
# stage: review_webpack | ||
# image: | ||
... | ... | @@ -120,7 +116,7 @@ release:build:master: |
- yarn run build | ||
- python checksum-generator.py | ||
- git add --all | ||
- git commit -m "[TASK] Releasing v$(cat sickrage/version.txt)" | ||
- git commit -m "[TASK] Releasing v$(cat sickrage/version.txt) [ci-skip]" | ||
- git fetch . release-$(cat sickrage/version.txt):master | ||
- git fetch . release-$(cat sickrage/version.txt):develop | ||
- git tag -a $(cat sickrage/version.txt) -m "Release v$(cat sickrage/version.txt) master" | ||
... | ... | @@ -129,7 +125,7 @@ release:build:master: |
- bumpversion --allow-dirty patch package.json sickrage/version.txt | ||
- python checksum-generator.py | ||
- git add --all | ||
- git commit -m "[TASK] Bump develop branch to v$(cat sickrage/version.txt)" | ||
- git commit -m "[TASK] Bump develop branch to v$(cat sickrage/version.txt) [ci-skip]" | ||
- git push https://$GIT_ACCESS_USER:[email protected]$CI_SERVER_HOST/$CI_PROJECT_PATH.git HEAD:develop --follow-tags | ||
when: manual | ||
only: | ||
... | ... | @@ -138,8 +134,8 @@ release:build:master: |
refs: | ||
- branches | ||
- triggers | ||
variables: | ||
- $CI_COMMIT_MESSAGE =~ /\[TASK\] Releasing/ | ||
# variables: | ||
# - $CI_COMMIT_MESSAGE =~ /\[TASK\] Releasing/ | ||
release:build:develop: | ||
stage: release_build | ||
... | ... | @@ -163,7 +159,7 @@ release:build:develop: |
- git config --global user.email $(git --no-pager show -s --format='%ae' HEAD) | ||
- git config --global user.name $(git --no-pager show -s --format='%an' HEAD) | ||
- git add --all | ||
- git commit -m "[TASK] Pre-Releasing v$(cat sickrage/version.txt)" | ||
- git commit -m "[TASK] Pre-Releasing v$(cat sickrage/version.txt) [ci-skip]" | ||
- git tag -a $(cat sickrage/version.txt) -m "Pre-release v$(cat sickrage/version.txt)" | ||
- git push https://$GIT_ACCESS_USER:[email protected]$CI_SERVER_HOST/$CI_PROJECT_PATH.git HEAD:$CI_COMMIT_REF_NAME --follow-tags | ||
only: | ||
... | ... | @@ -172,9 +168,9 @@ release:build:develop: |
refs: | ||
- tags | ||
- triggers | ||
variables: | ||
- $CI_COMMIT_MESSAGE =~ /\[TASK\] Pre-Releasing/ | ||
- $CI_COMMIT_MESSAGE =~ /\[TASK\] Bump/ | ||
# variables: | ||
# - $CI_COMMIT_MESSAGE =~ /\[TASK\] Pre-Releasing/ | ||
# - $CI_COMMIT_MESSAGE =~ /\[TASK\] Bump/ | ||
release:sentry:master: | ||
stage: release_sentry | ||
... | ... | @@ -233,9 +229,6 @@ deploy:pypi: |
deploy:docker:master: | ||
stage: release_deploy | ||
variables: | ||
UPSTREAM_BRANCH: master | ||
UPSTREAM_COMMIT_SHA: $CI_COMMIT_SHA | ||
trigger: | ||
project: sickrage/sickrage-docker | ||
branch: master | ||
... | ... | @@ -247,12 +240,9 @@ deploy:docker:master: |
deploy:docker:develop: | ||
stage: release_deploy | ||
variables: | ||
UPSTREAM_BRANCH: develop | ||
UPSTREAM_COMMIT_SHA: $CI_COMMIT_SHA | ||
trigger: | ||
project: sickrage/sickrage-docker | ||
branch: master | ||
branch: develop | ||
only: | ||
- /^[0-9.]+dev[0-9]+$/@SiCKRAGE/sickrage | ||
except: | ||
... | ... |
aenum==2.2.4 | ||
alembic==1.4.2 | ||
appdirs==1.4.4 | ||
APScheduler==3.6.3 | ||
... | ... | @@ -40,6 +41,7 @@ markdown2==2.3.9 |
MarkupSafe==1.1.1 | ||
marshmallow==3.8.0 | ||
marshmallow-sqlalchemy==0.23.1 | ||
marshmallow-enum==1.5.1 | ||
msgpack==1.0.0 | ||
MultipartPostHandler==0.1.0 | ||
mutagen==1.45.1 | ||
... | ... | @@ -79,6 +81,7 @@ simplejson==3.17.2 |
six==1.15.0 | ||
soupsieve==2.0.1 | ||
SQLAlchemy==1.3.18 | ||
SQLAlchemy-Utils==0.36.8 | ||
stevedore==3.2.0 | ||
subliminal==2.1.0 | ||
tornado==6.0.4 | ||
... | ... |
... | ... | @@ -24,10 +24,11 @@ from http import client |
from xmlrpc.client import ServerProxy, ProtocolError | ||
import sickrage | ||
from sickrage.core.common import Quality | ||
from sickrage.core.common import Qualities | ||
from sickrage.core.helpers import try_int | ||
from sickrage.core.tv.show.helpers import find_show | ||
from sickrage.core.websession import WebSession | ||
from sickrage.search_providers import SearchProviderType | ||
class NZBGet(object): | ||
... | ... | @@ -40,7 +41,7 @@ class NZBGet(object): |
:param proper: True if this is a Proper download, False if not. Defaults to False | ||
""" | ||
if sickrage.app.config.nzbget_host is None: | ||
if sickrage.app.config.nzbget.host is None: | ||
sickrage.app.log.warning("No NZBGet host found in configuration. Please configure it.") | ||
return False | ||
... | ... | @@ -49,20 +50,20 @@ class NZBGet(object): |
addToTop = False | ||
nzbgetprio = 0 | ||
category = sickrage.app.config.nzbget_category | ||
category = sickrage.app.config.nzbget.category | ||
show_object = find_show(nzb.show_id) | ||
show_object = find_show(nzb.series_id, nzb.series_provider_id) | ||
if not show_object: | ||
return False | ||
if show_object.is_anime: | ||
category = sickrage.app.config.nzbget_category_anime | ||
category = sickrage.app.config.nzbget.category_anime | ||
url = "%(protocol)s://%(username)s:%(password)[email protected]%(host)s/xmlrpc" % { | ||
"protocol": 'https' if sickrage.app.config.nzbget_use_https else 'http', | ||
"host": sickrage.app.config.nzbget_host, | ||
"username": sickrage.app.config.nzbget_username, | ||
"password": sickrage.app.config.nzbget_password | ||
"protocol": 'https' if sickrage.app.config.nzbget.use_https else 'http', | ||
"host": sickrage.app.config.nzbget.host, | ||
"username": sickrage.app.config.nzbget.username, | ||
"password": sickrage.app.config.nzbget.password | ||
} | ||
nzbget_rpc_client = ServerProxy(url) | ||
... | ... | @@ -82,7 +83,7 @@ class NZBGet(object): |
sickrage.app.log.warning("NZBGet Protocol Error: " + e.errmsg) | ||
return False | ||
show_object = find_show(nzb.show_id) | ||
show_object = find_show(nzb.series_id, nzb.series_provider_id) | ||
if not show_object: | ||
return False | ||
... | ... | @@ -91,27 +92,24 @@ class NZBGet(object): |
episode_object = show_object.get_episode(nzb.season, episode_number) | ||
if dupe_key == "": | ||
if episode_object.show.indexer == 1: | ||
dupe_key = "SiCKRAGE-" + str(episode_object.show.indexer_id) | ||
elif episode_object.show.indexer == 2: | ||
dupe_key = "SiCKRAGE-tvr" + str(episode_object.show.indexer_id) | ||
dupe_key = f"SiCKRAGE-{episode_object.show.series_provider_id.name}-{episode_object.show.series_id}" | ||
dupe_key += "-" + str(episode_object.season) + "." + str(episode_object.episode) | ||
if date.today() - episode_object.airdate <= timedelta(days=7): | ||
addToTop = True | ||
nzbgetprio = sickrage.app.config.nzbget_priority | ||
nzbgetprio = sickrage.app.config.nzbget.priority | ||
else: | ||
category = sickrage.app.config.nzbget_category_backlog | ||
category = sickrage.app.config.nzbget.category_backlog | ||
if show_object.is_anime: | ||
category = sickrage.app.config.nzbget_category_anime_backlog | ||
category = sickrage.app.config.nzbget.category_anime_backlog | ||
if nzb.quality != Quality.UNKNOWN: | ||
if nzb.quality != Qualities.UNKNOWN: | ||
dupe_score = nzb.quality * 100 | ||
if proper: | ||
dupe_score += 10 | ||
nzbcontent64 = None | ||
if nzb.type == "nzbdata": | ||
if nzb.provider_type == SearchProviderType.NZBDATA: | ||
data = nzb.extraInfo[0] | ||
nzbcontent64 = standard_b64encode(data) | ||
... | ... | @@ -127,7 +125,7 @@ class NZBGet(object): |
if nzbcontent64 is not None: | ||
nzbget_result = nzbget_rpc_client.append(nzb.name + ".nzb", category, addToTop, nzbcontent64) | ||
else: | ||
if nzb.type == "nzb": | ||
if nzb.provider_type == SearchProviderType.NZB: | ||
try: | ||
nzbcontent64 = standard_b64encode(WebSession().get(nzb.url).text) | ||
except Exception: | ||
... | ... |