Commit f21881b9 by haojie

异步洗稿

parent 5e4e82bd
import { liveContentRegenerate, liveContentRegenerateCallback } from '@/utils/api/userApi';
import { writeLog } from '@/utils/pyqt';
import { onBeforeUnmount, ref } from 'vue';
export default function () {
......@@ -34,6 +35,10 @@ export default function () {
openConfuseInterval('');
}
} catch (e) {
writeLog({
name: 'old 洗稿提交',
value: e,
});
console.log(e);
}
};
......@@ -53,6 +58,10 @@ export default function () {
console.log(res.data);
}
} catch (e) {
writeLog({
name: 'old 洗稿回调',
value: e,
});
console.log(e);
}
};
......
......@@ -14,6 +14,7 @@ import { useRoute } from 'vue-router';
import { callPyjsInWindow, injectWindow } from '@/utils/pyqt';
import { getliveTaskReply, getUserCookie } from '@/utils/api/userApi';
import { useStore } from 'vuex';
import { writeLog } from '@/utils/pyqt';
// 互动回复
......@@ -155,6 +156,10 @@ const mergeCallback = (params: any) => {
addVideo.value = params.add_video;
}
} catch (e) {
writeLog({
name: 'mergeCallback error',
value: e,
});
console.log(e);
}
};
......
......@@ -32,6 +32,7 @@ import useConfuse from '@/hooks/useConfuse';
import { CONFUSE_STATUS } from '@/service/Live';
import { processTextCallback } from '@/hooks/useScript';
import { scriptTypeText } from '@/service/CreateLive';
import { writeLog } from '@/utils/pyqt';
const { currentConfuseId, confuseList, currentStartConfuse, openConfuseInterval } = useConfuse();
const { openInterval: confuseInterval } = processTextCallback();
......@@ -375,6 +376,10 @@ const getLive = async () => {
addVideoList.value = addVideoList.value.concat(res.data);
}
} catch (e) {
writeLog({
name: 'getliveTaskReply 获取直播互动失败',
value: e,
});
console.log(e);
}
};
......@@ -395,6 +400,10 @@ const regenerate = async (list: any[]) => {
console.log('重新生成直播,已提交');
}
} catch (e) {
writeLog({
name: 'only live regenerate error',
value: e,
});
console.log(e);
}
};
......@@ -497,6 +506,10 @@ const getDetail = async (type: string = '') => {
}
}
} catch (e) {
writeLog({
name: '获取直播链接失败',
value: e,
});
console.log(e);
}
};
......@@ -523,7 +536,11 @@ const submitVideo = () => {
show_message('empty-1 py');
}
} catch (e) {
show_message(e.message);
console.log(e);
writeLog({
name: 'only submitVideo error',
value: e,
});
}
};
......@@ -575,6 +592,10 @@ const mergeCallback = (params: any) => {
console.log(params);
}
} catch (e) {
writeLog({
name: 'only mergeCallback error',
value: e,
});
console.log(e);
}
};
......
......@@ -83,12 +83,12 @@ import {
getFile,
} from '@/utils/tool';
import { useStore } from 'vuex';
import { createLiveKeys, scriptTypeText, scriptTypePhonetics, mergeSameAudio } from '@/service/CreateLive';
import { createLiveKeys, scriptTypeText, scriptTypePhonetics, mergeSameAudio, filterFiled } from '@/service/CreateLive';
import { getLiveTaskInfo, createDrafts, getDraftsDetail, liveTts, createLiveTask } from '@/utils/api/userApi';
import { useRoute, onBeforeRouteLeave } from 'vue-router';
import routerConfig from '@/router/tool';
import { onUpdateLiveTask } from '@/service/Common';
import { callPyjsInWindow } from '@/utils/pyqt';
import { callPyjsInWindow, writeLog } from '@/utils/pyqt';
import { useLiveInfoSubmit } from '@/hooks/useStoreCommit';
import { processTextCallback } from '@/hooks/useScript';
import CustomException from '@/utils/error';
......@@ -101,7 +101,7 @@ const {
live_task_id,
audioStart,
openInterval,
filterFiled,
getCreateLiveInfo,
submitSuccessed,
uploadToAly,
} = processTextCallback();
......@@ -275,6 +275,10 @@ const getEditInfo = async (id: any, type: string) => {
}
}
} catch (e) {
writeLog({
name: 'createLive getEditInfo error',
value: e,
});
console.log(e);
}
};
......@@ -356,7 +360,7 @@ const onSave = () => {
// 保存为草稿
const onSaveDrafts = async () => {
let params = filterFiled();
let params = filterFiled(getCreateLiveInfo());
try {
loading.value = true;
let res: any = await createDrafts(params);
......@@ -379,7 +383,7 @@ const editAudioSave = async () => {
try {
loading.value = true;
await audioSplit();
let params = filterFiled();
let params = filterFiled(getCreateLiveInfo());
let res: any = await onUpdateLiveTask(route.query.id, params);
if (res) {
if (route.query.type === 'edit') {
......@@ -392,6 +396,10 @@ const editAudioSave = async () => {
}
loading.value = false;
} catch (e) {
writeLog({
name: 'createLive editAudioSave error',
value: e,
});
loading.value = false;
console.log(e);
}
......@@ -508,7 +516,7 @@ const audioSubmit = async () => {
if (route.query.type == 'edit_drafts') {
type = 'edit_drafts';
}
let params = filterFiled(type);
let params = filterFiled(getCreateLiveInfo(), type);
let res: any = await createLiveTask(params);
if (res.code == 0) {
console.log('创建成功-', res.data.id);
......@@ -517,6 +525,10 @@ const audioSubmit = async () => {
}
loading.value = false;
} catch (e) {
writeLog({
name: 'createLive audioSubmit error',
value: e,
});
loading.value = false;
console.log(e);
}
......
......@@ -7,8 +7,11 @@ import {
updateDrafts,
} from '@/utils/api/userApi';
import { typeTones, typeSoundColor } from '@/service/CreateLive';
import { show_message } from '@/utils/tool';
import { show_message, alyOssUpload } from '@/utils/tool';
import { LIVE_AUDIT_STATUS } from './Live';
import { audioMerge, splitAudio } from '@/utils/audio';
import { v4 } from 'uuid';
import { writeLog } from '@/utils/pyqt';
// 阿里云上传配置
export const getUploadConfig = async () => {
......@@ -112,6 +115,10 @@ export const onUpdateLiveTask = async (id: any, data: any) => {
}
return false;
} catch (e) {
writeLog({
name: 'common onUpdateLiveTask error',
value: e,
});
console.log(e);
return false;
}
......@@ -127,7 +134,87 @@ export const onUpdateDrafts = async (id: any, data: any) => {
}
return false;
} catch (e) {
writeLog({
name: 'common onUpdateDrafts error',
value: e,
});
console.log(e);
return false;
}
};
// 音频合并切割
export const audioStart = async (list: any[], dimensional: boolean = true) => {
let file = await audioMerge(list);
if (file) {
// 开始切割
let split_list = await splitAudio(file, 300);
// 合并后的文件上传
if (split_list && split_list.length) {
let result = await uploadToAly(split_list);
console.log('上传完毕');
// 是否一维数组
if (dimensional) {
console.log(result);
return result;
} else {
console.log([result]);
return [result];
}
}
} else {
console.log('没有文件');
}
};
// 循环上传阿里云
export const uploadToAly = async (fileList: File[]) => {
// 获取文件名
const getFileName = (file: any) => {
return file.name ? file.name : v4();
};
const uploadSuccess = (name: string, url: string) => {
alyList.push([
{
content: url,
},
]);
};
// 每次上传前清空数组
let alyList = [];
console.log('任务数');
console.log(fileList.length);
// 获取阿里云配置
let config = await getUploadConfig();
for (let i = 0; i < fileList.length; i++) {
let file = fileList[i];
let retryNum = 0;
while (true) {
if (retryNum >= 5) {
console.log('音频块已经重试5次,跳过');
break;
}
if (retryNum) {
config = await getUploadConfig();
}
try {
// 上传阿里云
await alyOssUpload(config, file, uploadSuccess, () => false, getFileName(file));
} catch (e) {
writeLog({
name: 'common uploadToAly.alyOssUpload error',
value: e,
});
if (e && e.status == 'error') {
// 重新上传
console.log('重新上传');
retryNum += 1;
continue;
}
}
break;
}
}
// 上传完毕
return alyList;
};
......@@ -5,6 +5,7 @@ import theme from './modules/theme';
import language from './modules/language';
import live from './modules/live';
import navbar from './modules/navbar';
import asyncCreateLive from './modules/asyncCreateLive';
export const store = createStore({
modules: {
......@@ -14,6 +15,7 @@ export const store = createStore({
language,
live,
navbar,
asyncCreateLive,
},
});
......
import { onRewriteCallback, submitAudioTask, getAudioCallback } from '@/service/CreateLive';
import { writeLog } from '@/utils/pyqt';
const state = {
language: '',
};
type StateType = typeof state;
const mutations = {
// setLang(state: StateType, info: string) {
// state.language = info;
// // 设置html 属性
// document.documentElement.setAttribute('lang', info);
// },
};
const getters = {
// getLang: (state: StateType) => {
// return state.language;
// },
};
const actions = {
// 洗稿
async confuse({ commit }, params) {
const { user_id, live_task_id, task_id, audio_task_id, createLiveInfo } = params;
try {
// 获取洗稿回调
let confuseList = await onRewriteCallback(task_id);
// 提交音频任务
let status = await submitAudioTask(confuseList, createLiveInfo, audio_task_id);
if (status) {
// 打开音频回调轮询
getAudioCallback(audio_task_id, confuseList.length, createLiveInfo, live_task_id);
}
} catch (e) {
writeLog({
name: 'dispatch confuse error',
value: e,
});
console.log(e);
}
},
};
export default {
namespaced: true,
state,
mutations,
actions,
getters,
};
import audiobufferToWav from 'audiobuffer-to-wav';
import request from '@/utils/upLoadRequest';
import { writeLog } from '@/utils/pyqt';
export const createAudioContext = () => {
return new (window.AudioContext || window.webkitAudioContext)();
......@@ -82,14 +83,16 @@ export async function audioMerge(filePaths) {
offset += Math.round(buffer.duration * sampleRate);
});
console.log(buffers);
console.log('zxl');
// 导出合并后的音频数据为 WAV 文件
const mergedData = exportBufferAsWav(mergedBuffer);
console.log('通过了');
const blob = new Blob([mergedData], { type: 'audio/wav' });
console.log('合并完成', blob);
return blob;
} catch (error) {
writeLog({
name: '音频合并失败',
value: error,
});
console.error('音频文件合并失败:', error);
}
}
......
import axios from 'axios';
import { MessagePlugin } from 'tdesign-vue-next';
import { writeLog } from './pyqt';
const instance: any = axios.create({
timeout: 60 * 60 * 1000,
......@@ -19,7 +20,9 @@ instance.interceptors.response.use(
if (data.code === 0) {
return data;
} else {
MessagePlugin.error(data.msg || '请求错误');
let message = data.msg || '请求错误';
MessagePlugin.error(message);
writeLog(message);
return Promise.reject(data.msg);
}
},
......@@ -28,9 +31,13 @@ instance.interceptors.response.use(
if ('response' in err) {
const { message: msg } = err.response.data;
if (err.response.data.indexOf('<Code>UserDisable</Code>') !== -1) {
MessagePlugin.error('阿里云可能欠费');
let message = '阿里云可能欠费';
MessagePlugin.error(message);
writeLog(message);
} else {
MessagePlugin.error(msg || '请求错误');
let message = msg || '请求错误';
MessagePlugin.error(message);
writeLog(message);
}
return err.response;
}
......
......@@ -40,6 +40,17 @@ export const callPyjsInWindow = (name: string, value: any = '', callback: boolea
}
return window.pyjs[name](JSON.stringify(value));
} catch (e) {
writeLog({
name: 'call python error',
value: e,
});
console.error(e);
}
};
// 写入日志
export const writeLog = (value: any) => {
if (window.pyjs && window.pyjs['writeLog']) {
window.pyjs['writeLog'](JSON.stringify(value));
}
};
......@@ -2,7 +2,7 @@ import axios from 'axios';
import { store } from '@/store/index';
import router from '@/router';
import { show_message, isDev } from './tool';
import { callPyjsInWindow } from './pyqt';
import { callPyjsInWindow, writeLog } from './pyqt';
const error_messaage = '请求错误';
......@@ -55,6 +55,7 @@ instance.interceptors.response.use(
if ('response' in err && err['response']) {
const { status, data } = err.response;
if (status == 401) {
writeLog('登录信息已失效');
router.push({
path: '/login',
});
......@@ -63,12 +64,15 @@ instance.interceptors.response.use(
store.commit('user/removeUserInfo');
return;
}
show_message(data.message || error_messaage, 'error');
let message = data.message || error_messaage;
show_message(message, 'error');
writeLog(message);
return err.response;
} else {
// 格式不一致的
let res = err.toJSON();
show_message(res.message, 'error');
writeLog(res.message);
return;
}
},
......
import { MessagePlugin, RequestMethodResponse } from 'tdesign-vue-next';
import request from '@/utils/upLoadRequest';
import { writeLog } from './pyqt';
// import JSZip from 'jszip';
// import { saveAs } from 'file-saver';
......@@ -249,6 +250,10 @@ export const alyOssUpload = (
}
} catch (e) {
console.log(e);
writeLog({
name: 'tool aly upload error',
value: e,
});
reject({
status: 'error',
response: '',
......
import axios from 'axios';
import { writeLog } from './pyqt';
const instance: any = axios.create({
timeout: 60 * 60 * 1000,
......@@ -18,11 +19,25 @@ instance.interceptors.response.use(
if (data.code === 0) {
return data;
}
// 状态不对的
writeLog({
name: 'upLoad request status error',
value: response,
});
},
(err) => {
console.log(err);
if ('response' in err) {
writeLog({
name: 'upLoad request status error',
value: err.response,
});
return err.response;
} else {
writeLog({
name: 'upLoad request status error',
value: err,
});
}
},
);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment