Пример #1
0
        private static async Task <List <WebSong> > SearchAnyMazaAync(string title, string artist, int limit)
        {
            using (var resp = await new AnyMazaSearchRequest(title.Append(artist)).ToResponseAsync())
            {
                if (!resp.HasData)
                {
                    return(null);
                }

                var songs = new List <WebSong>();

                foreach (var googleResult in resp.Data.ResponseData.Results)
                {
                    var song = new WebSong();

                    if (!googleResult.Url.StartsWith("http://anymaza.com/music/"))
                    {
                        continue;
                    }

                    song.SetNameAndArtistFromTitle(googleResult.TitleNoFormatting.Remove(googleResult.TitleNoFormatting.LastIndexOf(artist, StringComparison.Ordinal) + artist.Length).Replace(" By ", " - "), false);

                    using (var anymazaResp = await googleResult.Url.ToUri().GetAsync())
                    {
                        if (!anymazaResp.IsSuccessStatusCode)
                        {
                            continue;
                        }

                        var document = await anymazaResp.ParseHtmlAsync();


                        var duration = document.DocumentNode.Descendants("center").FirstOrDefault()?.InnerText;
                        //Category: Justin Bieber - Purpose ( Deluxe Edition ) Duration: 3:28 sec Singer : Justin Bieber
                        if (!string.IsNullOrEmpty(duration))
                        {
                            try
                            {
                                duration = duration.Substring(duration.IndexOf("Duration:", StringComparison.Ordinal) + 9);
                                duration = duration.Remove(duration.LastIndexOf("sec", StringComparison.Ordinal)).Trim();
                                TimeSpan dur;
                                if (TimeSpan.TryParse("00:" + duration, out dur))
                                {
                                    song.Duration = dur;
                                }
                            }
                            catch
                            {
                                song.Duration = new TimeSpan(0, 4, 0);
                            }
                        }

                        var link = document.DocumentNode.Descendants("a")
                                   .FirstOrDefault(p => p.Attributes["class"]?.Value == "dowbutzip")?.Attributes["href"]?.Value;

                        if (string.IsNullOrEmpty(link))
                        {
                            continue;
                        }

                        if (link.StartsWith("/"))
                        {
                            song.AudioUrl = "http://anymaza.com" + link;
                        }
                        else
                        {
                            song.AudioUrl = link;
                        }
                    }
                    song.ProviderNumber = 9;
                    songs.Add(song);
                }

                return(songs.Any() ? await IdentfyMatchTrack.IdentifyMatches(songs, title, artist, false) : null);
            }
        }
Пример #2
0
        private static async Task <List <WebSong> > SearchMp3GluAsync(string title, string artist, int limit)
        {
            using (var response = await new Mp3GluSearchRequest(title.Append(artist)).ToResponseAsync())
            {
                if (!response.HasData)
                {
                    return(null);
                }

                var songNodes1 =
                    response.Data.DocumentNode.Descendants("div");

                var songNodes =
                    songNodes1.Where(p => p.Attributes["class"]?.Value.Contains("result_list") ?? false).Take(limit);

                var songs = new List <WebSong>();

                foreach (var songNode in songNodes)
                {
                    var song = new WebSong();

                    var detailsNode = songNode.Descendants("em").FirstOrDefault();

                    try
                    {
                        var duration = detailsNode.InnerText.Substring(0, detailsNode.InnerText.IndexOf("min ", StringComparison.Ordinal));
                        if (!string.IsNullOrEmpty(duration))
                        {
                            duration = duration.Replace("Duration : ", "").Trim();
                            var seconds = int.Parse(duration.Substring(duration.Length - 2, 2));
                            var minutes = int.Parse(duration.Remove(duration.Length - 3));
                            song.Duration = new TimeSpan(0, 0, minutes, seconds);
                        }
                    }

                    catch (Exception)
                    {
                        song.Duration = new TimeSpan(0, 4, 0);
                    }

                    var songTitle = songNode.Descendants("strong").FirstOrDefault()?.InnerText;
                    if (string.IsNullOrEmpty(songTitle))
                    {
                        continue;
                    }
                    song.SetNameAndArtistFromTitle(WebUtility.HtmlDecode(songTitle.Substring(0, songTitle.Length - 4)).Trim(), true);

                    var linkNode = songNode.Descendants("a")
                                   .FirstOrDefault();
                    song.AudioUrl = linkNode?.Attributes["href"]?.Value;

                    if (string.IsNullOrEmpty(song.AudioUrl))
                    {
                        continue;
                    }
                    song.ProviderNumber = 14;
                    songs.Add(song);
                }

                return(songs.Any() ? await IdentfyMatchTrack.IdentifyMatches(songs, title, artist, false) : null);
            }
        }
Пример #3
0
        private static async Task <List <WebSong> > SearchMp3FreexAsync(string title, string artist, int limit)
        {
            using (var response = await new Mp3FreexSearchRequest(title.Append(artist)).ToResponseAsync().DontMarshall())
            {
                if (!response.HasData)
                {
                    return(null);
                }

                var songNodes =
                    response.Data.DocumentNode.Descendants("div")
                    .Where(p => p.Attributes["class"]?.Value.Contains("actl") ?? false).Take(limit);

                var songs = new List <WebSong>();

                foreach (var songNode in songNodes)
                {
                    var song = new WebSong();

                    var songTitle =
                        songNode.Descendants("span")
                        .FirstOrDefault(p => p.Attributes["class"]?.Value == "res_title")?
                        .InnerText;
                    if (string.IsNullOrEmpty(songTitle))
                    {
                        continue;
                    }
                    song.SetNameAndArtistFromTitle(songTitle, true);

                    var meta =
                        songNode.Descendants("span")
                        .FirstOrDefault(p => p.Attributes["class"]?.Value == "label label-info")?
                        .InnerText;

                    if (!string.IsNullOrEmpty(meta))
                    {
                        try
                        {
                            var duration = meta.Substring(0, meta.IndexOf("|", StringComparison.Ordinal)).Trim();
                            var seconds  = int.Parse(duration.Substring(duration.Length - 2, 2));
                            var minutes  = int.Parse(duration.Remove(duration.Length - 3));
                            song.Duration = new TimeSpan(0, 0, minutes, seconds);
                        }
                        catch
                        {
                            song.Duration = new TimeSpan(0, 4, 0);
                        }
                    }

                    var linkNode =
                        songNode.Descendants("a")
                        .FirstOrDefault(p => p.Attributes["class"]?.Value.Contains("mp3download") ?? false);
                    var url = linkNode?.Attributes["data-online"]?.Value;

                    if (string.IsNullOrEmpty(url))
                    {
                        continue;
                    }

                    song.AudioUrl = await GetAudioUrlAsync(url).DontMarshall();

                    if (string.IsNullOrEmpty(song.AudioUrl))
                    {
                        continue;
                    }
                    song.ProviderNumber = 3;
                    songs.Add(song);
                }

                return(songs.Any() ? await IdentfyMatchTrack.IdentifyMatches(songs, title, artist, false) : null);
            }
        }