diff options
| author | Max Isom <[email protected]> | 2021-09-14 14:20:01 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-09-14 14:20:01 -0400 |
| commit | c97206bb8b691c5b43932fa9a4f575d57914d731 (patch) | |
| tree | 03550565ded070cc7b17104137347fe6ec8a74c3 | |
| parent | 1212ffc102641127479f82f522395c46b74255d0 (diff) | |
| parent | af8e81a569cdc90b04c9b69a8a82bd41a3cdc9b2 (diff) | |
| download | muse-c97206bb8b691c5b43932fa9a4f575d57914d731.tar.xz muse-c97206bb8b691c5b43932fa9a4f575d57914d731.zip | |
Merge pull request #320 from luisfavila/fix-url-cleaning
| -rw-r--r-- | src/services/get-songs.ts | 12 | ||||
| -rw-r--r-- | src/utils/url.ts | 18 |
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; + } +}; |
