From fa88624f8b858d1f95e3d7ead04e7a7da4b32518 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Tue, 2 Aug 2022 10:08:26 +0200 Subject: [PATCH 1/4] download playlists as txt --- src/components/PlaylistPage.vue | 19 +++++++++++++++++++ src/locales/en.json | 3 ++- src/main.js | 9 +++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/components/PlaylistPage.vue b/src/components/PlaylistPage.vue index 67e5e9a7..550f29b6 100644 --- a/src/components/PlaylistPage.vue +++ b/src/components/PlaylistPage.vue @@ -18,6 +18,9 @@ + @@ -133,6 +136,22 @@ export default { } else alert(resp.error); }); }, + downloadPlaylistAsTxt() { + var data = ""; + this.playlist.relatedStreams.forEach(element => { + data += "https://piped.kavin.rocks" + element.url + "\n"; + }); + this.download(data, this.playlist.name + ".txt"); + }, + download(text, filename) { + var element = document.createElement("a"); + element.setAttribute("href", "data:text/plain;charset=utf-8," + encodeURIComponent(text)); + element.setAttribute("download", filename); + element.style.display = "none"; + document.body.appendChild(element); + element.click(); + document.body.removeChild(element); + }, }, }; diff --git a/src/locales/en.json b/src/locales/en.json index 64f403b3..229cacb5 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -88,7 +88,8 @@ "different_auth_instance": "Use a different instance for authentication", "instance_auth_selection": "Autentication Instance Selection", "clone_playlist": "Clone Playlist", - "clone_playlist_success": "Successfully cloned!" + "clone_playlist_success": "Successfully cloned!", + "download_as_txt": "Download as .txt" }, "comment": { "pinned_by": "Pinned by", diff --git a/src/main.js b/src/main.js index 171e6a33..0225cb79 100644 --- a/src/main.js +++ b/src/main.js @@ -220,6 +220,15 @@ const mixin = { const localSubscriptions = this.getLocalSubscriptions(); return localSubscriptions.join(","); }, + download(text, filename) { + var element = document.createElement("a"); + element.setAttribute("href", "data:text/plain;charset=utf-8," + encodeURIComponent(text)); + element.setAttribute("download", filename); + element.style.display = "none"; + document.body.appendChild(element); + element.click(); + document.body.removeChild(element); + }, }, computed: { theme() { From 7899b4aea43aa8779f46427756b6f4b50c241320 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Tue, 2 Aug 2022 10:08:50 +0200 Subject: [PATCH 2/4] fix unauthenticated subs == null --- src/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.js b/src/main.js index 0225cb79..d24b03b3 100644 --- a/src/main.js +++ b/src/main.js @@ -218,7 +218,7 @@ const mixin = { }, getUnauthenticatedChannels() { const localSubscriptions = this.getLocalSubscriptions(); - return localSubscriptions.join(","); + return localSubscriptions != null ? localSubscriptions.join(",") : ""; }, download(text, filename) { var element = document.createElement("a"); From 5b7f99c9e0eac3fd54fa4d47105b837284464abe Mon Sep 17 00:00:00 2001 From: Bnyro Date: Tue, 2 Aug 2022 10:14:03 +0200 Subject: [PATCH 3/4] cleanup --- src/components/PlaylistPage.vue | 9 --------- src/components/SubscriptionsPage.vue | 9 +-------- src/main.js | 18 ++++++++++-------- 3 files changed, 11 insertions(+), 25 deletions(-) diff --git a/src/components/PlaylistPage.vue b/src/components/PlaylistPage.vue index 550f29b6..7c320ffe 100644 --- a/src/components/PlaylistPage.vue +++ b/src/components/PlaylistPage.vue @@ -143,15 +143,6 @@ export default { }); this.download(data, this.playlist.name + ".txt"); }, - download(text, filename) { - var element = document.createElement("a"); - element.setAttribute("href", "data:text/plain;charset=utf-8," + encodeURIComponent(text)); - element.setAttribute("download", filename); - element.style.display = "none"; - document.body.appendChild(element); - element.click(); - document.body.removeChild(element); - }, }, }; diff --git a/src/components/SubscriptionsPage.vue b/src/components/SubscriptionsPage.vue index 50c452a7..592efdf2 100644 --- a/src/components/SubscriptionsPage.vue +++ b/src/components/SubscriptionsPage.vue @@ -97,14 +97,7 @@ export default { subscriptions: subscriptions, }); - var file = new Blob([json], { type: "application/json" }); - - const elem = document.createElement("a"); - - elem.href = URL.createObjectURL(file); - elem.download = "subscriptions.json"; - elem.click(); - elem.remove(); + this.download(json, "subscriptions.json", "application/json"); }, }, }; diff --git a/src/main.js b/src/main.js index d24b03b3..788a96f7 100644 --- a/src/main.js +++ b/src/main.js @@ -220,14 +220,16 @@ const mixin = { const localSubscriptions = this.getLocalSubscriptions(); return localSubscriptions != null ? localSubscriptions.join(",") : ""; }, - download(text, filename) { - var element = document.createElement("a"); - element.setAttribute("href", "data:text/plain;charset=utf-8," + encodeURIComponent(text)); - element.setAttribute("download", filename); - element.style.display = "none"; - document.body.appendChild(element); - element.click(); - document.body.removeChild(element); + /* generate a temporary file and ask the user to download it */ + download(text, filename, type) { + var file = new Blob([text], { type: type }); + + const elem = document.createElement("a"); + + elem.href = URL.createObjectURL(file); + elem.download = filename; + elem.click(); + elem.remove(); }, }, computed: { From 285a67101514f9bfd3722e9f3603375789f45089 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Tue, 2 Aug 2022 10:16:18 +0200 Subject: [PATCH 4/4] fix --- src/components/PlaylistPage.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/PlaylistPage.vue b/src/components/PlaylistPage.vue index 7c320ffe..94543989 100644 --- a/src/components/PlaylistPage.vue +++ b/src/components/PlaylistPage.vue @@ -141,7 +141,7 @@ export default { this.playlist.relatedStreams.forEach(element => { data += "https://piped.kavin.rocks" + element.url + "\n"; }); - this.download(data, this.playlist.name + ".txt"); + this.download(data, this.playlist.name + ".txt", "text/plain"); }, }, };