コード例 #1
0
 public void Load(string file)
 {
     Items.Clear();
       string filename = Config.GetFile(Config.Dir.Config, file);
       XmlDocument doc = new XmlDocument();
       if (File.Exists(filename))
       {
     try
     {
       doc.Load(filename);
       XmlNode ver = doc.DocumentElement.SelectSingleNode("/SiteItemEnumerator");
       XmlNodeList fileList = ver.SelectNodes("Items");
       foreach (XmlNode nodefile in fileList)
       {
     SiteItemEntry itemEntry=new SiteItemEntry();
     itemEntry.Title = nodefile.SelectSingleNode("Title").InnerText;
     itemEntry.Provider = nodefile.SelectSingleNode("Provider").InnerText;
     itemEntry.ConfigString = nodefile.SelectSingleNode("ConfigString").InnerText;
     itemEntry.Parent = this;
     Items.Add(itemEntry);
       }
     }
     catch (Exception ex)
     {
       Log.Error(ex);
     }
       }
 }
コード例 #2
0
        public void Load(string file)
        {
            Items.Clear();
            string      filename = Config.GetFile(Config.Dir.Config, file);
            XmlDocument doc      = new XmlDocument();

            if (File.Exists(filename))
            {
                try
                {
                    doc.Load(filename);
                    XmlNode     ver      = doc.DocumentElement.SelectSingleNode("/SiteItemEnumerator");
                    XmlNodeList fileList = ver.SelectNodes("Items");
                    foreach (XmlNode nodefile in fileList)
                    {
                        SiteItemEntry itemEntry = new SiteItemEntry();
                        itemEntry.Title        = nodefile.SelectSingleNode("Title").InnerText;
                        itemEntry.Provider     = nodefile.SelectSingleNode("Provider").InnerText;
                        itemEntry.ConfigString = nodefile.SelectSingleNode("ConfigString").InnerText;
                        itemEntry.Parent       = this;
                        Items.Add(itemEntry);
                    }
                }
                catch (Exception ex)
                {
                    Log.Error(ex);
                }
            }
        }
コード例 #3
0
 private void btn_add_provider_Click(object sender, EventArgs e)
 {
     ISiteItem siteItem = Youtube2MP.SiteItemProvider[cmb_providers.SelectedItem.ToString()];
       ListViewItem listViewItem = new ListViewItem(siteItem.Name);
       SiteItemEntry entry = new SiteItemEntry() { Provider = siteItem.Name, Title = siteItem.Name };
       if (siteItem.Name == "Folder")
     listViewItem.BackColor = Color.Cyan;
       listViewItem.Tag = entry;
       listViewItem.Selected = true;
       list_startpage.Items.Add(listViewItem);
 }
コード例 #4
0
 public SiteItemEntry Copy()
 {
     SiteItemEntry newEntry=new SiteItemEntry();
       foreach (KeyValuePair<string, string> keyValuePair in setting)
       {
     newEntry.SetValue(keyValuePair.Key, keyValuePair.Value);
       }
       newEntry.Parent = this.Parent;
       newEntry.ParentFolder = this.ParentFolder;
       newEntry.Provider = this.Provider;
       newEntry.StartItem = this.StartItem;
       newEntry.Title = this.Title;
       newEntry.Url = this.Url;
       return newEntry;
 }
コード例 #5
0
        public SiteItemEntry Copy()
        {
            SiteItemEntry newEntry = new SiteItemEntry();

            foreach (KeyValuePair <string, string> keyValuePair in setting)
            {
                newEntry.SetValue(keyValuePair.Key, keyValuePair.Value);
            }
            newEntry.Parent       = this.Parent;
            newEntry.ParentFolder = this.ParentFolder;
            newEntry.Provider     = this.Provider;
            newEntry.StartItem    = this.StartItem;
            newEntry.Title        = this.Title;
            newEntry.Url          = this.Url;
            return(newEntry);
        }
