Merge pull request #1181 from JaxonTekk/main

Copy and Paste Songs Into Playlists
This commit is contained in:
booploops 2022-06-17 14:02:59 -07:00 committed by GitHub
commit b4c2b64089
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 65 additions and 0 deletions

View file

@ -697,6 +697,16 @@
width : 60vw; width : 60vw;
} }
.descriptionEdit {
font-size : 14px;
flex-shrink : unset;
background : transparent;
border : 0px;
color : inherit;
font-family : inherit;
width : 60vw;
}
.playlist-artist { .playlist-artist {
font-size : 20px; font-size : 20px;
margin-bottom: 6px; margin-bottom: 6px;

View file

@ -294,6 +294,18 @@
this.isInLibrary() this.isInLibrary()
}) })
}, },
beforeMount() {
if( window.location.hash.includes("playlist") ) {
window.addEventListener('keydown', this.getCopiedPlayListSongs);
window.addEventListener('keydown', this.pasteSongs);
}
},
beforeDestroy() {
if( window.location.hash.includes("playlist") ) {
window.removeEventListener('keydown', this.getCopiedPlayListSongs);
window.removeEventListener('keydown', this.pasteSongs);
}
},
watch: { watch: {
data: { data: {
handler: function () { handler: function () {
@ -752,6 +764,49 @@
if (data && typeof data.views != "undefined") return ""; if (data && typeof data.views != "undefined") return "";
return "d-none"; return "d-none";
}, },
async getCopiedPlayListSongs(event) {
if( event.ctrlKey && event.keyCode === 67 ) {
let urls = [];
app.selectedMediaItems.forEach(item => {
this.app.mk.api.v3.music(`/v1/me/library/songs/${item.id}`).then((response) => {
this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/songs/${response.data.data[0].attributes.playParams.catalogId}`).then((response1) => {
urls.push(response1.data.data[0].attributes.url)
navigator.clipboard.writeText(urls)
})
})
})
notyf.success(app.getLz('term.share.success'))
}
},
async pasteSongs(event) {
if( event.ctrlKey && event.keyCode === 86 && this.data.attributes.canEdit ) {
let clipboard = await navigator.clipboard.readText()
let songs = []
clipboard = clipboard.split(",")
clipboard.forEach(item => {
songs.push({
id: item.substring(item.indexOf("i=")+2, item.length),
type: "songs",
})
})
this.app.mk.api.v3.music(`/v1/me/library/playlists/${this.data.id}/tracks`, {}, {
fetchOptions: {
method: "POST",
body: JSON.stringify({
data: songs
})
}
}).then((response) => {
songs.forEach(item => {
this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/songs/${item.id}`).then((response1) => {
this.displayListing.push(response1.data.data[0])
})
})
})
}
},
search() { search() {
let filtered = []; let filtered = [];