|
@@ -492,7 +492,8 @@ async def make_anchor_video_gSlide(req:util.models.gSlide_req,token: str = Depen
|
|
|
proto_req.avatar = req.avatar
|
|
|
proto_req.multiLang = req.multiLang
|
|
|
video_id = save_history(proto_req,name_hash,user_id)
|
|
|
- x = threading.Thread(target=gen_video_queue, args=(name_hash,name, text_content, image_urls,int(req.avatar),req.multiLang,video_id,user_id))
|
|
|
+ freeTrial = 6 in util.user.get_user_role_list(user_id)
|
|
|
+ x = threading.Thread(target=gen_video_queue, args=(name_hash,name, text_content, image_urls,int(req.avatar),req.multiLang,video_id,user_id,freeTrial))
|
|
|
x.start()
|
|
|
return {"msg":"ok"}
|
|
|
|
|
@@ -563,7 +564,8 @@ async def make_anchor_video(req:util.models.request,token: str = Depends(oauth2_
|
|
|
return {'msg':{'eng':req.imgurl+'cant be proccessed','zh':"無法辨別圖片網址"+req.imgurl}}
|
|
|
user_id = get_user_id(token)
|
|
|
video_id = save_history(req,name_hash,user_id)
|
|
|
- x = threading.Thread(target=gen_video_queue, args=(name_hash,req.name, req.text_content, req.image_urls,int(req.avatar),req.multiLang,video_id,user_id))
|
|
|
+ freeTrial = 6 in util.user.get_user_role_list(user_id)
|
|
|
+ x = threading.Thread(target=gen_video_queue, args=(name_hash,req.name, req.text_content, req.image_urls,int(req.avatar),req.multiLang,video_id,user_id,freeTrial))
|
|
|
x.start()
|
|
|
|
|
|
if first(db.query('SELECT COUNT(1) FROM video_queue'))['COUNT(1)'] >= 3:
|
|
@@ -600,7 +602,8 @@ async def make_anchor_video_noAuth(req:util.models.request):
|
|
|
return {'msg':{'eng':req.imgurl+'cant be proccessed','zh':"無法辨別圖片網址"+req.imgurl}}
|
|
|
user_id = get_user_id(token)
|
|
|
video_id = save_history(req,name_hash,user_id)
|
|
|
- x = threading.Thread(target=gen_video_queue, args=(name_hash,req.name, req.text_content, req.image_urls,int(req.avatar),req.multiLang,video_id,user_id))
|
|
|
+ freeTrial = 6 in util.user.get_user_role_list(user_id)
|
|
|
+ x = threading.Thread(target=gen_video_queue, args=(name_hash,req.name, req.text_content, req.image_urls,int(req.avatar),req.multiLang,video_id,user_id,freeTrial))
|
|
|
x.start()
|
|
|
|
|
|
if first(db.query('SELECT COUNT(1) FROM video_queue'))['COUNT(1)'] >= 3:
|
|
@@ -637,7 +640,8 @@ async def make_anchor_video_noAuth2(req:util.models.request):
|
|
|
return {'msg':{'eng':req.imgurl+'cant be proccessed','zh':"無法辨別圖片網址"+req.imgurl}}
|
|
|
|
|
|
video_id = save_history(req,name_hash,-1)
|
|
|
- x = threading.Thread(target=gen_video_queue, args=(name_hash,req.name, req.text_content, req.image_urls,int(req.avatar),req.multiLang,video_id,-1))
|
|
|
+ freeTrial = True
|
|
|
+ x = threading.Thread(target=gen_video_queue, args=(name_hash,req.name, req.text_content, req.image_urls,int(req.avatar),req.multiLang,video_id,-1,freeTrial))
|
|
|
x.start()
|
|
|
|
|
|
if first(db.query('SELECT COUNT(1) FROM video_queue'))['COUNT(1)'] >= 3:
|
|
@@ -666,7 +670,68 @@ async def make_anchor_video_eng(req:util.models.request_eng,token: str = Depends
|
|
|
return {'msg':{'eng':req.imgurl+'cant be proccessed','zh':"無法辨別圖片網址"+req.imgurl}}
|
|
|
user_id = get_user_id(token)
|
|
|
video_id = save_history(req,name_hash, user_id)
|
|
|
- x = threading.Thread(target=gen_video_queue_eng, args=(name_hash,req.name, req.text_content, req.image_urls,req.sub_titles,int(req.avatar),video_id))
|
|
|
+ freeTrial = 6 in util.user.get_user_role_list(user_id)
|
|
|
+ x = threading.Thread(target=gen_video_queue_eng, args=(name_hash,req.name, req.text_content, req.image_urls,req.sub_titles,int(req.avatar),video_id,freeTrial))
|
|
|
+ x.start()
|
|
|
+
|
|
|
+ if first(db.query('SELECT COUNT(1) FROM video_queue'))['COUNT(1)'] >= 3:
|
|
|
+ return {'msg':{'eng':'There are many videos have been processing, please wait.','zh':'目前有多部影片處理中,煩請耐心等候'}}
|
|
|
+ else:
|
|
|
+ return {'msg':{'eng':'Processing video requires a few minutes, please wait for notification','zh':'影片處理需要數分鐘,請等待通知'}}
|
|
|
+ return {"msg":"ok"}
|
|
|
+
|
|
|
+@app.post("/make_anchor_video_eng_noAuth")
|
|
|
+async def make_anchor_video_eng(req:util.models.request_eng):
|
|
|
+ db_check()
|
|
|
+ if len(req.image_urls) != len(req.sub_titles) or len(req.sub_titles) != len(req.text_content):
|
|
|
+ return {'msg':{'eng':'number of subtitles and images(videos) should be the same','zh':'副標題數量、圖片(影片)數量以及台詞數量必須一致'}}
|
|
|
+ for idx in range(len(req.image_urls)):
|
|
|
+ if 'http' not in req.image_urls[idx]:
|
|
|
+ req.image_urls[idx] = 'http://'+req.image_urls[idx]
|
|
|
+ name_hash = str(time.time()).replace('.','')
|
|
|
+ for imgu in req.image_urls:
|
|
|
+ try:
|
|
|
+ if get_url_type(imgu) =='video/mp4':
|
|
|
+ r=requests.get(imgu)
|
|
|
+ else:
|
|
|
+ im = Image.open(requests.get(imgu, stream=True).raw)
|
|
|
+ im= im.convert("RGB")
|
|
|
+ except:
|
|
|
+ return {'msg':{'eng':req.imgurl+'cant be proccessed','zh':"無法辨別圖片網址"+req.imgurl}}
|
|
|
+
|
|
|
+ video_id = save_history(req,name_hash, -1)
|
|
|
+ freeTrial = True
|
|
|
+ x = threading.Thread(target=gen_video_queue_eng, args=(name_hash,req.name, req.text_content, req.image_urls,req.sub_titles,int(req.avatar),video_id,freeTrial))
|
|
|
+ x.start()
|
|
|
+
|
|
|
+ if first(db.query('SELECT COUNT(1) FROM video_queue'))['COUNT(1)'] >= 3:
|
|
|
+ return {'msg':{'eng':'There are many videos have been processing, please wait.','zh':'目前有多部影片處理中,煩請耐心等候'}}
|
|
|
+ else:
|
|
|
+ return {'msg':{'eng':'Processing video requires a few minutes, please wait for notification','zh':'影片處理需要數分鐘,請等待通知'}}
|
|
|
+ return {"msg":"ok"}
|
|
|
+
|
|
|
+@app.post("/make_anchor_video_eng_noAuth2")
|
|
|
+async def make_anchor_video_eng(req:util.models.request_eng):
|
|
|
+ db_check()
|
|
|
+ if len(req.image_urls) != len(req.sub_titles) or len(req.sub_titles) != len(req.text_content):
|
|
|
+ return {'msg':{'eng':'number of subtitles and images(videos) should be the same','zh':'副標題數量、圖片(影片)數量以及台詞數量必須一致'}}
|
|
|
+ for idx in range(len(req.image_urls)):
|
|
|
+ if 'http' not in req.image_urls[idx]:
|
|
|
+ req.image_urls[idx] = 'http://'+req.image_urls[idx]
|
|
|
+ name_hash = str(time.time()).replace('.','')
|
|
|
+ for imgu in req.image_urls:
|
|
|
+ try:
|
|
|
+ if get_url_type(imgu) =='video/mp4':
|
|
|
+ r=requests.get(imgu)
|
|
|
+ else:
|
|
|
+ im = Image.open(requests.get(imgu, stream=True).raw)
|
|
|
+ im= im.convert("RGB")
|
|
|
+ except:
|
|
|
+ return {'msg':{'eng':req.imgurl+'cant be proccessed','zh':"無法辨別圖片網址"+req.imgurl}}
|
|
|
+
|
|
|
+ video_id = save_history(req,name_hash, -1)
|
|
|
+ freeTrial = True
|
|
|
+ x = threading.Thread(target=gen_video_queue_eng, args=(name_hash,req.name, req.text_content, req.image_urls,req.sub_titles,int(req.avatar),video_id,freeTrial))
|
|
|
x.start()
|
|
|
|
|
|
if first(db.query('SELECT COUNT(1) FROM video_queue'))['COUNT(1)'] >= 3:
|
|
@@ -971,7 +1036,7 @@ def gen_video_long_queue(name_hash,name,text_content, image_urls,avatar,multiLan
|
|
|
db.query('UPDATE video_queue_status SET status = 0')
|
|
|
db.close()
|
|
|
|
|
|
-def gen_video_queue(name_hash,name,text_content, image_urls,avatar,multiLang,video_id,user_id):
|
|
|
+def gen_video_queue(name_hash,name,text_content, image_urls,avatar,multiLang,video_id,user_id,freeTrial):
|
|
|
db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/AI_anchor?charset=utf8mb4')
|
|
|
if name_hash == 'keepRunning':
|
|
|
if first(db.query('SELECT COUNT(1) FROM video_queue where video_type="short"'))['COUNT(1)'] == 0:
|
|
@@ -1006,7 +1071,7 @@ def gen_video_queue(name_hash,name,text_content, image_urls,avatar,multiLang,vid
|
|
|
c = rpyc.connect("localhost", 8858)
|
|
|
c._config['sync_request_timeout'] = None
|
|
|
remote_svc = c.root
|
|
|
- my_answer = remote_svc.call_video(top1['name_hash'],top1['name'],top1['text_content'].split(','), top1['image_urls'].split(','),top1['multiLang'],top1['avatar']) # method call
|
|
|
+ my_answer = remote_svc.call_video(top1['name_hash'],top1['name'],top1['text_content'].split(','), top1['image_urls'].split(','),top1['multiLang'],top1['avatar'],top1['freeTrial']) # method call
|
|
|
shutil.copy(tmp_video_dir+top1['name_hash']+'.mp4',video_dest+top1['name_hash']+'.mp4')
|
|
|
os.remove(tmp_video_dir+top1['name_hash']+'.mp4')
|
|
|
vid_duration = VideoFileClip(video_dest+top1['name_hash']+'.mp4').duration
|
|
@@ -1023,7 +1088,7 @@ def gen_video_queue(name_hash,name,text_content, image_urls,avatar,multiLang,vid
|
|
|
db.query('UPDATE history_input SET duration ='+str(vid_duration)+' WHERE id='+str(video_id)+';')
|
|
|
if left_time is None:
|
|
|
left_time = 5*60
|
|
|
- if left_time < vid_duration:
|
|
|
+ if left_time < vid_duration and freeTrial!=1:
|
|
|
msg = '您本月額度剩下'+str(left_time)+'秒,此部影片有'+str(vid_duration)+'秒, 若要繼續產生影片請至 192.168.1.107:8887/confirm_add_value?name_hash='+name_hash+' 加值'
|
|
|
print(msg)
|
|
|
msg =msg.encode(encoding='utf-8')
|
|
@@ -1044,7 +1109,7 @@ def gen_video_queue(name_hash,name,text_content, image_urls,avatar,multiLang,vid
|
|
|
db.query('UPDATE video_queue_status SET status = 0')
|
|
|
db.close()
|
|
|
|
|
|
-def gen_video_queue_eng(name_hash,name,text_content, image_urls,sub_titles,avatar,video_id):
|
|
|
+def gen_video_queue_eng(name_hash,name,text_content, image_urls,sub_titles,avatar,video_id,freeTrial):
|
|
|
db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/AI_anchor?charset=utf8mb4')
|
|
|
if name_hash == 'keepRunning':
|
|
|
if first(db.query('SELECT COUNT(1) FROM video_queue where video_type="eng"'))['COUNT(1)'] == 0:
|
|
@@ -1080,7 +1145,7 @@ def gen_video_queue_eng(name_hash,name,text_content, image_urls,sub_titles,avata
|
|
|
c = rpyc.connect("localhost", 8858)
|
|
|
c._config['sync_request_timeout'] = None
|
|
|
remote_svc = c.root
|
|
|
- my_answer = remote_svc.call_video_eng(top1['name_hash'],top1['name'],top1['text_content'].split(','), top1['image_urls'].split(','),top1['subtitles'].split(','),top1['avatar']) # method call
|
|
|
+ my_answer = remote_svc.call_video_eng(top1['name_hash'],top1['name'],top1['text_content'].split(','), top1['image_urls'].split(','),top1['subtitles'].split(','),top1['avatar'],top1['freeTrial']) # method call
|
|
|
shutil.copy(tmp_video_dir+top1['name_hash']+'.mp4',video_dest+top1['name_hash']+'.mp4')
|
|
|
os.remove(tmp_video_dir+top1['name_hash']+'.mp4')
|
|
|
notify_group(name+"(ENG)的影片已經產生完成囉! www.choozmo.com:8168/"+video_sub_folder+name_hash+".mp4")
|