コード例 #6
0
        /// <summary>
        /// Called when [show context menu].
        /// </summary>
        protected override void OnShowContextMenu()
        {
            GUIListItem selectedItem = listControl.SelectedListItem;
              string artistName = string.Empty;

              YouTubeEntry videoEntry;
              LocalFileStruct file = selectedItem.MusicTag as LocalFileStruct;
              SiteItemEntry entry = selectedItem.MusicTag as SiteItemEntry;
              if (file != null)
              {
            Uri videoEntryUrl = new Uri("http://gdata.youtube.com/feeds/api/videos/" + file.VideoId);
            Video video = Youtube2MP.request.Retrieve<Video>(videoEntryUrl);
            videoEntry = video.YouTubeEntry;
              }
              else
              {
            videoEntry = selectedItem.MusicTag as YouTubeEntry;
            if (videoEntry == null)
            {
              if (entry != null)
              {
            GenericListItemCollections genericListItem = Youtube2MP.GetList(entry);
            if (entry.Provider == "VideoItem" && genericListItem.Items.Count > 0)
            {
              videoEntry = genericListItem.Items[0].Tag as YouTubeEntry;
            }
              }
            }
            if (videoEntry == null)
              return;
            Uri videoEntryUrl = new Uri("http://gdata.youtube.com/feeds/api/videos/" + Youtube2MP.GetVideoId(videoEntry));
            Video video = Youtube2MP.request.Retrieve<Video>(videoEntryUrl);
            videoEntry = video.YouTubeEntry;
              }

              if (videoEntry == null)
            return;

              artistName = ArtistManager.Instance.GetArtistName(videoEntry.Title.Text);

              ArtistItem artistItem = GetArtist(videoEntry);

              GUIDialogMenu dlg = (GUIDialogMenu) GUIWindowManager.GetWindow((int) Window.WINDOW_DIALOG_MENU);
              if (dlg == null)
            return;
              dlg.Reset();
              dlg.SetHeading(Translation.ContextMenu); // menu
              if (Youtube2MP.player.CurrentSong > -1 || Youtube2MP.temp_player.CurrentSong > -1)
            dlg.Add(Translation.PlayNext);
              dlg.Add(Translation.Info);
              dlg.Add(Translation.RelatedVideos);
              dlg.Add(Translation.VideoResponses);
              dlg.Add(string.Format(Translation.AllVideosFromUser, videoEntry.Authors[0].Name));
              dlg.Add(Translation.AddPlaylist);
              dlg.Add(Translation.AddAllPlaylist);
              if (Youtube2MP.service.Credentials != null)
              {
            dlg.Add(Translation.AddFavorites);
            dlg.Add(Translation.AddWatchLater);
              }
              dlg.Add(Translation.Options);
              dlg.Add(Translation.DownloadVideo);
              if (!string.IsNullOrEmpty(artistName) &&
              !string.IsNullOrEmpty(ArtistManager.Instance.GetArtistsByName(artistName).Name))
            dlg.Add(string.Format(Translation.AllMusicVideosFrom, artistName));
              if (!string.IsNullOrEmpty(artistItem.Id))
            dlg.Add(Translation.SimilarArtists);

              dlg.DoModal(GetID);
              if (dlg.SelectedId == -1)
            return;
              if (dlg.SelectedLabelText == Translation.RelatedVideos)
              {
            if (videoEntry.RelatedVideosUri != null)
            {
              YouTubeQuery query = new YouTubeQuery(videoEntry.RelatedVideosUri.Content);
              YouTubeFeed vidr = service.Query(query);
              if (vidr.Entries.Count > 0)
              {
            SaveListState(true);
            addVideos(vidr, false, query);
            UpdateGui();
              }
              else
              {
            Err_message(Translation.NoItemWasFound);
              }
            }
              }
              else if (dlg.SelectedLabelText == Translation.VideoResponses)
              {
            if (videoEntry.VideoResponsesUri != null)
            {
              YouTubeQuery query = new YouTubeQuery(videoEntry.VideoResponsesUri.Content);
              YouTubeFeed vidr = service.Query(query);
              if (vidr.Entries.Count > 0)
              {
            SaveListState(true);
            addVideos(vidr, false, query);
            UpdateGui();
              }
              else
              {
            Err_message(Translation.NoVideoResponse);
              }
            }

              }
              else if (dlg.SelectedLabelText == string.Format(Translation.AllVideosFromUser, videoEntry.Authors[0].Name))
              {
            SiteItemEntry newentry = new SiteItemEntry {Provider = new UserVideos().Name};
            newentry.SetValue("id", videoEntry.Authors[0].Name);
            addVideos(Youtube2MP.GetList(newentry), true);
              }
              else if (dlg.SelectedLabelText == Translation.AddPlaylist)
              {
            VideoInfo inf = SelectQuality(videoEntry);
            if (inf.Quality != VideoQuality.Unknow)
            {
              AddItemToPlayList(selectedItem, inf);
            }
              }
              else if (dlg.SelectedLabelText == Translation.AddAllPlaylist)
              {

            VideoInfo inf = SelectQuality(videoEntry);
            inf.Items = new Dictionary<string, string>();
            if (inf.Quality != VideoQuality.Unknow)
            {
              GUIDialogProgress dlgProgress =
            (GUIDialogProgress) GUIWindowManager.GetWindow((int) Window.WINDOW_DIALOG_PROGRESS);
              if (dlgProgress != null)
              {
            dlgProgress.Reset();
            dlgProgress.SetHeading(Translation.AddAllPlaylist);
            dlgProgress.SetLine(1, "");
            dlgProgress.SetLine(2, "");
            dlgProgress.SetPercentage(0);
            dlgProgress.Progress();
            dlgProgress.ShowProgressBar(true);
            dlgProgress.StartModal(GetID);
              }
              int i = 0;
              for (int j = 0; j < listControl.Count; j++)
              {
            GUIListItem item = listControl[j];
            if (dlgProgress != null)
            {
              double pr = ((double) i/(double) listControl.Count)*100;
              dlgProgress.SetLine(1, item.Label);
              dlgProgress.SetLine(2, i.ToString() + "/" + listControl.Count.ToString());
              dlgProgress.SetPercentage((int) pr);
              dlgProgress.Progress();
              if (dlgProgress.IsCanceled)
                break;
            }
            i++;
            AddItemToPlayList(item, new VideoInfo(inf));
              }
              if (dlgProgress != null)
            dlgProgress.Close();
            }
              }
              else if (dlg.SelectedLabelText == Translation.AddFavorites)
              {
            try
            {
              service.Insert(new Uri(YouTubeQuery.CreateFavoritesUri(null)), videoEntry);
            }
            catch (Exception)
            {
              Err_message(Translation.WrongRequestWrongUser);
            }
              }
              else if (dlg.SelectedLabelText == Translation.AddWatchLater)
              {
            PlayListMember pm = new PlayListMember();
            pm.Id = videoEntry.VideoId;
            Youtube2MP.request.Insert(new Uri("https://gdata.youtube.com/feeds/api/users/default/watch_later"), pm);
              }
              else if (dlg.SelectedLabelText == Translation.Options)
              {
            DoOptions();
              }
              else if (dlg.SelectedLabelText == Translation.DownloadVideo)
              {
            LocalFileStruct fil = Youtube2MP._settings.LocalFile.Get(Youtube2MP.GetVideoId(videoEntry));
            if (fil != null && File.Exists(fil.LocalFile))
            {
              Err_message(Translation.ItemAlreadyDownloaded);
            }
            else
            {
              if (VideoDownloader.IsBusy)
              {
            Err_message(Translation.AnotherDonwnloadProgress);
            dlgProgress = (GUIDialogProgress)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_PROGRESS);
            if (dlgProgress != null)
            {
              dlgProgress.Reset();
              dlgProgress.SetHeading(Translation.DownloadProgress);
              dlgProgress.SetLine(1, "");
              dlgProgress.SetLine(2, "");
              dlgProgress.SetPercentage(0);
              dlgProgress.Progress();
              dlgProgress.ShowProgressBar(true);
              dlgProgress.DoModal(GetID);
            }
              }
              else
              {
            VideoInfo inf = SelectQuality(videoEntry);
            string streamurl = Youtube2MP.StreamPlaybackUrl(videoEntry, inf);
            VideoDownloader.AsyncDownload(streamurl,
                                          Youtube2MP._settings.DownloadFolder + "\\" +
                                          Utils.MakeFileName(Utils.GetFilename(videoEntry.Title.Text + "{" +
                                                                               Youtube2MP.GetVideoId(videoEntry) + "}")) +
                                          Path.GetExtension(streamurl) + ".___");
            GUIPropertyManager.SetProperty("#Youtube.fm.IsDownloading", "true");
            GUIPropertyManager.SetProperty("#Youtube.fm.Download.Progress", "0");
            GUIPropertyManager.SetProperty("#Youtube.fm.Download.Item", videoEntry.Title.Text);
            DatabaseProvider.InstanInstance.Save(videoEntry);
            VideoDownloader.Entry = videoEntry;
              }
            }
              }
              else if (dlg.SelectedLabelText == string.Format(Translation.AllMusicVideosFrom, artistName))
              {
            addVideos(ArtistManager.Instance.Grabber.GetArtistVideosIds(ArtistManager.Instance.GetArtistName(videoEntry)),
                  true);
              }
              else if (dlg.SelectedLabelText == Translation.Info)
              {
            YoutubeGuiInfoEx scr = (YoutubeGuiInfoEx) GUIWindowManager.GetWindow(29053);
            scr.YouTubeEntry = videoEntry;
            //if (entry!=null)
            //{
            //  ArtistItem artistItem=ent
            //}
            GUIWindowManager.ActivateWindow(29053);
              }
              else if (dlg.SelectedLabelText == Translation.PlayNext)
              {
            PlayNext(videoEntry);
              }
              else if (dlg.SelectedLabelText == Translation.SimilarArtists)
              {
            List<ArtistItem> similarartist = new List<ArtistItem>();
            similarartist =
              ArtistManager.Instance.Grabber.GetSimilarArtists(ArtistManager.Instance.GetArtistName(videoEntry));
            GenericListItemCollections res = new GenericListItemCollections();
            foreach (ArtistItem item in similarartist)
            {
              SiteItemEntry newentry = new SiteItemEntry();
              newentry.Provider = "Artists";
              newentry.SetValue("letter", "false");
              newentry.SetValue("id", item.Id);
              newentry.SetValue("name", item.Name);
              res.ItemType = ItemType.Artist;
              try
              {
            GenericListItem listItem = new GenericListItem()
            {
              Title = item.Name,
              LogoUrl =
                string.IsNullOrEmpty(item.Img_url.Trim()) ? "@" : item.Img_url,
              IsFolder = true,
              DefaultImage = "defaultArtistBig.png",
              Tag = newentry
            };
            res.Items.Add(listItem);
              }
              catch (Exception exception)
              {
              }
            }
            res.Title = "Artists/Similar/" + artistItem.Name;
            addVideos(res, true);
              }
        }
