示例#1
0
 public static List <SongListItem> ParseSongs(string json)
 {
     try
     {
         List <SongListItem> songs = new List <SongListItem>();
         JObject             obj   = JObject.Parse(json);
         JArray array = obj["results"] as JArray;
         for (int i = 1; i < array.Count; i++)
         {
             JObject      songObject = array[i] as JObject;
             SongListItem song       = new SongListItem();
             song.Id          = Convert.ToInt32(songObject["trackId"].ToString());
             song.Name        = songObject["trackName"].ToString();
             song.ArtistName  = songObject["artistName"].ToString();
             song.ImageSource = new ImageSource()
             {
                 Sizex30  = songObject["artworkUrl30"].ToString(),
                 Sizex60  = songObject["artworkUrl60"].ToString(),
                 Sizex100 = songObject["artworkUrl100"].ToString()
             };
             songs.Add(song);
         }
         return(songs);
     }
     catch (Exception)
     {
         return(null);
     }
 }
示例#2
0
        private void RemovePlatformBase(PlatformData platform)
        {
            List <ListViewItem> toremove = new List <ListViewItem>();

            foreach (ListViewItem songitem in SongList.Items)
            {
                SongListItem      songtag   = songitem.Tag as SongListItem;
                List <FormatData> ftoremove = new List <FormatData>();
                foreach (FormatData data in songtag.Data)
                {
                    if (data.PlatformData == platform)
                    {
                        ftoremove.Add(data);
                    }
                }
                if (ftoremove.Count > 0)
                {
                    toremove.Add(songitem);
                }
                foreach (FormatData data in ftoremove)
                {
                    songtag.RemoveData(data);
                }
            }
            foreach (ListViewItem item in toremove)
            {
                SongList.Items.Remove(item);
            }
        }
示例#3
0
        private void HandleMostrarMusicaClick(object sender, RoutedEventArgs e)
        {
            object selected = lvSelecionadas.SelectedItem;

            if (selected != null)
            {
                SongListItem songListItem = selected as SongListItem;
                PlayingSong = PlayingSong.CreateInstance(songListItem.Song);
                dpPlayingSong.DataContext = PlayingSong;
                if (PresentationWindow == null)
                {
                    PresentationWindow = new PresentationWindow(PresentationController, ResourceConfiguration, StateConfiguration);
                    PresentationController.SetKeyEvents(PresentationWindow);
                    StateConfiguration.UpdatePresentationWindowPosition(Left, Top, ActualWidth, ActualHeight,
                                                                        PresentationWindow.Width, PresentationWindow.Height);
                    PresentationWindow.Left = StateConfiguration.PresentationWindowLeft;
                    PresentationWindow.Top  = StateConfiguration.PresentationWindowTop;
                    PresentationWindow.Show();
                }
                PresentationWindow.Visibility = Visibility.Visible;
                PresentationHidden            = false;
                HandlePresentationWindowButtons();
                PresentationController.ChangeSong(PlayingSong);
            }
        }
示例#4
0
        private void SongList_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
        {
            if (e.ColumnIndex == 5)
            {
                e.DrawBackground();
                SongListItem item = e.Item.Tag as SongListItem;
                int          x    = e.Bounds.X;
                if (item.Images.Images[0])
                {
                    e.Graphics.DrawImage(Properties.Resources.IconFolder, x, e.Bounds.Y, 16, 16);
                }

                x += 20;

                if (SD != null)
                {
                    if (item.Images.Images[1])
                    {
                        e.Graphics.DrawImage(Properties.Resources.IconRSD, x, e.Bounds.Y, 16, 16);
                    }
                    x += 20;
                }

                if (item.Images.Game != Game.Unknown)
                {
                    e.Graphics.DrawImage(item.Images.GameImage, x, e.Bounds.Y, 16, 16);
                }
            }
            else
            {
                e.DrawDefault = true;
            }
        }
