mirror of
https://github.com/janishutz/MusicPlayerV2.git
synced 2025-11-25 13:04:23 +00:00
add some apple music auth stuff
This commit is contained in:
@@ -9,6 +9,7 @@ const session = require( 'express-session' );
|
||||
const indexer = require( './indexer.js' );
|
||||
const axios = require( 'axios' );
|
||||
const ip = require( 'ip' );
|
||||
const jwt = require( 'jsonwebtoken' );
|
||||
|
||||
|
||||
app.use( bodyParser.urlencoded( { extended: false } ) );
|
||||
@@ -230,6 +231,24 @@ app.get( '/getSongFile', ( req, res ) => {
|
||||
} );
|
||||
|
||||
|
||||
app.get( '/getAppleMusicDevToken', ( req, res ) => {
|
||||
// sign dev token
|
||||
const privateKey = fs.readFileSync( path.join( __dirname + '/config/apple_private_key.p8' ) ).toString();
|
||||
// TODO: Remove secret
|
||||
const config = JSON.parse( fs.readFileSync( path.join( __dirname + '/config/apple-music-api.config.secret.json' ) ) );
|
||||
const jwtToken = jwt.sign( {}, privateKey, {
|
||||
algorithm: "ES256",
|
||||
expiresIn: "180d",
|
||||
issuer: config.teamID,
|
||||
header: {
|
||||
alg: "ES256",
|
||||
kid: config.keyID
|
||||
}
|
||||
} );
|
||||
res.send( jwtToken );
|
||||
} );
|
||||
|
||||
|
||||
app.use( ( request, response, next ) => {
|
||||
response.sendFile( path.join( __dirname + '' ) )
|
||||
} );
|
||||
|
||||
45
frontend/src/components/appleMusic.vue
Normal file
45
frontend/src/components/appleMusic.vue
Normal file
@@ -0,0 +1,45 @@
|
||||
<template>
|
||||
<div>
|
||||
<h1>AppleMusic</h1>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
devTokenAvailable: false,
|
||||
musicKit: null,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
prepare() {
|
||||
document.addEventListener( 'musickitloaded', function() {
|
||||
fetch( 'http://localhost:8081/getAppleMusicDevToken' ).then( res => {
|
||||
if ( res.status === 200 ) {
|
||||
this.devTokenAvailable = true;
|
||||
res.text().then( token => {
|
||||
this.musicKit = MusicKit.configure({
|
||||
developerToken: token,
|
||||
app: {
|
||||
name: 'MusicPlayer',
|
||||
build: '2.1.0'
|
||||
}
|
||||
} );
|
||||
setTimeout( () => {
|
||||
this.musicKit.authorize();
|
||||
}, 100 );
|
||||
} );
|
||||
}
|
||||
} );
|
||||
});
|
||||
}
|
||||
},
|
||||
created() {
|
||||
window.addEventListener( 'DOMContentLoaded', () => {
|
||||
this.prepare();
|
||||
} );
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="home">
|
||||
<div class="home" v-if="musicOrigin === 'local'">
|
||||
<div class="top-bar">
|
||||
<img src="@/assets/logo.png" alt="logo" class="logo">
|
||||
<div class="player-wrapper">
|
||||
@@ -10,6 +10,9 @@
|
||||
<mediaPool @com="( info ) => { handleCom( info ) }" ref="pool"></mediaPool>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="musicOrigin === 'AppleMusic'" class="home">
|
||||
<AppleMusic></AppleMusic>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style>
|
||||
@@ -54,6 +57,7 @@
|
||||
</style>
|
||||
|
||||
<script>
|
||||
import AppleMusic from '@/components/appleMusic.vue';
|
||||
import mediaPool from '@/components/mediaPool.vue';
|
||||
import Player from '@/components/player.vue';
|
||||
|
||||
@@ -62,11 +66,14 @@
|
||||
components: {
|
||||
mediaPool,
|
||||
Player,
|
||||
AppleMusic,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
hasLoadedSongs: false,
|
||||
songQueue: [],
|
||||
// musicOrigin: 'local',
|
||||
musicOrigin: 'AppleMusic',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
Reference in New Issue
Block a user