コード例 #7
0
        //do the init before page load
        protected override void OnPageLoad()
        {
            base.OnPageLoad();
              _backPos = 0;
              if (!_setting.UseDefaultOSD)
            g_Player.ShowFullScreenWindowVideo = ShowFullScreenWindowHandler;
              foreach (string name in Translation.Strings.Keys)
              {
            SetProperty("#Youtube.fm.Translation." + name + ".Label", Translation.Strings[name]);
              }

              UpdateGui();
              ShowPanel();

              GUIControl.FocusControl(GetID, listControl.GetID);

              if (MessageGUI.Item != null)
              {
            ArtistItem artistItem = MessageGUI.Item as ArtistItem;
            SiteItemEntry entry = new SiteItemEntry();
            entry.Provider = "Artists";
            entry.SetValue("letter", "false");
            entry.SetValue("id", artistItem.Id);
            addVideos(Youtube2MP.GetList(entry), true);
            UpdateGui();
            MessageGUI.Item = null;
              }
              else
              {
            if (NavigationStack.Count == 0)
            {
              Track.TrackStartup();
              ClearLabels("Curent");
              ClearLabels("NowPlaying");
              ClearLabels("Next");
              GUIPropertyManager.SetProperty("#nowplaying", " ");
              GUIPropertyManager.SetProperty("#Youtube.fm.IsDownloading", "false");
              GUIPropertyManager.SetProperty("#Youtube.fm.Download.Progress", "0");
              GUIPropertyManager.SetProperty("#Youtube.fm.Download.Item", " ");

              GUIPropertyManager.SetProperty("#header.title", " ");
              GUIPropertyManager.SetProperty("#currentmodule", "Youtube.Fm/Home");
              StartUpHome();
              UpdateGui();
              if (_loadParameter == null)
              {
            switch (_setting.StartUpOpt)
            {
              case 1:
                {
                  DoSearch();
                }
                break;
              case 2:
                {
                  for (int i = 0; i < listControl.Count; i++)
                  {
                    SiteItemEntry item = listControl[i].MusicTag as SiteItemEntry;
                    if (item != null && item.Provider == "Disco")
                    {
                      listControl.SelectedItem = i;
                      listControl.SelectedListItemIndex = i;
                      DoListSelection();
                      break;
                    }
                  }
                }
                break;
              case 3:
                {
                  for (int i = 0; i < listControl.Count; i++)
                  {
                    SiteItemEntry item = listControl[i].MusicTag as SiteItemEntry;
                    if (item != null && item.Provider == "Browse")
                    {
                      listControl.SelectedItem = i;
                      listControl.SelectedListItemIndex = i;
                      DoListSelection();
                      break;
                    }
                  }
                }
                break;
            }
              }
            }
            else
            {
              DoBack();
              GUIControl.FocusControl(GetID, listControl.GetID);
            }
            if (_loadParameter != null)
              ExecuteParams();
              }
              GUIControl.FocusControl(GetID, listControl.GetID);
              OnDownloadTimedEvent(null, null);
        }