示例#5
0
        public void ListView_ItemTapped(System.Object sender, Xamarin.Forms.ItemTappedEventArgs e)
        {
            SongListItem sli = SongsModel.userList[e.ItemIndex];
            string       uri = "https://www.smule.com" + sli.DownloadUri;

            Browser.OpenAsync(uri, BrowserLaunchMode.SystemPreferred);
        }
 public MediaPlayerPlaylistItem(SongListItem songListItem)
 {
     this.Id          = songListItem.Id;
     this.Title       = songListItem.SongName;
     this.PlayableUrl = songListItem.PlayableUrl;
     this.ImageUrl    = songListItem.ImageUrl;
 }
示例#7
0
            /// <summary>
            /// 搜索函数
            /// </summary>
            /// <param name="Query">必选,关键字</param>
            /// <param name="PageNumber">可选,页码,默认为1</param>
            /// <param name="PageSize">可选,每页数据条数,默认为20</param>
            /// <returns>结果</returns>
            public static ResultData Search(string Query, int PageNumber = 1, int PageSize = 10)
            {
                HttpWebRequest  Req;
                HttpWebResponse Rep;

                try
                {
                    Req = (HttpWebRequest)WebRequest.Create(@"http://search.5sing.kugou.com/home/json?keyword=" + HttpUtility.UrlEncode(Query, Encoding.UTF8) + "&sort=1&page=" + PageNumber + "&filter=0&type=0");
                    Rep = (HttpWebResponse)Req.GetResponse();
                    StreamReader Reader = new StreamReader(Rep.GetResponseStream());
                    string       str    = Reader.ReadToEnd();
                    str = str.Replace("<em class=\\\\\\\"keyword\\\\\\\">", "").Replace("<\\/em>", "");
                    JObject    p      = JObject.Parse(str);
                    ResultData Result = new ResultData {
                        List1 = new List <SongListItem>()
                    };
                    Result.Tot = int.Parse(p["pageInfo"]["totalCount"].ToString());
                    foreach (var songinfo in p["list"])
                    {
                        SongListItem SLI = new SongListItem {
                            Album1 = "", Singer1 = songinfo["singer"].ToString(), SongId1 = songinfo["songId"].ToString(), SongName1 = songinfo["songName"].ToString(), Lrc1 = "", Quality1 = new QualityList(), Pic1 = new SongPic(), SongInterval1 = ""
                        };
                        SLI.Quality1.Qother = true;
                        SLI.Quality1.Sother = songinfo["songSize"].ToString();
                        SLI.Quality1.Fother = songinfo["typeEname"].ToString() + "-" + songinfo["songId"].ToString();
                        Result.List1.Add(SLI);
                    }
                    return(Result);
                }
                catch (Exception ex)
                {
                    return(new ResultData());
                }
            }
示例#8
0
        public async Task Download(SongListItem obj)
        {
            SmuleClient client = new SmuleClient();

            if (Device.RuntimePlatform == Device.Android)
            {
                DependencyService.Get <ISaveFile>().SaveFile();
                //string thePath = Environment..GetExternalStoragePublicDirectory(Environment.DirectoryDocuments).AbsolutePath Environment.GetFolderPath(Environment.SpecialFolder.);
                await client.DownloadSong(obj.DownloadUri, obj.Title, "/storage/emulated/0/Music/");
            }
            if (Device.RuntimePlatform == Device.iOS)
            {
                string downloadPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                downloadPath = Path.Combine(downloadPath, "Music");
                if (!Directory.Exists(downloadPath))
                {
                    Directory.CreateDirectory(downloadPath);
                }
                //ToDo
                //There is some trouble with file.exists
                // if(!File.Exists(Path.Combine(downloadPath,obj.Title + ".mp4")))
                var progress = new Progress <float>();
                progress.ProgressChanged += Download_Progress_Changed;
                await client.DownloadSong(obj.DownloadUri, ReplaceIllegal(obj.Title, "_") + "_" + ReplaceIllegal(obj.Performare, "_"), downloadPath, obj.progress);
            }
        }
