void bw_DoWork(object sender, DoWorkEventArgs e)
 {
     manager.Authorize(pin.ToString());
     user = manager.CurrentUser(new[] { "isSubscriber", "isTrial", "isUnlimited" });
     var albums = manager.GetAlbumsInCollection(user.Key, start: 0, count: int.MaxValue);
     App.AlbumsToImport = albums.Select(rdioAlbum => new ServiceAgnosticAlbum(rdioAlbum));
     e.Result = true;
 }
Beispiel #2
0
        public static IRdioObject ConvertDictionaryToRdioObject(IDictionary<string, object> d,
            RdioType type = RdioType.Unknown)
        {
            IRdioObject rdioObject = null;
            if (type == RdioType.Unknown) type = ParseRdioType((string) d["type"]);
            switch (type)
            {
                case RdioType.CollectionAlbum:
                case RdioType.Album:
                    var album = new RdioAlbum
                    {
                        Artist = (string)d["artist"],
                        ArtistKey = (string)d["artistKey"],
                        ArtistUrl = (string)d["artistUrl"],
                        BaseIcon = (string)d["baseIcon"],
                        CanSample = (bool)d["canSample"],
                        CanStream = (bool)d["canStream"],
                        CanTether = (bool)d["canTether"],
                        Duration = (int)d["duration"],
                        EmbedUrl = (string)d["embedUrl"],
                        Icon = (string)d["icon"],
                        IsClean = (bool)d["isClean"],
                        IsExplicit = (bool)d["isExplicit"],
                        IsCompilation = d.GetOptionalKey<bool>("isCompilation"),
                        Key = (string)d["key"],
                        Length = (int)d["length"],
                        Name = (string)d["name"],
                        Price = (string)d["price"],
                        ReleaseDate = DateTime.Parse((string)d["releaseDate"]),
                        ShortUrl = (string)d["shortUrl"],
                        Type = (string)d["type"],
                        Url = (string)d["url"]
                    };
                    object keys;
                    if (d.TryGetValue("trackKeys", out keys))
                        album.TrackKeys = new List<object>((object[])keys).Cast<string>().ToList();
                    album.BigIcon = d.GetOptionalKey<string>("bigIcon");

                    rdioObject = album;
                    break;
                case RdioType.CollectionArtist:
                case RdioType.Artist:
                    var artist = new RdioArtist
                    {
                        BaseIcon = (string)d["baseIcon"],
                        HasRadio = (bool)d["hasRadio"],
                        Icon = (string)d["icon"],
                        Key = (string)d["key"],
                        Name = (string)d["name"],
                        ShortUrl = (string)d["shortUrl"],
                        Length = (int)d["length"],
                        Type = (string)d["type"],
                        Url = (string)d["url"],
                        AlbumCount = d.GetOptionalKey<int>("albumCount")
                    };

                    rdioObject = artist;
                    break;
                case RdioType.Playlist:
                    var playlist = new RdioPlaylist
                    {
                        BaseIcon = (string)d["baseIcon"],
                        EmbedUrl = (string)d["embedUrl"],
                        Icon = (string)d["icon"],
                        Key = (string)d["key"],
                        LastUpdated = (decimal)d["lastUpdated"],
                        Length = (int)d["length"],
                        Name = (string)d["name"],
                        Owner = (string)d["owner"],
                        OwnerIcon = (string)d["ownerIcon"],
                        OwnerKey = (string)d["ownerKey"],
                        OwnerUrl = (string)d["ownerUrl"],
                        ShortUrl = (string)d["shortUrl"],
                        Type = (string)d["type"],
                        Url = (string)d["url"]
                    };
                    object playlistTrackKeys;
                    if (d.TryGetValue("trackKeys", out playlistTrackKeys))
                        playlist.TrackKeys = new List<object>((object[])playlistTrackKeys).Cast<string>().ToList();
                    playlist.BigIcon = d.GetOptionalKey<string>("bigIcon");

                    rdioObject = playlist;
                    break;
                case RdioType.Track:
                    var track = new RdioTrack
                    {
                        Album = (string)d["album"],
                        AlbumArtistKey = (string)d["albumArtistKey"],
                        AlbumArtistName = (string)d["albumArtist"],
                        AlbumKey = (string)d["albumKey"],
                        AlbumUrl = (string)d["albumUrl"],
                        Artist = (string)d["artist"],
                        ArtistKey = (string)d["artistKey"],
                        ArtistUrl = (string)d["artistUrl"],
                        BaseIcon = (string)d["baseIcon"],
                        CanDownload = (bool)d["canDownload"],
                        CanDownloadAlbumOnly = (bool)d["canDownloadAlbumOnly"],
                        CanSample = (bool)d["canSample"],
                        CanStream = (bool)d["canStream"],
                        CanTether = (bool)d["canTether"],
                        Duration = (int)d["duration"],
                        EmbedUrl = (string)d["embedUrl"],
                        Icon = (string)d["icon"],
                        IsClean = (bool)d["isClean"],
                        IsExplicit = (bool)d["isExplicit"],
                        IsOnCompilation = d.GetOptionalKey<bool>("isOnCompilation"),
                        Key = (string)d["key"],
                        Name = (string)d["name"],
                        Price = (string)d["price"],
                        ShortUrl = (string)d["shortUrl"],
                        Type = (string)d["type"],
                        Url = (string)d["url"]
                    };
                    track.PlayCount = d.GetOptionalKey<int>("playCount");
                    track.BigIcon = d.GetOptionalKey<string>("bigIcon");

                    rdioObject = track;
                    break;
                case RdioType.User:
                    var user = new RdioUser
                    {
                        BaseIcon = (string)d["baseIcon"],
                        FirstName = (string)d["firstName"],
                        Gender = (string)d["gender"],
                        Icon = (string)d["icon"],
                        Key = (string)d["key"],
                        LastName = (string)d["lastName"],
                        LibraryVersion = (int)d["libraryVersion"],
                        Type = (string)d["type"],
                        Url = (string)d["url"],
                        DisplayName = d.GetOptionalKey<string>("displayName"),
                        LastSongPlayed = d.GetOptionalKey<string>("lastSongPlayed"),
                        LastSongPlayTime = d.GetOptionalKey<DateTime>("lastSongPlayTime"),
                        TrackCount = d.GetOptionalKey<int>("trackCount"),
                        Username = d.GetOptionalKey<string>("username")
                    };

                    user.IsSubscriber = d.GetOptionalKey<bool>("isSubscriber");
                    user.IsUnlimited = d.GetOptionalKey<bool>("isUnlimited");
                    user.IsTrial = d.GetOptionalKey<bool>("isTrial");

                    rdioObject = user;
                    break;
                default:
                    break;
            }
            return rdioObject;
        }