コード例 #8
0
        private void SearchVideo(string searchString)
        {
            YouTubeQuery query = new YouTubeQuery(YouTubeQuery.DefaultVideoUri);
              query = SetParamToYouTubeQuery(query, false);
              query.Query = searchString;
              query.OrderBy = "relevance";
              query.NumberToRetrieve = 1;

              YouTubeFeed vidr = service.Query(query);

              foreach (AtomLink link in vidr.Links)
              {
            if (link.Rel == "http://schemas.google.com/g/2006#spellcorrection")
            {
              GUIDialogYesNo dlgYesNo = (GUIDialogYesNo) GUIWindowManager.GetWindow((int) Window.WINDOW_DIALOG_YES_NO);
              if (null == dlgYesNo)
            return;
              dlgYesNo.SetHeading(Translation.DidYouMean); //resume movie?
              dlgYesNo.SetLine(1, link.Title);
              dlgYesNo.SetDefaultToYes(true);
              dlgYesNo.DoModal(GUIWindowManager.ActiveWindow);
              if (dlgYesNo.IsConfirmed)
              {
            SearchVideo(link.Title);
            return;
              }
            }
              }

              SiteItemEntry entry = new SiteItemEntry();
              entry.SetValue("term", searchString);
              entry.Provider = new SearchVideo().Name;
              GenericListItemCollections genericListItemCollections = Youtube2MP.GetList(entry);
              if (genericListItemCollections.Items.Count > 0)
              {
            addVideos(genericListItemCollections, false);
            //  SaveListState(true);
            //vidr.Title.Text = "Search/" + searchString;
            //  addVideos(vidr, false, query);
            UpdateGui();
            if (_setting.SearchHistory.Contains(searchString.Trim()))
              _setting.SearchHistory.Remove(searchString.Trim());
            _setting.SearchHistory.Add(searchString.Trim());
            _setting.Save();
              }
              else
              {
            Err_message(Translation.NoItemWasFound);
              }
        }