示例#9
0
 public static List <SongListItem> ParseTopSongs(string json)
 {
     try
     {
         List <SongListItem> songs = new List <SongListItem>();
         JObject             obj   = JObject.Parse(json);
         JArray array = (obj["feed"])["entry"] as JArray;
         for (int i = 0; i < array.Count; i++)
         {
             JObject      songObject = array[i] as JObject;
             SongListItem song       = new SongListItem();
             song.Sort = i + 1;
             song.Id   = Convert.ToInt32(((songObject["id"])["attributes"])["im:id"].ToString());
             song.Name = (songObject["im:name"])["label"].ToString();
             int colID = 0;
             try
             {
                 string   collectionID = (((songObject["im:collection"])["link"])["attributes"])["href"].ToString();
                 string[] split        = collectionID.Split('/');
                 string[] split2       = split[split.Length - 1].Split('?');
                 colID = Convert.ToInt32(split2[0].Replace("id", ""));
             }
             catch { }
             int artID = 0;
             try
             {
                 string   artistID = ((songObject["im:artist"])["attributes"])["href"].ToString();
                 string[] split    = artistID.Split('/');
                 string[] split2   = split[split.Length - 1].Split('?');
                 artID = Convert.ToInt32(split2[0].Replace("id", ""));
             }
             catch { }
             try
             {
                 song.ArtistName  = (songObject["im:artist"])["label"].ToString();
                 song.ImageSource = new ImageSource()
                 {
                     Sizex30  = ((songObject["im:image"])[0])["label"].ToString(),
                     Sizex60  = ((songObject["im:image"])[1])["label"].ToString(),
                     Sizex100 = ((songObject["im:image"])[2])["label"].ToString()
                 };
             }
             catch { }
             song.ReleaseDate = Convert.ToDateTime((songObject["im:releaseDate"])["label"].ToString());
             song.Sort        = i + 1;
             songs.Add(song);
         }
         return(songs);
     }
     catch (Exception)
     {
         return(null);
     }
 }
示例#10
0
        public void Add(SongListItem song)
        {
            if (this.Playlist.Any(x => x.Id == song.Id))
            {
                // Song already in the playlist
                return;
            }

            this.Playlist.Add(new MediaPlayerPlaylistItem(song));

            this.Change();
        }
示例#11
0
        public TestViewModel()
        {
            TestCommand = new Command((key) =>
            {
                // Add the key to the input string.

                /*Random generator = new Random();
                 * setProgress(0, Double.Parse(generator.Next(0,100).ToString()));*/
                setProgress(0, 100);
            });
            Download_Clicked = new Command((key) =>
            {
            });
            SongListItem sli = new SongListItem();
            {
                sli.DownloadUri     = "http://www.testdownload.de";
                sli.IsDownloaded    = false;
                sli.MediaUri        = "http://www.testmediadownload.de";
                sli.PerformanceDate = "10.10.2010";
                sli.Performare      = "Niclani";
                sli.Progress        = 0;
                sli.Title           = "Sing with me";
                sli.IsDownloading   = false;
            }
            SongListItem sli2 = new SongListItem();
            {
                sli2.DownloadUri     = "http://www.testdownload.de";
                sli2.IsDownloaded    = true;
                sli2.MediaUri        = "http://www.testmediadownload.de";
                sli2.PerformanceDate = "19.10.2010";
                sli2.Performare      = "Niclani";
                sli2.Progress        = 100;
                sli2.Title           = "Sing with me again";
                sli2.IsDownloading   = false;
            }
            SongListItem sli3 = new SongListItem();

            {
                sli3.DownloadUri     = "http://www.testdownload.de";
                sli3.IsDownloaded    = false;
                sli3.MediaUri        = "http://www.testmediadownload.de";
                sli3.PerformanceDate = "19.10.2010";
                sli3.Performare      = "Niclani";
                sli3.Progress        = 50;
                sli3.Title           = "Half way done";
                sli3.IsDownloading   = true;
            }

            testListe.Add(sli);
            testListe.Add(sli2);
            testListe.Add(sli3);
        }
示例#12
0
    private void PrepareAllSongs()
    {
        foreach (NoteChart nc in allNoteCharts)
        {
            GameObject createdSong = GameObject.Instantiate(songPrefab);

            createdSong.transform.SetParent(songListTransform);
            createdSong.transform.localScale = new Vector3(1, 1, 1);

            SongListItem sli = createdSong.GetComponent <SongListItem>();
            sli.noteChart = nc;
        }
    }
