11# coding=utf-8
22
33import os
4- import time
54
5+ from io import BytesIO
66from flask_restx import Resource , Namespace , reqparse
77from subliminal_patch .core import SUBTITLE_EXTENSIONS
88from werkzeug .datastructures import FileStorage
@@ -42,16 +42,12 @@ def patch(self):
4242 """Download an episode subtitles"""
4343 args = self .patch_request_parser .parse_args ()
4444
45- job_id = episode_download_specific_subtitles (sonarr_series_id = args .get ('seriesid' ),
46- sonarr_episode_id = args .get ('episodeid' ),
47- language = args .get ('language' ), hi = args .get ('hi' ).capitalize (),
48- forced = args .get ('forced' ).capitalize (), job_id = None )
45+ episode_download_specific_subtitles (sonarr_series_id = args .get ('seriesid' ),
46+ sonarr_episode_id = args .get ('episodeid' ),
47+ language = args .get ('language' ), hi = args .get ('hi' ).capitalize (),
48+ forced = args .get ('forced' ).capitalize (), job_id = None )
4949
50- # Wait for the job to complete or fail
51- while jobs_queue .get_job_status (job_id = job_id ) in ['pending' , 'running' ]:
52- time .sleep (1 )
53-
54- return jobs_queue .get_job_returned_value (job_id = job_id )
50+ return '' , 204
5551
5652 post_request_parser = reqparse .RequestParser ()
5753 post_request_parser .add_argument ('seriesid' , type = int , required = True , help = 'Series ID' )
@@ -73,7 +69,8 @@ def post(self):
7369 """Upload an episode subtitles"""
7470 args = self .post_request_parser .parse_args ()
7571
76- _ , ext = os .path .splitext (args .get ('file' ).filename )
72+ uploaded_file = args .get ('file' )
73+ _ , ext = os .path .splitext (uploaded_file .filename )
7774
7875 if not isinstance (ext , str ) or ext .lower () not in SUBTITLE_EXTENSIONS :
7976 raise ValueError ('A subtitle of an invalid format was uploaded.' )
@@ -94,21 +91,20 @@ def post(self):
9491 if not os .path .exists (episodePath ):
9592 return 'Episode file not found. Path mapping issue?' , 500
9693
97- job_id = manual_upload_subtitle (path = episodePath ,
98- language = args .get ('language' ),
99- forced = True if args .get ('forced' ) == 'true' else False ,
100- hi = True if args .get ('hi' ) == 'true' else False ,
101- media_type = 'series' ,
102- subtitle = args .get ('file' ),
103- audio_language = episodeInfo .audio_language ,
104- sonarrSeriesId = sonarrSeriesId ,
105- sonarrEpisodeId = sonarrEpisodeId )
106-
107- # Wait for the job to complete or fail
108- while jobs_queue .get_job_status (job_id = job_id ) in ['pending' , 'running' ]:
109- time .sleep (1 )
110-
111- return jobs_queue .get_job_returned_value (job_id = job_id )
94+ subtitle_content = BytesIO (uploaded_file .read ())
95+
96+ manual_upload_subtitle (path = episodePath ,
97+ language = args .get ('language' ),
98+ forced = True if args .get ('forced' ) == 'true' else False ,
99+ hi = True if args .get ('hi' ) == 'true' else False ,
100+ media_type = 'series' ,
101+ subtitle = subtitle_content ,
102+ filename = uploaded_file .filename ,
103+ audio_language = episodeInfo .audio_language ,
104+ sonarrSeriesId = sonarrSeriesId ,
105+ sonarrEpisodeId = sonarrEpisodeId )
106+
107+ return '' , 204
112108
113109 delete_request_parser = reqparse .RequestParser ()
114110 delete_request_parser .add_argument ('seriesid' , type = int , required = True , help = 'Series ID' )
0 commit comments