コード例 #9
0
 private void ExecuteParams()
 {
     if (_loadParameter == null)
     return;
       if (!_loadParameter.Contains(":"))
     return;
       string command = _loadParameter.Split(':')[0].Trim().ToUpper();
       string[] s = _loadParameter.Split(':');
       string param = "";
       if (s.Length > 2)
       {
     for (int i = 1; i < s.Length; i++)
     {
       param += s[i];
       if (i < s.Length)
     param += ":";
     }
       }
       else
       {
     param = s[1];
       }
       param = param.Trim();
       if (command == "ARTISTVIDEOS")
       {
     if (string.IsNullOrEmpty(param))
       return;
     ArtistItem artistItem = ArtistManager.Instance.GetArtistsByName(param);
     if (!string.IsNullOrEmpty(artistItem.Id))
     {
       SiteItemEntry newentry = new SiteItemEntry();
       newentry.Provider = new ArtistView().Name;
       newentry.SetValue("letter", "false");
       newentry.SetValue("id", artistItem.Id);
       newentry.SetValue("name", artistItem.Name);
       addVideos(Youtube2MP.GetList(newentry), false);
     }
     else
     {
       SiteItemEntry entry = new SiteItemEntry();
       entry.SetValue("term", param);
       entry.Provider = new SearchVideo().Name;
       addVideos(Youtube2MP.GetList(entry), false);
     }
     _backPos = NavigationStack.Count;
       }
       else if (command == "SEARCH")
       {
     SiteItemEntry entry = new SiteItemEntry();
     entry.SetValue("term", param);
     entry.Provider = new SearchVideo().Name;
     addVideos(Youtube2MP.GetList(entry), false);
     _backPos = NavigationStack.Count;
       }
       else if (command == "PLAY")
       {
     try
     {
       string id = Youtube2MP.getIDSimple(param);
       if (string.IsNullOrEmpty(id))
     id = param;
       Video video =
     Youtube2MP.request.Retrieve<Video>(
       new Uri(string.Format("http://gdata.youtube.com/feeds/api/videos/{0}", id)));
       DoPlay(video.YouTubeEntry, true, null);
     }
     catch (Exception exception)
     {
       Log.Error("Error playback ");
       Log.Error(exception);
     }
       }
 }