示例#13
0
            /// <summary>
            /// 搜索函数
            /// </summary>
            /// <param name="Query">必选,关键字</param>
            /// <param name="PageNumber">可选,页码,默认为1</param>
            /// <param name="PageSize">可选,每页数据条数,默认为20</param>
            /// <returns>结果</returns>
            public static ResultData Search(string Query, int PageNumber = 1, int PageSize = 20)
            {
                HttpWebRequest  Req;
                HttpWebResponse Rep;

                try
                {
                    Req = (HttpWebRequest)WebRequest.Create(@"http://songsearch.kugou.com/song_search_v2?clientver=8018&keyword=" + HttpUtility.UrlEncode(Query, Encoding.UTF8) + @"&pagesize=" + PageSize + @"&page=" + PageNumber);
                    Rep = (HttpWebResponse)Req.GetResponse();
                    StreamReader Reader = new StreamReader(Rep.GetResponseStream());
                    string       str    = Reader.ReadToEnd();
                    JObject      p      = JObject.Parse(str);
                    ResultData   Result = new ResultData {
                        List1 = new List <SongListItem>()
                    };
                    Result.Tot = int.Parse(p["data"]["total"].ToString());
                    foreach (var songinfo in p["data"]["lists"])
                    {
                        SongListItem SLI = new SongListItem {
                            Album1 = songinfo["AlbumName"].ToString(), Singer1 = songinfo["SingerName"].ToString(), SongId1 = songinfo["ID"].ToString(), SongName1 = songinfo["SongName"].ToString(), Lrc1 = "", Quality1 = new QualityList(), Pic1 = new SongPic(), SongInterval1 = songinfo["Duration"].ToString()
                        };
                        SLI.Lrc1 = "http://lyrics.kugou.com/search?ver=1&man=yes&client=pc&keyword=" + HttpUtility.UrlEncode(songinfo["SingerName"].ToString() + "-" + songinfo["SongName"].ToString(), Encoding.UTF8) + "&duration=" + songinfo["Duration"].ToString() + "000&hash=" + songinfo["FileHash"].ToString();
                        if (songinfo["FileHash"].ToString() != "00000000000000000000000000000000")
                        {
                            SLI.Quality1.Q128 = true;
                            SLI.Quality1.S128 = songinfo["FileSize"].ToString();
                            SLI.Quality1.F128 = songinfo["FileHash"].ToString();
                        }
                        if (songinfo["HQFileHash"].ToString() != "00000000000000000000000000000000")
                        {
                            SLI.Quality1.Q320 = true;
                            SLI.Quality1.S320 = songinfo["HQFileSize"].ToString();
                            SLI.Quality1.F320 = songinfo["HQFileHash"].ToString();
                        }
                        if (songinfo["SQFileHash"].ToString() != "00000000000000000000000000000000")
                        {
                            SLI.Quality1.Ape  = true;
                            SLI.Quality1.Sape = songinfo["SQFileSize"].ToString();
                            SLI.Quality1.Fape = songinfo["SQFileHash"].ToString();
                        }
                        Result.List1.Add(SLI);
                    }
                    return(Result);
                }
                catch (Exception ex)
                {
                    return(new ResultData());
                }
            }
示例#14
0
        public void ToolTipGetter_ForActiveSong_ReturnsNull()
        {
            // Arrange

            var song = new SongModel();

            var target = new SongListItem(song);

            // Act

            var toolTip = target.ToolTip;

            // Assert

            toolTip.Should().BeNull();
        }
示例#15
0
        private void UpdateSongListBase(PlatformData data)
        {
            SongListItem item;

            foreach (FormatData song in data.GetChanges(false))
            {
                SongData songdata = song.Song;
                item = null;
                foreach (ListViewItem songitem in SongList.Items)
                {
                    SongListItem songtag = songitem.Tag as SongListItem;
                    if (songtag.SongID == songdata.ID)
                    {
                        item = songtag;
                        break;
                    }
                }
                if (item == null)
                {
                    ListViewItem listitem = new ListViewItem("");
                    listitem.Tag = new SongListItem(listitem, song, songdata);
                    SongList.Items.Add(listitem);
                }
                else
                {
                    item.AddData(song, songdata);
                }
            }
            foreach (FormatData song in data.GetChanges(true))
            {
                foreach (ListViewItem songitem in SongList.Items)
                {
                    item = songitem.Tag as SongListItem;
                    if (item != null && item.HasData(song))
                    {
                        item.RemoveData(song);
                        if (!item.HasData())
                        {
                            SongList.Items.Remove(songitem);
                        }
                        break;
                    }
                }
            }
        }
