mirror of https://github.com/lidarr/Lidarr
Feat : add Liked Songs in Spotify Playlist import list
This commit is contained in:
parent
6c90ac74e9
commit
d3ee21b919
|
@ -29,6 +29,8 @@ namespace NzbDrone.Core.ImportLists.Spotify
|
|||
|
||||
public override string Name => "Spotify Playlists";
|
||||
|
||||
private const string LIKEDSONGSID = "LikedSongs";
|
||||
|
||||
public override IList<SpotifyImportListItemInfo> Fetch(SpotifyWebAPI api)
|
||||
{
|
||||
return Settings.PlaylistIds.SelectMany(x => Fetch(api, x)).ToList();
|
||||
|
@ -40,7 +42,27 @@ namespace NzbDrone.Core.ImportLists.Spotify
|
|||
|
||||
_logger.Trace($"Processing playlist {playlistId}");
|
||||
|
||||
var playlistTracks = _spotifyProxy.GetPlaylistTracks(this, api, playlistId, "next, items(track(name, artists(id, name), album(id, name, release_date, release_date_precision, artists(id, name))))");
|
||||
Paging<PlaylistTrack> playlistTracks;
|
||||
|
||||
if (playlistId.Equals(LIKEDSONGSID))
|
||||
{
|
||||
var savedTracks = _spotifyProxy.GetSavedTracks(this, api);
|
||||
playlistTracks = new Paging<PlaylistTrack>
|
||||
{
|
||||
Href = savedTracks.Href,
|
||||
Limit = savedTracks.Limit,
|
||||
Offset = savedTracks.Offset,
|
||||
Next = savedTracks.Next,
|
||||
Previous = savedTracks.Previous,
|
||||
Total = savedTracks.Total,
|
||||
Error = savedTracks.Error,
|
||||
Items = savedTracks.Items.Select(t => new PlaylistTrack { AddedAt = t.AddedAt, Track = t.Track }).ToList()
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
playlistTracks = _spotifyProxy.GetPlaylistTracks(this, api, playlistId, "next, items(track(name, artists(id, name), album(id, name, release_date, release_date_precision, artists(id, name))))");
|
||||
}
|
||||
|
||||
while (true)
|
||||
{
|
||||
|
@ -140,7 +162,7 @@ namespace NzbDrone.Core.ImportLists.Spotify
|
|||
{
|
||||
id = p.Id,
|
||||
name = p.Name
|
||||
})
|
||||
}).Prepend(new { id = LIKEDSONGSID, name = "Liked Songs" }) // TODO : Add Translation
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ namespace NzbDrone.Core.ImportLists.Spotify
|
|||
PlaylistIds = System.Array.Empty<string>();
|
||||
}
|
||||
|
||||
public override string Scope => "playlist-read-private";
|
||||
public override string Scope => "playlist-read-private user-library-read";
|
||||
|
||||
[FieldDefinition(1, Label = "Playlists", Type = FieldType.Playlist)]
|
||||
public IEnumerable<string> PlaylistIds { get; set; }
|
||||
|
|
|
@ -18,6 +18,8 @@ namespace NzbDrone.Core.ImportLists.Spotify
|
|||
where TSettings : SpotifySettingsBase<TSettings>, new();
|
||||
Paging<PlaylistTrack> GetPlaylistTracks<TSettings>(SpotifyImportListBase<TSettings> list, SpotifyWebAPI api, string id, string fields)
|
||||
where TSettings : SpotifySettingsBase<TSettings>, new();
|
||||
Paging<SavedTrack> GetSavedTracks<TSettings>(SpotifyImportListBase<TSettings> list, SpotifyWebAPI api)
|
||||
where TSettings : SpotifySettingsBase<TSettings>, new();
|
||||
Paging<T> GetNextPage<T, TSettings>(SpotifyImportListBase<TSettings> list, SpotifyWebAPI api, Paging<T> item)
|
||||
where TSettings : SpotifySettingsBase<TSettings>, new();
|
||||
FollowedArtists GetNextPage<TSettings>(SpotifyImportListBase<TSettings> list, SpotifyWebAPI api, FollowedArtists item)
|
||||
|
@ -63,6 +65,12 @@ namespace NzbDrone.Core.ImportLists.Spotify
|
|||
return Execute(list, api, x => x.GetPlaylistTracks(id, fields: fields));
|
||||
}
|
||||
|
||||
public Paging<SavedTrack> GetSavedTracks<TSettings>(SpotifyImportListBase<TSettings> list, SpotifyWebAPI api)
|
||||
where TSettings : SpotifySettingsBase<TSettings>, new()
|
||||
{
|
||||
return Execute(list, api, x => x.GetSavedTracks(50));
|
||||
}
|
||||
|
||||
public Paging<T> GetNextPage<T, TSettings>(SpotifyImportListBase<TSettings> list, SpotifyWebAPI api, Paging<T> item)
|
||||
where TSettings : SpotifySettingsBase<TSettings>, new()
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue