improve error handling for youtube requests, skip video category check if unnecessary
This commit is contained in:
@ -66,7 +66,11 @@ export class TimelineReader {
|
|||||||
const youtubeVideoUrl = new URL(`https://www.googleapis.com/youtube/v3/videos?${searchParams}`);
|
const youtubeVideoUrl = new URL(`https://www.googleapis.com/youtube/v3/videos?${searchParams}`);
|
||||||
const resp = await fetch(youtubeVideoUrl);
|
const resp = await fetch(youtubeVideoUrl);
|
||||||
const respObj = await resp.json();
|
const respObj = await resp.json();
|
||||||
if (!respObj.items.length) {
|
if (respObj.error) {
|
||||||
|
this.logger.warn('YT API error', respObj.error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!respObj.items?.length) {
|
||||||
this.logger.warn('Could not find video with id', videoId);
|
this.logger.warn('Could not find video with id', videoId);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -76,7 +80,7 @@ export class TimelineReader {
|
|||||||
this.logger.warn('Could not load snippet for video', videoId, item);
|
this.logger.warn('Could not load snippet for video', videoId, item);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (item.snippet.tags?.includes('music')) {
|
if (item.snippet?.tags?.includes('music')) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,8 +163,14 @@ export class TimelineReader {
|
|||||||
if (!odesliInfo || !odesliInfo.entitiesByUniqueId || !odesliInfo.entityUniqueId) {
|
if (!odesliInfo || !odesliInfo.entitiesByUniqueId || !odesliInfo.entityUniqueId) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
const spotify: Platform = 'spotify';
|
||||||
|
const tidal: Platform = 'tidal';
|
||||||
|
const deezer: Platform = 'deezer';
|
||||||
|
const tidalId = odesliInfo.linksByPlatform[tidal]?.entityUniqueId;
|
||||||
|
const tidalUri = tidalId ? odesliInfo.entitiesByUniqueId[tidalId].id : undefined;
|
||||||
|
|
||||||
const info = odesliInfo.entitiesByUniqueId[odesliInfo.entityUniqueId];
|
const info = odesliInfo.entitiesByUniqueId[odesliInfo.entityUniqueId];
|
||||||
//this.logger.debug('odesli response', info);
|
|
||||||
const platform: Platform = 'youtube';
|
const platform: Platform = 'youtube';
|
||||||
if (info.platforms.includes(platform)) {
|
if (info.platforms.includes(platform)) {
|
||||||
const youtubeId =
|
const youtubeId =
|
||||||
@ -175,16 +185,16 @@ export class TimelineReader {
|
|||||||
);
|
);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
const isMusic = await this.isMusicVideo(youtubeId);
|
// If it is on tidal or deezer, it's probably music
|
||||||
|
// Do not check spotify, they carry too much other stuff (podcasts, audiobooks, etc)
|
||||||
|
let isMusic = odesliInfo.linksByPlatform[tidal] || odesliInfo.linksByPlatform[deezer];
|
||||||
|
// If not, check the YT API
|
||||||
|
isMusic = isMusic || (await this.isMusicVideo(youtubeId));
|
||||||
if (!isMusic) {
|
if (!isMusic) {
|
||||||
this.logger.debug('Probably not a music video', youtubeId);
|
this.logger.debug('Probably not a music video', youtubeId);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const spotify: Platform = 'spotify';
|
|
||||||
const tidal: Platform = 'tidal';
|
|
||||||
const tidalId = odesliInfo.linksByPlatform[tidal]?.entityUniqueId;
|
|
||||||
const tidalUri = tidalId ? odesliInfo.entitiesByUniqueId[tidalId].id : undefined;
|
|
||||||
|
|
||||||
const songInfo = {
|
const songInfo = {
|
||||||
...info,
|
...info,
|
||||||
|
Reference in New Issue
Block a user