示例#16
0
        private void MenuSongsEdit_Click(object sender, EventArgs e)
        {
            foreach (FormatData data in GetSelectedSongData())
            {
                EditForm.Show(data, data.PlatformData == Storage, false, this);
            }

            foreach (ListViewItem listitem in SongList.SelectedItems)
            {
                SongListItem item = listitem.Tag as SongListItem;
                if (item != null)
                {
                    item.Update();
                }
            }

            SongListTimer_Tick(SongList, EventArgs.Empty);
        }
示例#17
0
        public void BitRateGetter_ForActiveSong_ReturnsCorrectValue()
        {
            // Arrange

            var song = new SongModel
            {
                BitRate = 320000,
            };

            var target = new SongListItem(song);

            // Act

            var bitRate = target.BitRate;

            // Assert

            bitRate.Should().Be("320");
        }
示例#18
0
        private void MenuSongsRefresh_Click(object sender, EventArgs e)
        {
            List <FormatData> list = new List <FormatData>();

            foreach (var song in GetSelectedSongs())
            {
                list.AddRange(song.Data);
            }
            if (list.Count == 0)
            {
                if (Storage != null)
                {
                    list.AddRange(Storage.Songs);
                }
                foreach (PlatformData platform in Platforms)
                {
                    list.AddRange(platform.Songs);
                }
            }
            QueueRefresh(list);

            List <ListViewItem> items;

            if (SongList.SelectedItems.Count == 0)
            {
                items = new List <ListViewItem>(SongList.Items.OfType <ListViewItem>());
            }
            else
            {
                items = new List <ListViewItem>(SongList.SelectedItems.OfType <ListViewItem>());
            }

            foreach (ListViewItem listitem in items)
            {
                SongListItem item = listitem.Tag as SongListItem;
                if (item != null)
                {
                    item.Update();
                }
            }

            SongListTimer_Tick(SongList, EventArgs.Empty);
        }
示例#19
0
        public void FileSizeGetter_ForActiveSong_ReturnsCorrectValue()
        {
            // Arrange

            var song = new SongModel
            {
                Size = 123456789,
            };

            var target = new SongListItem(song);

            // Act

            var bitRate = target.FileSize;

            // Assert

            bitRate.Should().Be("117.7 MB");
        }
示例#20
0
        public void FileSizeGetter_ForDeletedSong_ReturnsCorrectValue()
        {
            // Arrange

            var song = new SongModel
            {
                Size       = null,
                DeleteDate = new DateTime(2021, 10, 25),
            };

            var target = new SongListItem(song);

            // Act

            var bitRate = target.FileSize;

            // Assert

            bitRate.Should().Be("N/A");
        }
示例#21
0
        public void ToolTipGetter_ForDeletedSongWithoutDeleteComment_ReturnsCorrectValue()
        {
            // Arrange

            var song = new SongModel
            {
                DeleteDate    = new DateTime(2021, 10, 26),
                DeleteComment = null,
            };

            var target = new SongListItem(song);

            // Act

            var toolTip = target.ToolTip;

            // Assert

            toolTip.Should().Be("The song was deleted on 2021.10.26 without comment");
        }
