new function ffmpeg shell

This commit is contained in:
2020-04-01 21:53:05 +08:00
parent 60c9bbc4af
commit 6e1b9b7669
2 changed files with 84 additions and 0 deletions

49
plugins/ffmpeg.py Normal file
View File

@@ -0,0 +1,49 @@
import threading
import copy
import os
from mswp import Datapack
from forwarder import receive_queues, send_queue
from config import msw_queue
from config import dprint as print
receive_queue = receive_queues[__name__]
def main():
while True:
ffmpeg_controller = Ffmpeg_controller()
ffmpeg_controller.mainloop()
class Ffmpeg_controller:
def __init__(self):
self.ffmpeg_type = None
self.status = 'disable'
self.padding_to_convert = []
self.already_in_convert = []
self.finished_convert = []
self.mainloop()
def mainloop(self):
while True:
dp = receive_queue.get()
if dp.method == 'post' and dp.body == b'split': # config ffmpeg is server or client
ndp = dp.reply()
ndp.body = 'Spliting file %s' % dp.head['filename']
ndp.body = ndp.body.encode()
send_queue.put(ndp)
if not os.path.exists('resources/ffmpeg_tmp'):
os.mkdir('resources/ffmpeg_tmp')
cmd = 'ffmpeg -i ' + dp.head['filename'] + ' -c copy -f segment -segment_time 20 \
-reset_timestamps 1 resources/' + '%d' + '.mp4'
os.system(cmd)
thread = threading.Thread(target=main, args=(), daemon=True)
thread.start()

35
plugins/shell.py Normal file
View File

@@ -0,0 +1,35 @@
import threading
import copy
import os
import subprocess
from mswp import Datapack
from forwarder import receive_queues, send_queue
from config import msw_queue
from config import dprint as print
receive_queue = receive_queues[__name__]
def main():
while True:
dp = receive_queue.get()
command = dp.body.decode()
try:
result = subprocess.check_output(command, shell=True)
except Exception as e:
result = 'Command %s error, %s: %s' % (command, type(e), str(e))
result = result.encode()
ndp = dp.reply()
ndp.body = try_decode_and_encode(result)
send_queue.put(ndp)
def try_decode_and_encode(data):
try:
return data.decode('gb2312').encode()
except:
return data.decode('utf-8').encode()
thread = threading.Thread(target=main, args=(), daemon=True)
thread.start()