mirror of https://github.com/morpheus65535/bazarr
93 lines
3.6 KiB
Python
93 lines
3.6 KiB
Python
# coding=utf-8
|
|
|
|
import datetime
|
|
import pretty
|
|
|
|
from flask import request, jsonify
|
|
from flask_restful import Resource
|
|
|
|
from database import TableEpisodes, TableShows, TableBlacklist
|
|
from ..utils import authenticate, postprocessEpisode
|
|
from utils import blacklist_log, delete_subtitles, blacklist_delete_all, blacklist_delete
|
|
from helper import path_mappings
|
|
from get_subtitle import episode_download_subtitles
|
|
from event_handler import event_stream
|
|
|
|
|
|
# GET: get blacklist
|
|
# POST: add blacklist
|
|
# DELETE: remove blacklist
|
|
class EpisodesBlacklist(Resource):
|
|
@authenticate
|
|
def get(self):
|
|
start = request.args.get('start') or 0
|
|
length = request.args.get('length') or -1
|
|
|
|
data = TableBlacklist.select(TableShows.title.alias('seriesTitle'),
|
|
TableEpisodes.season.concat('x').concat(TableEpisodes.episode).alias('episode_number'),
|
|
TableEpisodes.title.alias('episodeTitle'),
|
|
TableEpisodes.sonarrSeriesId,
|
|
TableBlacklist.provider,
|
|
TableBlacklist.subs_id,
|
|
TableBlacklist.language,
|
|
TableBlacklist.timestamp)\
|
|
.join(TableEpisodes, on=(TableBlacklist.sonarr_episode_id == TableEpisodes.sonarrEpisodeId))\
|
|
.join(TableShows, on=(TableBlacklist.sonarr_series_id == TableShows.sonarrSeriesId))\
|
|
.order_by(TableBlacklist.timestamp.desc())\
|
|
.limit(length)\
|
|
.offset(start)\
|
|
.dicts()
|
|
data = list(data)
|
|
|
|
for item in data:
|
|
# Make timestamp pretty
|
|
item["parsed_timestamp"] = datetime.datetime.fromtimestamp(int(item['timestamp'])).strftime('%x %X')
|
|
item.update({'timestamp': pretty.date(datetime.datetime.fromtimestamp(item['timestamp']))})
|
|
|
|
postprocessEpisode(item)
|
|
|
|
return jsonify(data=data)
|
|
|
|
@authenticate
|
|
def post(self):
|
|
sonarr_series_id = int(request.args.get('seriesid'))
|
|
sonarr_episode_id = int(request.args.get('episodeid'))
|
|
provider = request.form.get('provider')
|
|
subs_id = request.form.get('subs_id')
|
|
language = request.form.get('language')
|
|
|
|
episodeInfo = TableEpisodes.select(TableEpisodes.path)\
|
|
.where(TableEpisodes.sonarrEpisodeId == sonarr_episode_id)\
|
|
.dicts()\
|
|
.get()
|
|
|
|
media_path = episodeInfo['path']
|
|
subtitles_path = request.form.get('subtitles_path')
|
|
|
|
blacklist_log(sonarr_series_id=sonarr_series_id,
|
|
sonarr_episode_id=sonarr_episode_id,
|
|
provider=provider,
|
|
subs_id=subs_id,
|
|
language=language)
|
|
delete_subtitles(media_type='series',
|
|
language=language,
|
|
forced=False,
|
|
hi=False,
|
|
media_path=path_mappings.path_replace(media_path),
|
|
subtitles_path=subtitles_path,
|
|
sonarr_series_id=sonarr_series_id,
|
|
sonarr_episode_id=sonarr_episode_id)
|
|
episode_download_subtitles(sonarr_episode_id)
|
|
event_stream(type='episode-history')
|
|
return '', 200
|
|
|
|
@authenticate
|
|
def delete(self):
|
|
if request.args.get("all") == "true":
|
|
blacklist_delete_all()
|
|
else:
|
|
provider = request.form.get('provider')
|
|
subs_id = request.form.get('subs_id')
|
|
blacklist_delete(provider=provider, subs_id=subs_id)
|
|
return '', 204
|