示例#22
0
        GetFavorites()
        {
            SmuleClient client = new SmuleClient();

            IsBusy = true;
            List <SmuleLib.Model.List> favSongs = await client.GetFavoritesAsync(userName, _count);

            IsBusy = false;
            if (Device.RuntimePlatform == Device.iOS)
            {
                string downloadPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                downloadPath = Path.Combine(downloadPath, "Music");

                Random rnd = new Random();
                foreach (SmuleLib.Model.List song in favSongs)
                {
                    SongListItem item = new SongListItem();
                    item.Title           = song.title;
                    item.Performare      = song.other_performers.Length > 0 ? (song.other_performers[0].handle + " - " + song.owner.handle) : song.owner.handle;
                    item.PerformanceDate = song.created_at.ToString();
                    item.PerformareGroup = song.owner.handle;
                    item.DownloadUri     = song.web_url;

                    item.Progress = rnd.Next(0, 100);
                    string path = Path.Combine(downloadPath, ReplaceIllegal(item.Title, "_") + "_" + ReplaceIllegal(item.Performare, "_") + ".mp4");
                    if (!item.IsDownloaded && File.Exists(path))
                    {
                        System.IO.FileInfo fi = new FileInfo(path);
                        if (fi.Length > 500000)
                        {
                            item.IsDownloaded = true;
                        }
                        else
                        {
                            fi.Delete();
                        }
                    }
                    userList.Add(item);
                }
            }
        }
示例#23
0
    public void Start()
    {
        ScoreStore.LoadOffline();

        if (BeatmapStore.Beatmaps == null)
        {
            BeatmapStore.LoadAll();
        }

        SongListItemRect  = SongListItemPrefab.GetComponent <RectTransform>().rect;
        ScoreListItemRect = ScoreListItemPrefab.GetComponent <RectTransform>().rect;

        AddItemsToList(
            BeatmapStore.Beatmaps.Count,
            SongListItemPrefab,
            VerticalSongSelectListPosition,
            SongListContentTransform,
            (GameObject songListItem, int index) =>
        {
            SongListItem item = songListItem.GetComponent <SongListItem>();
            item.Load();
            item.SetBeatmapInfo(BeatmapStore.Beatmaps[index]);
            item.SelectedChange(false);
        }
            );

        if (first)
        {
            Selected = UnityEngine.Random.Range(0, BeatmapStore.Beatmaps.Count);
        }
        else
        {
            Selected = Selected;
        }
        isStart = false;
        first   = false;
    }