コード例 #10
0
        private void list_startpage_SelectedIndexChanged(object sender, EventArgs e)
        {
            panel1.Controls.Clear();
              if (selectedSiteitem != null)
              {
            selectedSiteitem.ParentFolder = (string)cmb_folder.SelectedItem;
            selectedSiteitem.ConfigString = selectedSiteitem.GetConfigString();
              }

              cmb_folder.Items.Clear();
              cmb_folder.Items.Add("");

              foreach (ListViewItem item in list_startpage.Items)
              {
            SiteItemEntry siteItemEntry = item.Tag as SiteItemEntry;
            if (siteItemEntry != null && Youtube2MP.SiteItemProvider[siteItemEntry.Provider].GetType() == typeof (Folder))
            {
              cmb_folder.Items.Add(siteItemEntry.Title);
            }
              }
              if (list_startpage.SelectedItems.Count > 0 && !loading)
              {
            SiteItemEntry entry = list_startpage.SelectedItems[0].Tag as SiteItemEntry;
            selectedSiteitem = entry;
            cmb_folder.SelectedItem = selectedSiteitem.ParentFolder;
            ISiteItem siteItem = Youtube2MP.SiteItemProvider[entry.Provider];
            siteItem.Configure(entry);
            if (siteItem.ConfigControl != null)
              panel1.Controls.Add(siteItem.ConfigControl);
              }
              foreach (ListViewItem listViewItemitem in list_startpage.Items)
              {
            listViewItemitem.Text = ((SiteItemEntry)listViewItemitem.Tag).Title;
              }
              BuildTree();
        }
コード例 #11
0
 public static GenericListItem GetPager(SiteItemEntry entry, YouTubeFeed videos)
 {
     if (videos.TotalResults > videos.StartIndex + ITEM_IN_LIST)
       {
     SiteItemEntry newEntry = entry.Copy();
     newEntry.StartItem += ITEM_IN_LIST;
     GenericListItem listItem = new GenericListItem()
                              {
                                Title = Translation.NextPage,
                                IsFolder = true,
                                DefaultImage = "NextPage.png",
                                Tag = newEntry
                              };
     return listItem;
       }
       return null;
 }
コード例 #12
0
 public static GenericListItemCollections GetList(SiteItemEntry entry)
 {
     return SiteItemProvider[entry.Provider].GetList(entry);
 }