mirror of https://github.com/morpheus65535/bazarr
75 lines
3.6 KiB
Python
75 lines
3.6 KiB
Python
# coding=utf-8
|
|
|
|
import operator
|
|
|
|
from flask import request, jsonify
|
|
from flask_restful import Resource
|
|
from functools import reduce
|
|
|
|
from database import get_exclusion_clause, TableEpisodes, TableShows
|
|
from ..utils import authenticate, postprocessEpisode
|
|
|
|
|
|
# GET: Get Wanted Episodes
|
|
class EpisodesWanted(Resource):
|
|
@authenticate
|
|
def get(self):
|
|
episodeid = request.args.getlist('episodeid[]')
|
|
|
|
wanted_conditions = [(TableEpisodes.missing_subtitles != '[]')]
|
|
if len(episodeid) > 0:
|
|
wanted_conditions.append((TableEpisodes.sonarrEpisodeId in episodeid))
|
|
wanted_conditions += get_exclusion_clause('series')
|
|
wanted_condition = reduce(operator.and_, wanted_conditions)
|
|
|
|
if len(episodeid) > 0:
|
|
data = TableEpisodes.select(TableShows.title.alias('seriesTitle'),
|
|
TableEpisodes.monitored,
|
|
TableEpisodes.season.concat('x').concat(TableEpisodes.episode).alias('episode_number'),
|
|
TableEpisodes.title.alias('episodeTitle'),
|
|
TableEpisodes.missing_subtitles,
|
|
TableEpisodes.sonarrSeriesId,
|
|
TableEpisodes.sonarrEpisodeId,
|
|
TableEpisodes.scene_name.alias('sceneName'),
|
|
TableShows.tags,
|
|
TableEpisodes.failedAttempts,
|
|
TableShows.seriesType)\
|
|
.join(TableShows, on=(TableEpisodes.sonarrSeriesId == TableShows.sonarrSeriesId))\
|
|
.where(wanted_condition)\
|
|
.dicts()
|
|
else:
|
|
start = request.args.get('start') or 0
|
|
length = request.args.get('length') or -1
|
|
data = TableEpisodes.select(TableShows.title.alias('seriesTitle'),
|
|
TableEpisodes.monitored,
|
|
TableEpisodes.season.concat('x').concat(TableEpisodes.episode).alias('episode_number'),
|
|
TableEpisodes.title.alias('episodeTitle'),
|
|
TableEpisodes.missing_subtitles,
|
|
TableEpisodes.sonarrSeriesId,
|
|
TableEpisodes.sonarrEpisodeId,
|
|
TableEpisodes.scene_name.alias('sceneName'),
|
|
TableShows.tags,
|
|
TableEpisodes.failedAttempts,
|
|
TableShows.seriesType)\
|
|
.join(TableShows, on=(TableEpisodes.sonarrSeriesId == TableShows.sonarrSeriesId))\
|
|
.where(wanted_condition)\
|
|
.order_by(TableEpisodes.rowid.desc())\
|
|
.limit(length)\
|
|
.offset(start)\
|
|
.dicts()
|
|
data = list(data)
|
|
|
|
for item in data:
|
|
postprocessEpisode(item)
|
|
|
|
count_conditions = [(TableEpisodes.missing_subtitles != '[]')]
|
|
count_conditions += get_exclusion_clause('series')
|
|
count = TableEpisodes.select(TableShows.tags,
|
|
TableShows.seriesType,
|
|
TableEpisodes.monitored)\
|
|
.join(TableShows, on=(TableEpisodes.sonarrSeriesId == TableShows.sonarrSeriesId))\
|
|
.where(reduce(operator.and_, count_conditions))\
|
|
.count()
|
|
|
|
return jsonify(data=data, total=count)
|