示例#24
0
            /// <summary>
            /// 获取歌曲文件
            /// </summary>
            /// <param name="Result">必选,搜索结果</param>
            /// <returns>结果</returns>
            public static SongListItem GetSong(SongListItem Result)
            {
                HttpWebRequest  Req;
                HttpWebResponse Rep;

                try
                {
                    byte[] param = Encoding.UTF8.GetBytes("param=" + Convert.ToBase64String(Encoding.UTF8.GetBytes("{\"key\":\"" + Result.SongId1 + "\",\"rate\":\"128,192,256,320,flac\",\"linkType\":0,\"isCloud\":0,\"version\":\"10.1.8.3\"}")));
                    Req             = (HttpWebRequest)WebRequest.Create(@"http://musicmini2014.baidu.com/2016/app/link/getLinks.php");
                    Req.Method      = "POST";
                    Req.ContentType = "application/x-www-form-urlencoded";
                    Req.UserAgent   = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.2; WOW64; Trident/7.0)";
                    Stream reqstream = Req.GetRequestStream();
                    reqstream.Write(param, 0, param.Length);
                    reqstream.Close();
                    Rep = (HttpWebResponse)Req.GetResponse();
                    StreamReader Reader = new StreamReader(Rep.GetResponseStream());
                    string       str    = Reader.ReadToEnd();
                    JObject      p      = JObject.Parse(str);
                    Result.Lrc1         = p["lyric_url"].ToString();
                    Result.Pic1.Large1  = p["album_image_url"].ToString();
                    Result.Pic1.Middle1 = Regex.Split(p["album_image_url"].ToString(), ",")[0] + ",w_250";
                    Result.Pic1.Small1  = p["small_album_image_url"].ToString();
                    string[] Songfilelist = Regex.Split(p["file_list"].ToString().Replace("[", "").Replace("]", "").Replace("\r\n", "").Replace(" ", ""), "},{");
                    for (int i = 0; i < Songfilelist.Length; i++)
                    {
                        if (i != 0 && i != Songfilelist.Length - 1)
                        {
                            Songfilelist[i] = "{" + Songfilelist[i] + "}";
                        }
                        else
                        {
                            if (i == 0 && i != Songfilelist.Length - 1)
                            {
                                Songfilelist[i] = Songfilelist[i] + "}";
                            }
                            else
                            {
                                if (i == Songfilelist.Length - 1 && i != 0)
                                {
                                    Songfilelist[i] = "{" + Songfilelist[i];
                                }
                            }
                        }
                        JObject songdinfo = JObject.Parse(Songfilelist[i]);
                        if (int.Parse(songdinfo["kbps"].ToString()) <= 320)
                        {
                            switch (int.Parse(songdinfo["kbps"].ToString()))
                            {
                            case 128:
                                Result.Quality1.F128 = @"http://zhangmenshiting.baidu.com/data2/music/" + songdinfo["file_id"] + @"/" + songdinfo["file_id"] + @".mp3";
                                Result.Quality1.S128 = songdinfo["size"].ToString();
                                break;

                            case 192:
                                Result.Quality1.F192 = @"http://zhangmenshiting.baidu.com/data2/music/" + songdinfo["file_id"] + @"/" + songdinfo["file_id"] + @".mp3";
                                Result.Quality1.S192 = songdinfo["size"].ToString();
                                break;

                            case 256:
                                Result.Quality1.F256 = @"http://zhangmenshiting.baidu.com/data2/music/" + songdinfo["file_id"] + @"/" + songdinfo["file_id"] + @".mp3";
                                Result.Quality1.S256 = songdinfo["size"].ToString();
                                break;

                            case 320:
                                Result.Quality1.F320 = @"http://zhangmenshiting.baidu.com/data2/music/" + songdinfo["file_id"] + @"/" + songdinfo["file_id"] + @".mp3";
                                Result.Quality1.S320 = songdinfo["size"].ToString();
                                break;
                            }
                        }
                        else
                        {
                            Result.Quality1.Fflac = @"http://zhangmenshiting.baidu.com/data2/music/" + songdinfo["file_id"] + @"/" + songdinfo["file_id"] + @".flac";
                            Result.Quality1.Sflac = songdinfo["size"].ToString();
                        }
                    }
                    return(Result);
                }
                catch (Exception ex)
                {
                    return(Result);
                }
            }
