Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
SiCKRAGE
sickrage
Commits
44a0b2bb
Commit
44a0b2bb
authored
Sep 06, 2021
by
echel0n
Browse files
Merge branch 'release/10.0.38'
parents
a4055ed8
570d70c1
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
CHANGELOG.md
View file @
44a0b2bb
...
...
@@ -2,8 +2,12 @@
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
#### [10.0.38](https://git.sickrage.ca/SiCKRAGE/sickrage/compare/10.0.37...10.0.38)
#### [10.0.37](https://git.sickrage.ca/SiCKRAGE/sickrage/compare/10.0.36...10.0.37)
> 3 September 2021
- Fixed cache database migration issues related to oauth2 and announcements tables [`d239c77`](https://git.sickrage.ca/SiCKRAGE/sickrage/commit/d239c773feb2eb41459451f1aaba95caf66816eb)
#### [10.0.36](https://git.sickrage.ca/SiCKRAGE/sickrage/compare/10.0.35...10.0.36)
...
...
package.json
View file @
44a0b2bb
{
"name"
:
"sickrage"
,
"version"
:
"10.0.3
7
"
,
"version"
:
"10.0.3
8
"
,
"private"
:
true
,
"repository"
:
{
"type"
:
"git"
,
...
...
setup.cfg
View file @
44a0b2bb
[bumpversion]
current_version = 10.0.3
7
current_version = 10.0.3
8
commit = False
tag = False
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\.(?P<release>[a-z]+)(?P<dev>\d+))?
...
...
sickrage/__init__.py
View file @
44a0b2bb
...
...
@@ -19,7 +19,7 @@
# along with SiCKRAGE. If not, see <http://www.gnu.org/licenses/>.
# ##############################################################################
__version__
=
"10.0.3
7
"
__version__
=
"10.0.3
8
"
__install_type__
=
""
import
argparse
...
...
sickrage/checksums.md5
View file @
44a0b2bb
This diff is collapsed.
Click to expand it.
sickrage/core/webserver/handlers/api/v1/__init__.py
View file @
44a0b2bb
...
...
@@ -1518,7 +1518,7 @@ class CMD_SiCKRAGESearchSeriesProvider(ApiV1Handler):
results
=
[]
series_provider
=
sickrage
.
app
.
series_providers
[
self
.
series_provider_id
.
upper
()]
series_provider
=
sickrage
.
app
.
series_providers
[
SeriesProviderID
[
self
.
series_provider_id
.
upper
()]
]
series_provider_language
=
self
.
lang
or
sickrage
.
app
.
config
.
general
.
series_provider_default_language
if
self
.
name
and
not
self
.
series_id
:
# only name was given
...
...
@@ -1813,11 +1813,9 @@ class CMD_ShowAddExisting(ApiV1Handler):
if
not
os
.
path
.
isdir
(
self
.
location
):
return
_responds
(
RESULT_FAILURE
,
msg
=
'Not a valid location'
)
series_provider_id
=
SeriesProviderID
[
self
.
series_provider_id
]
series_provider_result
=
CMD_SiCKRAGESearchSeriesProvider
(
self
.
application
,
self
.
request
,
**
{
'series_id'
:
self
.
series_id
,
'series_provider_id'
:
series_provider_id
'series_provider_id'
:
self
.
series_provider_id
}).
run
()
series_name
=
None
...
...
@@ -1827,6 +1825,8 @@ class CMD_ShowAddExisting(ApiV1Handler):
return
_responds
(
RESULT_FAILURE
,
msg
=
"Empty results returned, check series_id and try again"
)
if
len
(
series_provider_result
[
'data'
][
'results'
])
==
1
and
'name'
in
series_provider_result
[
'data'
][
'results'
][
0
]:
series_name
=
series_provider_result
[
'data'
][
'results'
][
0
][
'name'
]
else
:
return
_responds
(
RESULT_FAILURE
,
msg
=
"Unable to retrieve information from indexer"
)
first_aired
=
series_provider_result
[
'data'
][
'results'
][
0
][
'first_aired'
]
...
...
@@ -1849,7 +1849,7 @@ class CMD_ShowAddExisting(ApiV1Handler):
newQuality
=
Quality
.
combine_qualities
(
iqualityID
,
aqualityID
)
sickrage
.
app
.
show_queue
.
add_show
(
series_provider_id
=
series_provider_id
,
series_id
=
int
(
self
.
series_id
),
show
_d
ir
=
self
.
location
,
series_provider_id
=
SeriesProviderID
[
self
.
series_provider_id
.
upper
()]
,
series_id
=
int
(
self
.
series_id
),
show
D
ir
=
self
.
location
,
default_status
=
sickrage
.
app
.
config
.
general
.
status_default
,
quality
=
newQuality
,
flatten_folders
=
int
(
self
.
flatten_folders
),
subtitles
=
self
.
subtitles
,
default_status_after
=
sickrage
.
app
.
config
.
general
.
status_default_after
,
skip_downloaded
=
self
.
skip_downloaded
)
...
...
@@ -1958,11 +1958,9 @@ class CMD_ShowAddNew(ApiV1Handler):
return
_responds
(
RESULT_FAILURE
,
msg
=
"Status prohibited"
)
default_ep_status_after
=
self
.
future_status
series_provider_id
=
SeriesProviderID
[
self
.
series_provider_id
]
series_provider_result
=
CMD_SiCKRAGESearchSeriesProvider
(
self
.
application
,
self
.
request
,
**
{
'series_id'
:
self
.
series_id
,
'series_provider_id'
:
series_provider_id
'series_provider_id'
:
self
.
series_provider_id
}).
run
()
series_name
=
None
...
...
@@ -1972,6 +1970,8 @@ class CMD_ShowAddNew(ApiV1Handler):
return
_responds
(
RESULT_FAILURE
,
msg
=
"Empty results returned, check series_id and try again"
)
if
len
(
series_provider_result
[
'data'
][
'results'
])
==
1
and
'name'
in
series_provider_result
[
'data'
][
'results'
][
0
]:
series_name
=
series_provider_result
[
'data'
][
'results'
][
0
][
'name'
]
else
:
return
_responds
(
RESULT_FAILURE
,
msg
=
"Unable to retrieve information from indexer"
)
first_aired
=
series_provider_result
[
'data'
][
'results'
][
0
][
'first_aired'
]
...
...
@@ -1995,8 +1995,8 @@ class CMD_ShowAddNew(ApiV1Handler):
chmod_as_parent
(
show_path
)
sickrage
.
app
.
show_queue
.
add_show
(
series_provider_id
=
series_provider_id
,
series_id
=
int
(
self
.
series_id
),
show
_d
ir
=
show_path
,
default_status
=
new_status
,
quality
=
new_quality
,
flatten_folders
=
int
(
self
.
flatten_folders
),
lang
=
self
.
lang
,
subtitles
=
self
.
subtitles
,
anime
=
self
.
anime
,
scene
=
self
.
scene
,
series_provider_id
=
SeriesProviderID
[
self
.
series_provider_id
.
upper
()]
,
series_id
=
int
(
self
.
series_id
),
show
D
ir
=
show_path
,
default_status
=
new_status
,
quality
=
new_quality
,
flatten_folders
=
int
(
self
.
flatten_folders
),
lang
=
self
.
lang
,
subtitles
=
self
.
subtitles
,
anime
=
self
.
anime
,
scene
=
self
.
scene
,
search_format
=
self
.
search_format
,
default_status_after
=
default_ep_status_after
,
skip_downloaded
=
self
.
skip_downloaded
)
...
...
@@ -2363,10 +2363,12 @@ class CMD_ShowSeasons(ApiV1Handler):
if
episode_dict
[
'airdate'
]
>
datetime
.
date
.
min
:
dtEpisodeAirs
=
srdatetime
.
SRDateTime
(
sickrage
.
app
.
tz_updater
.
parse_date_time
(
episode_dict
[
'airdate'
],
show_obj
.
airs
,
show_obj
.
network
),
convert
=
True
).
dt
episode_dict
[
'airdate'
]
=
srdatetime
.
SRDateTime
(
dtEpisodeAirs
).
srfdate
(
d_preset
=
dateFormat
)
episode_dict
[
'airdate'
]
=
str
(
srdatetime
.
SRDateTime
(
dtEpisodeAirs
).
srfdate
(
d_preset
=
dateFormat
)
)
else
:
episode_dict
[
'airdate'
]
=
'Never'
episode_dict
[
'subtitles_lastsearch'
]
=
str
(
episode_dict
[
'subtitles_lastsearch'
])
curSeason
=
int
(
episode_dict
[
'season'
])
curEpisode
=
int
(
episode_dict
[
'episode'
])
...
...
sickrage/core/webserver/static/js/core.min.js
View file @
44a0b2bb
This diff is collapsed.
Click to expand it.
sickrage/series_providers/cache.py
View file @
44a0b2bb
...
...
@@ -29,11 +29,6 @@ class SeriesProviderShowCache(OrderedDict):
self
.
maxsize
=
100
super
(
SeriesProviderShowCache
,
self
).
__init__
(
*
args
,
**
kwargs
)
def
__setitem__
(
self
,
key
,
value
,
dict_setitem
=
dict
.
__setitem__
):
super
(
SeriesProviderShowCache
,
self
).
__setitem__
(
key
,
value
)
while
len
(
self
)
>
self
.
maxsize
:
self
.
pop
(
list
(
self
.
keys
())[
0
],
None
)
def
add_item
(
self
,
sid
,
seas
,
ep
,
attrib
,
value
):
if
sid
not
in
self
:
self
[
sid
]
=
SeriesProviderShow
()
...
...
@@ -49,6 +44,11 @@ class SeriesProviderShowCache(OrderedDict):
self
[
sid
].
data
[
key
]
=
value
def
__setitem__
(
self
,
key
,
value
,
dict_setitem
=
dict
.
__setitem__
):
super
(
SeriesProviderShowCache
,
self
).
__setitem__
(
key
,
value
)
while
len
(
self
)
>
self
.
maxsize
:
self
.
pop
(
list
(
self
.
keys
())[
0
],
None
)
class
SeriesProviderShow
(
dict
):
"""Holds a dict of seasons, and show data.
...
...
@@ -58,6 +58,39 @@ class SeriesProviderShow(dict):
super
(
SeriesProviderShow
,
self
).
__init__
(
**
kwargs
)
self
.
data
=
{}
def
get
(
self
,
key
,
default
=
None
):
return
getattr
(
self
,
key
,
default
)
def
aired_on
(
self
,
date
):
ret
=
self
.
search
(
str
(
date
),
'firstaired'
)
if
len
(
ret
)
==
0
:
sickrage
.
app
.
log
.
debug
(
"Could not find any episodes on TheTVDB that aired on {}"
.
format
(
date
))
return
None
return
ret
def
search
(
self
,
term
=
None
,
key
=
None
):
"""
Search all episodes in show. Can search all data, or a specific key (for
example, episodename)
Always returns an array (can be empty). First index contains the first
match, and so on.
Each array index is an Episode() instance, so doing
search_results[0]['episodename'] will retrieve the episode name of the
first match.
Search terms are converted to lower case (unicode) strings.
"""
results
=
[]
for
cur_season
in
self
.
values
():
searchresult
=
cur_season
.
search
(
term
=
term
,
key
=
key
)
if
len
(
searchresult
)
!=
0
:
results
.
extend
(
searchresult
)
return
results
def
__getstate__
(
self
):
return
self
.
__dict__
...
...
@@ -99,42 +132,27 @@ class SeriesProviderShow(dict):
# doesn't exist, so attribute error.
raise
SeriesProviderAttributeNotFound
(
"Cannot find show attribute {}"
.
format
(
repr
(
key
)))
def
aired_on
(
self
,
date
):
ret
=
self
.
search
(
str
(
date
),
'firstaired'
)
if
len
(
ret
)
==
0
:
sickrage
.
app
.
log
.
debug
(
"Could not find any episodes on TheTVDB that aired on {}"
.
format
(
date
))
return
None
return
ret
def
search
(
self
,
term
=
None
,
key
=
None
):
"""
Search all episodes in show. Can search all data, or a specific key (for
example, episodename)
Always returns an array (can be empty). First index contains the first
match, and so on.
class
SeriesProviderSeason
(
dict
):
def
__init__
(
self
):
super
(
SeriesProviderSeason
,
self
).
__init__
()
self
.
data
=
{}
Each array index is an Episode() instance, so doing
search_results[0]['episodename'] will retrieve the episode name of the
first match.
def
get
(
self
,
key
,
default
=
None
):
return
getattr
(
self
,
key
,
default
)
Search terms are converted to lower case (unicode) strings.
def
search
(
self
,
term
=
None
,
key
=
None
):
"""Search all episodes in season, returns a list of matching Episode
instances.
"""
results
=
[]
for
cur_season
in
self
.
values
():
searchresult
=
cur_season
.
search
(
term
=
term
,
key
=
key
)
if
len
(
searchresult
)
!=
0
:
results
.
extend
(
searchresult
)
for
ep
in
self
.
values
():
result
=
ep
.
search
(
term
=
term
,
key
=
key
)
if
result
is
not
None
:
results
.
append
(
result
)
return
results
class
SeriesProviderSeason
(
dict
):
def
__init__
(
self
):
super
(
SeriesProviderSeason
,
self
).
__init__
()
self
.
data
=
{}
def
__getstate__
(
self
):
return
self
.
__dict__
...
...
@@ -170,42 +188,13 @@ class SeriesProviderSeason(dict):
else
:
raise
SeriesProviderAttributeNotFound
(
"Cannot find season attribute {}"
.
format
(
repr
(
key
)))
def
search
(
self
,
term
=
None
,
key
=
None
):
"""Search all episodes in season, returns a list of matching Episode
instances.
"""
results
=
[]
for
ep
in
self
.
values
():
result
=
ep
.
search
(
term
=
term
,
key
=
key
)
if
result
is
not
None
:
results
.
append
(
result
)
return
results
class
SeriesProviderEpisode
(
dict
):
def
__init__
(
self
):
super
(
SeriesProviderEpisode
,
self
).
__init__
()
def
__repr__
(
self
):
seasno
=
int
(
self
.
get
(
'airedseason'
,
0
))
epno
=
int
(
self
.
get
(
'airedepisodenumber'
,
0
))
epname
=
self
.
get
(
'episodename'
)
if
epname
is
not
None
:
return
"<Episode %02dx%02d - %s>"
%
(
seasno
,
epno
,
epname
)
else
:
return
"<Episode %02dx%02d>"
%
(
seasno
,
epno
)
def
__getattr__
(
self
,
key
):
if
key
in
self
:
return
self
[
key
]
raise
AttributeError
def
__getitem__
(
self
,
key
):
try
:
return
dict
.
__getitem__
(
self
,
key
)
except
KeyError
:
raise
SeriesProviderAttributeNotFound
(
"Cannot find episode attribute {}"
.
format
(
repr
(
key
)))
def
get
(
self
,
key
,
default
=
None
):
return
getattr
(
self
,
key
,
default
)
def
search
(
self
,
term
=
None
,
key
=
None
):
"""Search episode data for term, if it matches, return the Episode (self).
...
...
@@ -227,3 +216,23 @@ class SeriesProviderEpisode(dict):
continue
if
cur_value
.
find
(
term
.
lower
())
>
-
1
:
return
self
def
__repr__
(
self
):
seasno
=
int
(
self
.
get
(
'airedseason'
,
0
))
epno
=
int
(
self
.
get
(
'airedepisodenumber'
,
0
))
epname
=
self
.
get
(
'episodename'
)
if
epname
is
not
None
:
return
"<Episode %02dx%02d - %s>"
%
(
seasno
,
epno
,
epname
)
else
:
return
"<Episode %02dx%02d>"
%
(
seasno
,
epno
)
def
__getattr__
(
self
,
key
):
if
key
in
self
:
return
self
[
key
]
raise
AttributeError
def
__getitem__
(
self
,
key
):
try
:
return
dict
.
__getitem__
(
self
,
key
)
except
KeyError
:
raise
SeriesProviderAttributeNotFound
(
"Cannot find episode attribute {}"
.
format
(
repr
(
key
)))
sickrage/version.txt
View file @
44a0b2bb
10.0.37
\ No newline at end of file
10.0.38
\ No newline at end of file
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment