diff --git a/src/parsers/AlbumParser.ts b/src/parsers/AlbumParser.ts index 2b5be79..0d45ea8 100644 --- a/src/parsers/AlbumParser.ts +++ b/src/parsers/AlbumParser.ts @@ -15,7 +15,7 @@ export default class AlbumParser { const artistData = traverse(data, "header", "subtitle", "runs") const artistBasic: ArtistBasic = { - artistId: traverseString(artistData, "browseId")(), + artistId: traverseString(artistData, "browseId")() || null, name: traverseString(artistData, "text")(), } diff --git a/src/parsers/PlaylistParser.ts b/src/parsers/PlaylistParser.ts index 4005e27..1fdaad4 100644 --- a/src/parsers/PlaylistParser.ts +++ b/src/parsers/PlaylistParser.ts @@ -16,7 +16,7 @@ export default class PlaylistParser { name: traverseString(data, "header", "title", "text")(), artist: { name: traverseString(artist, "text")(), - artistId: traverseString(artist, "browseId")(), + artistId: traverseString(artist, "browseId")() || null, }, videoCount: +traverseList(data, "header", "secondSubtitle", "text") @@ -35,8 +35,7 @@ export default class PlaylistParser { // No specific way to identify the title const title = columns[0] - // Possibility to be empty because it's by YouTube Music - const artist = columns.find(isArtist) + const artist = columns.find(isArtist) || columns[3] return checkType( { @@ -44,7 +43,7 @@ export default class PlaylistParser { playlistId: traverseString(item, "overlay", "playlistId")(), name: traverseString(title, "text")(), artist: { - name: artist ? traverseString(artist, "text")() : "YouTube Music", + name: traverseString(artist, "text")(), artistId: traverseString(artist, "browseId")() || null, }, thumbnails: traverseList(item, "thumbnails"), diff --git a/src/parsers/SongParser.ts b/src/parsers/SongParser.ts index 664b013..f193c06 100644 --- a/src/parsers/SongParser.ts +++ b/src/parsers/SongParser.ts @@ -29,7 +29,7 @@ export default class SongParser { const columns = traverseList(item, "flexColumns", "runs").flat() const title = columns.find(isTitle) - const artist = columns.find(isArtist) + const artist = columns.find(isArtist) || columns[1] const album = columns.find(isAlbum) const duration = columns.find(isDuration) @@ -40,7 +40,7 @@ export default class SongParser { name: traverseString(title, "text")(), artist: { name: traverseString(artist, "text")(), - artistId: traverseString(artist, "browseId")(), + artistId: traverseString(artist, "browseId")() || null, }, album: { name: traverseString(album, "text")(), diff --git a/src/parsers/VideoParser.ts b/src/parsers/VideoParser.ts index f5019d5..5e30582 100644 --- a/src/parsers/VideoParser.ts +++ b/src/parsers/VideoParser.ts @@ -29,7 +29,7 @@ export default class VideoParser { const columns = traverseList(item, "flexColumns", "runs").flat() const title = columns.find(isTitle) - const artist = columns.find(isArtist) + const artist = columns.find(isArtist) || columns[1] const duration = columns.find(isDuration) return { @@ -37,8 +37,8 @@ export default class VideoParser { videoId: traverseString(item, "playNavigationEndpoint", "videoId")(), name: traverseString(title, "text")(), artist: { + artistId: traverseString(artist, "browseId") || null, name: traverseString(artist, "text")(), - artistId: traverseString(artist, "browseId")(), }, duration: Parser.parseDuration(duration.text), thumbnails: traverseList(item, "thumbnails"),