示例#25
0
            /// <summary>
            /// 搜索函数
            /// </summary>
            /// <param name="Query">必选,关键字</param>
            /// <param name="PageNumber">可选,页码,默认为1</param>
            /// <param name="PageSize">可选,每页数据条数,默认为20</param>
            /// <returns>结果</returns>
            public static ResultData Search(string Query, int PageNumber = 1, int PageSize = 20)
            {
                HttpWebRequest  Req;
                HttpWebResponse Rep;

                try
                {
                    Req = (HttpWebRequest)WebRequest.Create(@"http://c.y.qq.com/soso/fcgi-bin/search_cp?remoteplace=txt.yqq.center&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=" + PageNumber + "&n=" + PageSize + "&w=" + HttpUtility.UrlEncode(Query, Encoding.UTF8) + @"&format=json&inCharset=utf8&outCharset=utf-8&platform=yqq");
                    Rep = (HttpWebResponse)Req.GetResponse();
                    StreamReader Reader = new StreamReader(Rep.GetResponseStream());
                    string       str    = Reader.ReadToEnd();
                    JObject      p      = JObject.Parse(str);
                    ResultData   Result = new ResultData {
                        List1 = new List <SongListItem>()
                    };
                    Result.Tot = int.Parse(p["data"]["song"]["totalnum"].ToString());
                    foreach (var songinfo in p["data"]["song"]["list"])
                    {
                        SongListItem SLI = new SongListItem {
                            Album1 = songinfo["albumname"].ToString(), Singer1 = "", SongId1 = songinfo["songmid"].ToString(), SongName1 = songinfo["songname"].ToString(), Lrc1 = "", Quality1 = new QualityList(), Pic1 = new SongPic(), SongInterval1 = songinfo["interval"].ToString()
                        };
                        SLI.Pic1.Large1  = "https://y.gtimg.cn/music/photo_new/T002R800x800M000" + songinfo["albummid"].ToString() + ".jpg?max_age=2592000";
                        SLI.Pic1.Middle1 = "https://y.gtimg.cn/music/photo_new/T002R500x500M000" + songinfo["albummid"].ToString() + ".jpg?max_age=2592000";
                        SLI.Pic1.Small1  = "https://y.gtimg.cn/music/photo_new/T002R200x200M000" + songinfo["albummid"].ToString() + ".jpg?max_age=2592000";
                        SLI.Lrc1         = "https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric_new.fcg?format=json&platform=yqq&g_tk=938407465&songmid=" + songinfo["songmid"].ToString();
                        if (int.Parse(songinfo["type"].ToString()) == 0)
                        {
                            if (int.Parse(songinfo["size128"].ToString()) != 0)
                            {
                                SLI.Quality1.Q128 = true;
                                SLI.Quality1.S128 = songinfo["size128"].ToString();
                                SLI.Quality1.F128 = "http://dl.stream.qqmusic.qq.com/M500" + songinfo["songmid"].ToString() + ".mp3";
                            }
                            if (int.Parse(songinfo["size320"].ToString()) != 0)
                            {
                                SLI.Quality1.Q320 = true;
                                SLI.Quality1.S320 = songinfo["size320"].ToString();
                                SLI.Quality1.F320 = "http://dl.stream.qqmusic.qq.com/M800" + songinfo["songmid"].ToString() + ".mp3";
                            }

                            //接口不支持获取无损歌曲
                            //if (int.Parse(songinfo["sizeape"].ToString()) != 0)
                            //{
                            //    SLI.Quality1.Ape = true;
                            //    SLI.Quality1.Sape = songinfo["sizeape"].ToString();
                            //    SLI.Quality1.Fape = "http://dl.stream.qqmusic.qq.com/A000" + songinfo["songmid"].ToString() + ".ape";
                            //}
                            //if (int.Parse(songinfo["sizeflac"].ToString()) != 0)
                            //{
                            //    SLI.Quality1.Flac = true;
                            //    SLI.Quality1.Sflac = songinfo["sizeflac"].ToString();
                            //    SLI.Quality1.Fflac = "http://dl.stream.qqmusic.qq.com/F000" + songinfo["songmid"].ToString() + ".flac";
                            //}
                        }
                        else
                        {
                            if (int.Parse(songinfo["type"].ToString()) == 2)
                            {
                                SLI.Quality1.Qother = true;
                                SLI.Quality1.Fother = songinfo["songurl"].ToString();
                            }
                        }
                        SLI.Singer1 = songinfo["singer"][0]["name"].ToString();
                        Result.List1.Add(SLI);
                    }
                    return(Result);
                }
                catch (Exception ex)
                {
                    return(new ResultData());
                }
            }
示例#26
0
 public void AddAndPlay(SongListItem song)
 {
     this.AddAndPlay(new MediaPlayerPlaylistItem(song));
 }
示例#27
0
 private void ServerClicked(TableView sender, SongListItem songListItem)
 {
     SongSelected?.Invoke(songListItem.parameters);
 }
示例#28
0
        private void LoadSongListFromResource()
        {
            SongList = StateConfiguration.SongList;

            var songList = new SongList(SongController.GetSongs(ResourceConfiguration).Select(s => SongListItem.CreateInstance(s)));

            if (SongList != null)
            {
                foreach (var song in songList)
                {
                    var found = SongList.FirstOrDefault(s => s.AreSame(song));
                    if (found != null)
                    {
                        song.Selected = found.Selected;
                    }
                }
            }
            SongList = songList;
            StateConfiguration.SongList = SongList;
            StateConfiguration.Save();
        }
示例#29
0
        private void HandlePlaylistHolding(object sender, HoldingRoutedEventArgs e)
        {
            SongListItem.CloseExpandedEntry();

            PlaylistListView.ReorderMode = ListViewReorderMode.Enabled;
        }
示例#30
0
 private void HandlePlaylistReorderToggleButtonClick(object sender, RoutedEventArgs e)
 {
     SongListItem.CloseExpandedEntry();
 }