Don't silently fail

This commit is contained in:
Max Isom 2022-01-06 16:25:59 -06:00
parent dcdec2d49e
commit 65dd43ac68
No known key found for this signature in database
GPG key ID: 25C9B1A7F6798880
2 changed files with 39 additions and 49 deletions

View file

@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Changed
- Track lookups no longer fail silently (error is returned and logged)
## [0.3.1] - 2022-01-06
### Fixed

View file

@ -43,58 +43,50 @@ export default class {
}
async youtubeVideoSearch(query: string): Promise<QueuedSongWithoutChannel | null> {
try {
const {items} = await this.ytsrQueue.add(async () => this.cache.wrap(
ytsr,
query,
{
limit: 10,
},
{
expiresIn: ONE_HOUR_IN_SECONDS,
},
));
const {items} = await this.ytsrQueue.add(async () => this.cache.wrap(
ytsr,
query,
{
limit: 10,
},
{
expiresIn: ONE_HOUR_IN_SECONDS,
},
));
let firstVideo: Video | undefined;
let firstVideo: Video | undefined;
for (const item of items) {
if (item.type === 'video') {
firstVideo = item;
break;
}
for (const item of items) {
if (item.type === 'video') {
firstVideo = item;
break;
}
if (!firstVideo) {
throw new Error('No video found.');
}
return await this.youtubeVideo(firstVideo.id);
} catch (_: unknown) {
return null;
}
if (!firstVideo) {
throw new Error('No video found.');
}
return this.youtubeVideo(firstVideo.id);
}
async youtubeVideo(url: string): Promise<QueuedSongWithoutChannel | null> {
try {
const videoDetails = await this.cache.wrap(
this.youtube.videos.get,
cleanUrl(url),
{
expiresIn: ONE_HOUR_IN_SECONDS,
},
);
const videoDetails = await this.cache.wrap(
this.youtube.videos.get,
cleanUrl(url),
{
expiresIn: ONE_HOUR_IN_SECONDS,
},
);
return {
title: videoDetails.snippet.title,
artist: videoDetails.snippet.channelTitle,
length: toSeconds(parse(videoDetails.contentDetails.duration)),
url: videoDetails.id,
playlist: null,
isLive: videoDetails.snippet.liveBroadcastContent === 'live',
};
} catch (_: unknown) {
return null;
}
return {
title: videoDetails.snippet.title,
artist: videoDetails.snippet.channelTitle,
length: toSeconds(parse(videoDetails.contentDetails.duration)),
url: videoDetails.id,
playlist: null,
isLive: videoDetails.snippet.liveBroadcastContent === 'live',
};
}
async youtubePlaylist(listId: string): Promise<QueuedSongWithoutChannel[]> {
@ -280,10 +272,6 @@ export default class {
}
private async spotifyToYouTube(track: SpotifyApi.TrackObjectSimplified, _: QueuedPlaylist | null): Promise<QueuedSongWithoutChannel | null> {
try {
return await this.youtubeVideoSearch(`"${track.name}" "${track.artists[0].name}"`);
} catch (_: unknown) {
return null;
}
return this.youtubeVideoSearch(`"${track.name}" "${track.artists[0].name}"`);
}
}