diff --git a/plugins/ffmpeg.py b/plugins/ffmpeg.py index 4aab044..f1e26a1 100644 --- a/plugins/ffmpeg.py +++ b/plugins/ffmpeg.py @@ -45,6 +45,7 @@ class Ffmpeg_controller: self.object_filename = None self.concat = True self.pause = False + self.autostart = False self.tasklist = [] self.convert_task_thread = threading.Thread(target=self.convert_task_func, args=()) @@ -57,6 +58,7 @@ class Ffmpeg_controller: _create_floder('res/ffmpeg_tmp') _create_floder('res/ffmpeg_finished') _create_floder('res/ffmpeg_task') + _create_floder('res/ffmpeg_old') _create_floder('res/ffmpeg_complet') while True: @@ -79,6 +81,7 @@ class Ffmpeg_controller: dp.app = 'ffmpeg' dp.body = b'start' dp.head['filename'] = self.tasklist.pop(0) + self.autostart = dp.head['filename'] send_queue.put(dp) if dp.method == 'post' and dp.body == b'start': # config ffmpeg is server or client @@ -160,6 +163,10 @@ class Ffmpeg_controller: pass os.remove('res/ffmpeg_finished/filelist.txt') + if self.autostart: + os.rename(self.autostart, self.autostart.replace('ffmpeg_task', 'ffmpeg_old')) + self.autostart = None + def run_as_server(self): _padding_to_convert = os.listdir('res/ffmpeg_tmp') @@ -183,6 +190,10 @@ class Ffmpeg_controller: ndp.body = result.encode() send_queue.put(ndp) + elif dp.method == 'post' and dp.body == b'reset': + padding_to_convert = already_in_convert + already_in_convert = [] + elif dp.method == 'post' and dp.body == b'stop': break diff --git a/plugins/net.py b/plugins/net.py index 99761ad..7a2d2e2 100644 --- a/plugins/net.py +++ b/plugins/net.py @@ -356,6 +356,7 @@ class Connection: self.netowrk_controller = netowrk_controller self.id = None self.flag = None + self.f = None self.buff = b'' self.padding_queue = queue.Queue() self.thread_send = None @@ -414,6 +415,7 @@ class Connection: if dp.method == 'file': create_floder(dp.head['filename']) create_floder('tmp/' + dp.head['filename']) + self.f = open('tmp/' + dp.head['filename'], 'ab') if dp.method == 'file' and os.path.exists(dp.head['filename']): os.remove(dp.head['filename']) @@ -428,8 +430,7 @@ class Connection: if still_need > len(self.buff): # writing tmp data if dp.method == 'file': - with open('tmp/' + dp.head['filename'], 'ab') as f: - still_need -= f.write(self.buff) + still_need -= self.f.write(self.buff) else: dp.body += self.buff still_need -= len(self.buff) @@ -437,8 +438,9 @@ class Connection: else: # download complete setuation if dp.method == 'file': - with open('tmp/' + dp.head['filename'], 'ab') as f: - f.write(self.buff[:still_need]) + self.f.write(self.buff[:still_need]) + self.f.close() + self.f = None else: dp.body = self.buff[:still_need] self.buff = self.buff[still_need:] @@ -452,6 +454,9 @@ class Connection: # below code are using to closed connection + if self.f: + self.f.close() + self.f = None self.conn.close() self.netowrk_controller.del_connection(self)