feat: integrate api in electron app

This commit is contained in:
kunkka 2020-10-27 23:08:38 +08:00
parent bd29570e31
commit 74bf714c28
240 changed files with 21003 additions and 112 deletions

View file

@ -0,0 +1,82 @@
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>更新头像</title>
</head>
<body>
<input id="file" type="file" name="filename" />
<img id="avatar" style="height: 200px; width: 200px; border-radius: 50%" />
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.20.0-0/axios.min.js
"></script>
<script>
const phone = '';
const password = '';
let cookieToken = '';
if (!phone || !password) {
const msg = '请设置你的手机号码和密码';
alert(msg);
throw new Error(msg);
}
main();
login();
async function main() {
document.querySelector('input[type="file"]').addEventListener(
'change',
function (e) {
var file = this.files[0];
upload(file);
},
false,
);
const res = await axios({
url: `/user/detail?uid=32953014&timestamp=${Date.now()}`,
withCredentials: true, //关键
});
document.querySelector('#avatar').src = res.data.profile.avatarUrl;
}
async function login() {
const res = await axios({
url: `/login/cellphone?phone=${phone}&password=${password}`,
withCredentials: true, //关键
});
cookieToken = res.data.cookie;
}
async function upload(file) {
var formData = new FormData();
formData.append('imgFile', file);
const imgSize = await getImgSize(file);
const res = await axios({
method: 'post',
url: `http://localhost:3000/avatar/upload?cookie=${cookieToken}&imgSize=${
imgSize.width
}&imgX=0&imgY=0&timestamp=${Date.now()}`,
headers: {
'Content-Type': 'multipart/form-data',
},
data: formData,
});
document.querySelector('#avatar').src = res.data.data.url;
}
function getImgSize(file) {
return new Promise((resolve, reject) => {
let reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function (theFile) {
let image = new Image();
image.src = theFile.target.result;
image.onload = function () {
resolve({
width: this.width,
height: this.height,
});
};
};
});
}
</script>
</body>
</html>

56
napi/public/index.html Normal file
View file

@ -0,0 +1,56 @@
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>网易云音乐 API</title>
</head>
<body>
<h1>网易云音乐 API</h1>
当你看到这个页面时,这个服务已经成功跑起来了~
<a href="https://binaryify.github.io/NeteaseCloudMusicApi/">查看文档</a>
<h2>例子:</h2>
<ul>
<li>1. <a href="/search?keywords=海阔天空">搜索</a></li>
<li>2. <a href="/comment/music?id=186016&limit=1">歌曲评论</a></li>
<li>3. <a href="/dj/program?rid=336355127">电台节目</a></li>
</ul>
<style>
html,
body {
height: 100vh;
width: 100vw;
margin: 0;
padding: 0;
background: #ffffff;
text-align: center;
margin-top: 30px;
overflow: hidden;
}
* {
color: rgb(100, 100, 100);
}
a {
color: #42b983;
}
ul,
li {
margin: 0;
}
ul {
margin-left: -40px;
line-height: 30px;
}
li {
list-style: none;
}
</style>
</body>
</html>

View file

@ -0,0 +1,91 @@
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>歌单封面上传</title>
</head>
<body>
<input id="file" type="file" name="filename" />
<img
id="playlist_cover"
style="height: 200px; width: 200px; border-radius: 50%"
/>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.20.0-0/axios.min.js
"></script>
<script>
const phone = '';
const password = '';
const playlist_id = '';
let cookieToken = '';
if (!phone || !password) {
const msg = '请设置你的手机号码和密码';
alert(msg);
throw new Error(msg);
}
if (!playlist_id) {
const msg = '请设置你的歌单id';
alert(msg);
throw new Error(msg);
}
main();
login();
async function main() {
document.querySelector('input[type="file"]').addEventListener(
'change',
function (e) {
var file = this.files[0];
upload(file);
},
false,
);
const res = await axios({
url: `/playlist/detail?id=${playlist_id}&timestamp=${Date.now()}`,
});
document.querySelector('#playlist_cover').src =
res.data.playlist.coverImgUrl;
}
async function login() {
const res = await axios({
url: `/login/cellphone?phone=${phone}&password=${password}`,
withCredentials: true, //关键
});
cookieToken = res.data.cookie;
}
async function upload(file) {
var formData = new FormData();
formData.append('imgFile', file);
const imgSize = await getImgSize(file);
const res = await axios({
method: 'post',
url: `http://localhost:3000/playlist/cover/update?id=${playlist_id}&cookie=${cookieToken}&imgSize=${
imgSize.width
}&imgX=0&imgY=0&timestamp=${Date.now()}`,
headers: {
'Content-Type': 'multipart/form-data',
},
data: formData,
});
document.querySelector('#playlist_cover').src = res.data.data.url;
}
function getImgSize(file) {
return new Promise((resolve, reject) => {
let reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function (theFile) {
let image = new Image();
image.src = theFile.target.result;
image.onload = function () {
resolve({
width: this.width,
height: this.height,
});
};
};
});
}
</script>
</body>
</html>

61
napi/public/test.html Normal file
View file

@ -0,0 +1,61 @@
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>test</title>
</head>
<body>
<p>请在控制台看结果</p>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/axios/0.18.0/axios.min.js"></script>
<script>
const phone = '';
const password = '';
if (!phone || !password) {
const msg = '请设置你的手机号码和密码';
alert(msg);
throw new Error(msg);
}
$.ajax({
url: `/login/cellphone?phone=${phone}&password=${password}`,
xhrFields: {
withCredentials: true, //关键
},
success: function (data) {
console.log(data);
$.ajax({
url: `/recommend/resource `,
xhrFields: {
withCredentials: true, //关键
},
success: function (data) {
console.log(data);
},
error: function (err) {
console.log(err);
},
});
},
error: function (err) {
console.log(err);
},
});
axios({
url: `/login/cellphone?phone=${phone}&password=${password}`,
withCredentials: true, //关键
}).then(function (res) {
console.log(res.data);
axios({
url: `/recommend/resource`,
withCredentials: true, //关键
}).then(function (res) {
console.log(res.data);
});
});
</script>
</body>
</html>