bazarr/bazarr/api/subtitles/subtitles_info.py

42 lines
1.5 KiB
Python

# coding=utf-8
from flask import request, jsonify
from flask_restful import Resource
from subliminal_patch.core import guessit
from ..utils import authenticate
class SubtitleNameInfo(Resource):
@authenticate
def get(self):
names = request.args.getlist('filenames[]')
results = []
for name in names:
opts = dict()
opts['type'] = 'episode'
guessit_result = guessit(name, options=opts)
result = {}
result['filename'] = name
if 'subtitle_language' in guessit_result:
result['subtitle_language'] = str(guessit_result['subtitle_language'])
result['episode'] = 0
if 'episode' in guessit_result:
if isinstance(guessit_result['episode'], list):
# for multiple episodes file, choose the first episode number
if len(guessit_result['episode']):
# make sure that guessit returned a list of more than 0 items
result['episode'] = int(guessit_result['episode'][0])
elif isinstance(guessit_result['episode'], (str, int)):
# if single episode (should be int but just in case we cast it to int)
result['episode'] = int(guessit_result['episode'])
if 'season' in guessit_result:
result['season'] = int(guessit_result['season'])
else:
result['season'] = 0
results.append(result)
return jsonify(data=results)