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); } } }
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); } } }
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); }
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; }
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); }
/// <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); } }
//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); }
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); } }
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); } } }
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(); }
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; }
public static GenericListItemCollections GetList(SiteItemEntry entry) { return SiteItemProvider[entry.Provider].GetList(entry); }