aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Isom <[email protected]>2021-09-14 14:20:01 -0400
committerGitHub <[email protected]>2021-09-14 14:20:01 -0400
commitc97206bb8b691c5b43932fa9a4f575d57914d731 (patch)
tree03550565ded070cc7b17104137347fe6ec8a74c3
parent1212ffc102641127479f82f522395c46b74255d0 (diff)
parentaf8e81a569cdc90b04c9b69a8a82bd41a3cdc9b2 (diff)
downloadmuse-c97206bb8b691c5b43932fa9a4f575d57914d731.tar.xz
muse-c97206bb8b691c5b43932fa9a4f575d57914d731.zip
Merge pull request #320 from luisfavila/fix-url-cleaning
-rw-r--r--src/services/get-songs.ts12
-rw-r--r--src/utils/url.ts18
2 files changed, 20 insertions, 10 deletions
diff --git a/src/services/get-songs.ts b/src/services/get-songs.ts
index 129f167..8a040c0 100644
--- a/src/services/get-songs.ts
+++ b/src/services/get-songs.ts
@@ -9,6 +9,7 @@ import pLimit from 'p-limit';
import shuffle from 'array-shuffle';
import {QueuedSong, QueuedPlaylist} from '../services/player';
import {TYPES} from '../types';
+import {cleanUrl} from '../utils/url';
@injectable()
export default class {
@@ -34,16 +35,7 @@ export default class {
async youtubeVideo(url: string): Promise<QueuedSong|null> {
try {
- // Clean URL
- const u = new URL(url);
-
- for (const [name] of u.searchParams) {
- if (name !== 'v') {
- u.searchParams.delete(name);
- }
- }
-
- const videoDetails = await this.youtube.videos.get(u.toString());
+ const videoDetails = await this.youtube.videos.get(cleanUrl(url));
return {
title: videoDetails.snippet.title,
diff --git a/src/utils/url.ts b/src/utils/url.ts
new file mode 100644
index 0000000..7ddc33d
--- /dev/null
+++ b/src/utils/url.ts
@@ -0,0 +1,18 @@
+import {URL} from 'url';
+
+export const cleanUrl = (url: string) => {
+ try {
+ // Clean URL
+ const u = new URL(url);
+
+ for (const [name] of u.searchParams) {
+ if (name !== 'v') {
+ u.searchParams.delete(name);
+ }
+ }
+
+ return u.toString();
+ } catch (_: unknown) {
+ return url;
+ }
+};