1
0
forked from um/web
qqmusicunlock/src/App.vue

173 lines
6.5 KiB
Vue
Raw Normal View History

2019-07-03 14:50:04 +00:00
<template>
2020-02-06 08:01:35 +00:00
<el-container id="app">
<el-main>
<x-upload v-on:handle_finish="showSuccess" v-on:handle_error="showFail"></x-upload>
<el-row id="app-control">
<el-row style="padding-bottom: 1em; font-size: 14px">
歌曲命名格式
<el-radio name="format" v-model="download_format" label="1">歌曲名</el-radio>
<el-radio name="format" v-model="download_format" label="2">歌手-歌曲名</el-radio>
<el-radio name="format" v-model="download_format" label="3">歌曲名-歌手</el-radio>
<el-checkbox v-model="instant_download" border>立即保存</el-checkbox>
</el-row>
2020-02-06 08:01:35 +00:00
<el-button @click="handleDownloadAll" icon="el-icon-download" plain>下载全部</el-button>
<el-button @click="handleDeleteAll" icon="el-icon-delete" plain type="danger">删除全部</el-button>
</el-row>
<audio :autoplay="playing_auto" :src="playing_url" controls/>
<x-preview :table-data="tableData" :download_format="download_format"
v-on:music_changed="changePlaying"></x-preview>
</el-main>
<el-footer id="app-footer">
<el-row>
音乐解锁移除已购音乐的加密保护
目前支持网易云音乐(ncm)QQ音乐(qmc, mflac, tkm)以及
<a href="https://github.com/ix64/unlock-music/blob/master/README.md" target="_blank">其他格式</a>
<a href="https://github.com/ix64/unlock-music/wiki/使用提示" target="_blank">使用提示</a>
</el-row>
<el-row>
<span>Copyright &copy; 2019</span>
<a href="https://github.com/ix64" target="_blank">MengYX</a>
音乐解锁使用
<a href="https://github.com/ix64/unlock-music/blob/master/LICENSE" target="_blank">MIT许可协议</a>
开放
<a href="https://github.com/ix64/unlock-music" target="_blank">源代码</a>
</el-row>
</el-footer>
</el-container>
2019-07-03 14:50:04 +00:00
</template>
<script>
2020-02-06 08:01:35 +00:00
import upload from "./component/upload"
import preview from "./component/preview"
import {DownloadBlobMusic, RemoveBlobMusic} from "./component/util"
export default {
name: 'app',
2020-02-06 08:01:35 +00:00
components: {
xUpload: upload,
xPreview: preview
},
data() {
return {
activeIndex: '1',
tableData: [],
playing_url: "",
playing_auto: false,
2020-02-06 08:01:35 +00:00
download_format: '2',
instant_download: false,
}
},
2020-02-06 08:01:35 +00:00
created() {
this.$nextTick(function () {
this.finishLoad();
});
},
methods: {
finishLoad() {
2020-02-06 08:01:35 +00:00
const mask = document.getElementById("loader-mask");
if (!!mask) mask.remove();
this.$notify.info({
title: '离线使用',
2019-11-24 11:33:11 +00:00
message: '我们使用PWA技术无网络也能使用<br/>' +
2020-01-27 09:36:20 +00:00
'最近更新支持bkcmp3/bkcflac/tkm<br/>' +
2019-11-24 11:33:11 +00:00
'点击查看 <a target="_blank" href="https://github.com/ix64/unlock-music/wiki/使用提示">使用提示</a>',
2019-11-09 16:59:13 +00:00
dangerouslyUseHTMLString: true,
2019-11-24 11:33:11 +00:00
duration: 10000,
position: 'top-left'
});
},
2020-02-06 08:01:35 +00:00
showSuccess(data) {
if (data.status) {
if (this.instant_download) {
DownloadBlobMusic(data, this.download_format);
RemoveBlobMusic(data);
} else {
2020-02-06 08:01:35 +00:00
this.tableData.push(data);
this.$notify.success({
title: '解锁成功',
message: '成功解锁 ' + data.title,
duration: 3000
});
}
2020-02-07 12:17:45 +00:00
if (process.env.NODE_ENV === 'production') {
let _rp_data = [data.title, data.artist, data.album];
window._paq.push(["trackEvent", "Unlock", data.rawExt + "," + data.mime, JSON.stringify(_rp_data)]);
}
2020-02-06 08:01:35 +00:00
} else {
2020-02-06 08:18:40 +00:00
this.showFail(data.message, data.rawFilename + "." + data.rawExt)
}
},
2020-02-06 08:01:35 +00:00
showFail(errInfo, filename) {
this.$notify.error({
title: '出现问题',
message: errInfo + "" + filename +
',参考<a target="_blank" href="https://github.com/ix64/unlock-music/wiki/使用提示">使用提示</a>',
dangerouslyUseHTMLString: true,
duration: 6000
});
2020-02-07 12:17:45 +00:00
if (process.env.NODE_ENV === 'production') {
window._paq.push(["trackEvent", "Error", errInfo, filename]);
console.error(errInfo, filename);
}
2020-02-06 08:01:35 +00:00
},
changePlaying(url) {
this.playing_url = url;
this.playing_auto = true;
2019-11-23 10:56:45 +00:00
},
handleDeleteAll() {
this.tableData.forEach(value => {
2020-02-06 08:01:35 +00:00
RemoveBlobMusic(value);
});
this.tableData = [];
},
handleDownloadAll() {
let index = 0;
let c = setInterval(() => {
if (index < this.tableData.length) {
2020-02-06 08:01:35 +00:00
DownloadBlobMusic(this.tableData[index], this.download_format);
index++;
} else {
clearInterval(c);
}
2020-02-06 08:01:35 +00:00
}, 300);
}
2020-02-06 08:01:35 +00:00
},
}
2019-07-03 14:50:04 +00:00
</script>
<style>
#app {
font-family: "Helvetica Neue", Helvetica, "PingFang SC",
"Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
padding-top: 30px;
}
#app-footer a {
2020-01-27 04:50:24 +00:00
padding-left: 0.2em;
padding-right: 0.2em;
}
#app-footer {
text-align: center;
font-size: small;
}
#app-control {
padding-top: 1em;
padding-bottom: 1em;
}
2019-07-03 14:50:04 +00:00
</style>