Exemplo n.º 1
0
 FullTrackData CreateFromNode(CloudNode node)
 {
     try
     {
         string title;
         string id;
         string album;
         string artist;
         string genre;
         int    year = 0;
         string yearStr;
         var    dict = node.Properties[ApiConstants.AmazonAppIdentifier];
         dict.TryGetValue("Title", out title);
         dict.TryGetValue("Id", out id);
         dict.TryGetValue("Album", out album);
         dict.TryGetValue("Artist", out artist);
         dict.TryGetValue("Genre", out genre);
         int    rating = 0;
         string ratingString;
         if (dict.TryGetValue("Year", out yearStr))
         {
             year = int.Parse(yearStr);
         }
         if (dict.TryGetValue("Rating", out ratingString))
         {
             rating = int.Parse(ratingString);
         }
         var track = new FullTrackData(title, artist, "", album, genre)
         {
             Year          = year,
             SongId        = id,
             Id            = node.Id,
             ServiceId     = Id,
             Rating        = rating,
             ServiceType   = ServiceType.Amazon,
             MediaType     = node.ContentProperties.Video != null ? MediaType.Video : node.ContentProperties.image != null ? MediaType.Photo : MediaType.Audio,
             FileExtension = node.ContentProperties.Extension,
         };
         return(track);
     }
     catch (Exception ex)
     {
         LogManager.Shared.Report(ex);
     }
     return(null);
 }
Exemplo n.º 2
0
        FullTrackData FromFilePath(string filePath)
        {
            string id             = "";
            string Title          = "";
            string Artist         = "";
            string Album          = "";
            string AlbumArtist    = "";
            string Genre          = "";
            int    Year           = 0;
            int    Disc           = 0;
            int    TotalDiscs     = 0;
            int    Track          = 0;
            int    BeatsPerMinute = 0;
            double Duration       = 0;
            int    rating         = 0;
            bool   hasImage;

            try {
                using (var file = TagLib.File.Create(filePath)) {
                    if (string.IsNullOrEmpty(file.Tag.MusicIpId))
                    {
                        using (var md5 = MD5.Create()) {
                            using (var stream = System.IO.File.OpenRead(filePath)) {
                                byte[] hash;
                                hash = md5.ComputeHash(stream);

                                id = BitConverter.ToString(hash).Replace("-", "").ToLower();
                            }
                        }
                        file.Tag.MusicIpId = id;
                        file.Save();
                    }
                    else
                    {
                        id = file.Tag.MusicIpId;
                    }

                    TagLib.Tag Tag       = file.GetTag(TagLib.TagTypes.Id3v2);
                    var        ratingTag = TagLib.Id3v2.PopularimeterFrame.Get((TagLib.Id3v2.Tag)Tag, "WindowsUser", true);
                    //based on 0-5;
                    //taglib sharp is 0-255;
                    rating         = ratingTag.Rating / 51;
                    Title          = file?.Tag?.Title ?? FullTrackData.GetTitleFromFileName(filePath);
                    Artist         = file.Tag.FirstPerformer ?? FullTrackData.GetArtistFromFileName(filePath);
                    Album          = file.Tag.Album ?? "";
                    AlbumArtist    = file.Tag.FirstAlbumArtist ?? "";
                    Genre          = file.Tag.FirstGenre ?? "";
                    Year           = (int)file.Tag.Year;
                    Disc           = (int)file.Tag.Disc;
                    TotalDiscs     = (int)file.Tag.DiscCount;
                    Track          = (int)file.Tag.Track;
                    BeatsPerMinute = (int)file.Tag.BeatsPerMinute;
                    Duration       = file.Properties.Duration.TotalMilliseconds;
                }
            } catch (Exception ex) {
                Title  = FullTrackData.GetTitleFromFileName(filePath);
                Artist = FullTrackData.GetArtistFromFileName(filePath);
            }
            return(new FullTrackData(Title, Artist, AlbumArtist, Album, Genre)
            {
                Disc = Disc,
                Track = Track,
                Year = Year,
                Id = id,
                FileLocation = filePath,
                FileExtension = Path.GetExtension(filePath)?.Trim('.'),
                MediaType = FromFile(filePath),
                Priority = 1,
                ServiceId = Id,
                ServiceType = ServiceType,
                Rating = rating,
            });
        }
Exemplo n.º 3
0
        public override async Task <SearchResults> Search(string query)
        {
            var result = new SearchResults();

            try{
                var path = "search?part=snippet&maxResults=50&q=" + HttpUtility.UrlEncode(query);
                var searchListResponse = await Api.Get <SearchListResponse>(path);

                foreach (var searchResult in searchListResponse.Items)
                {
                    switch (searchResult.Id.Kind)
                    {
                    case "youtube#video":
                        var id = searchResult.Id.VideoId;
                        var t  = new FullTrackData(searchResult.Snippet.Title, "", "", "", "")
                        {
                            AlbumArtwork = new List <AlbumArtwork> {
                                new AlbumArtwork {
                                    Url = string.Format("http://img.youtube.com/vi/{0}/0.jpg", id)
                                }
                            },
                            MediaType     = MediaType.Video,
                            ServiceId     = Id,
                            Id            = id,
                            ServiceType   = ServiceType,
                            FileExtension = "mp4"
                        };
                        result.Videos.Add(new OnlineSong(t.Title, t.NormalizedTitle)
                        {
                            Id         = t.SongId,
                            Artist     = t.Artist,
                            Album      = t.Album,
                            AlbumId    = t.AlbumId,
                            ArtistId   = t.Artist,
                            Disc       = t.Disc,
                            Genre      = t.Genre,
                            Rating     = t.Rating,
                            TrackCount = t.Track,
                            Year       = t.Year,
                            TrackData  = t,
                        });
                        //items.Add(new MediaItem
                        //{
                        //	Id = id,
                        //	MediaType = MediaType.Youtube,
                        //	Title = searchResult.Snippet.Title,
                        //	DownloadUrl = string.Format("http://www.youtube.com/watch?v={0}", id),
                        //	OrigionalUrl = string.Format("http://www.youtube.com/watch?v={0}", id),
                        //	ImageUrl = string.Format("http://img.youtube.com/vi/{0}/0.jpg", id),
                        //});
                        break;

                    case "youtube#channel":
                        //channels.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.ChannelId));
                        break;

                    case "youtube#playlist":
                        result.Playlists.Add(new OnlinePlaylist {
                            Id          = searchResult.Id.PlaylistId,
                            Name        = searchResult.Snippet.Title,
                            ServiceId   = Id,
                            Description = searchResult.Snippet.Description,
                            AllArtwork  = searchResult.Snippet.Thumbnails?.Select(x => new AlbumArtwork {
                                Url = x.Value.Url
                            }).ToArray() ?? new AlbumArtwork[0],
                        });
                        break;
                    }
                }
            }
            catch (Exception ex) {
                LogManager.Shared.Report(ex);
            }
            return(result);
        }