protected override void LoadSettings() { base.LoadSettings(); using (Profile.Settings xmlreader = new Profile.MPSettings()) { currentLayout = (Layout) xmlreader.GetValueAsInt(SerializeName, "layout", (int) Layout.List); m_bSortAscending = xmlreader.GetValueAsBool(SerializeName, "sortasc", true); VideoState.StartWindow = xmlreader.GetValueAsInt("movies", "startWindow", GetID); VideoState.View = xmlreader.GetValueAsString("movies", "startview", "369"); // Prevent unaccesible My Videos from corrupted config if (!IsVideoWindow(VideoState.StartWindow)) { VideoState.StartWindow = GetID; VideoState.View = "369"; } _addVideoFilesToDb = xmlreader.GetValueAsBool("gui", "addVideoFilesToDb", false); _isFuzzyMatching = xmlreader.GetValueAsBool("movies", "fuzzyMatching", false); _scanSkipExisting = xmlreader.GetValueAsBool("moviedatabase", "scanskipexisting", false); _getActors = xmlreader.GetValueAsBool("moviedatabase", "getactors", true); _markWatchedFiles = xmlreader.GetValueAsBool("movies", "markwatched", true); //_eachFolderIsMovie = xmlreader.GetValueAsBool("movies", "eachFolderIsMovie", false); _fileMenuEnabled = xmlreader.GetValueAsBool("filemenu", "enabled", true); _fileMenuPinCode = Util.Utils.DecryptPassword(xmlreader.GetValueAsString("filemenu", "pincode", string.Empty)); _howToPlayAll = xmlreader.GetValueAsInt("movies", "playallinfolder", 3); _watchedPercentage = xmlreader.GetValueAsInt("movies", "playedpercentagewatched", 95); _videoInfoInShare = xmlreader.GetValueAsBool("moviedatabase", "movieinfoshareview", false); _BDInternalMenu = xmlreader.GetValueAsBool("bdplayer", "useInternalBDPlayer", true); _virtualDirectory = VirtualDirectories.Instance.Movies; // External player _useInternalVideoPlayer = xmlreader.GetValueAsBool("movieplayer", "internal", true); _useInternalDVDVideoPlayer = xmlreader.GetValueAsBool("dvdplayer", "internal", true); _externalPlayerExtensions = xmlreader.GetValueAsString("movieplayer", "extensions", ""); _wolTimeout = xmlreader.GetValueAsInt("WOL", "WolTimeout", 10); _wolResendTime = xmlreader.GetValueAsInt("WOL", "WolResendTime", 1); if (_virtualStartDirectory == string.Empty) { if (_virtualDirectory.DefaultShare != null) { if (_virtualDirectory.DefaultShare.IsFtpShare) { //remote:hostname?port?login?password?folder _currentFolder = _virtualDirectory.GetShareRemoteURL(_virtualDirectory.DefaultShare); _virtualStartDirectory = _currentFolder; } else { _currentFolder = _virtualDirectory.DefaultShare.Path; _virtualStartDirectory = _virtualDirectory.DefaultShare.Path; } } } _askBeforePlayingDVDImage = xmlreader.GetValueAsBool("daemon", "askbeforeplaying", false); if (xmlreader.GetValueAsBool("movies", "rememberlastfolder", false)) { string lastFolder = xmlreader.GetValueAsString("movies", "lastfolder", _currentFolder); if (VirtualDirectory.IsImageFile(Path.GetExtension(lastFolder))) { lastFolder = "root"; } if (lastFolder != "root") { _currentFolder = lastFolder; } } _switchRemovableDrives = xmlreader.GetValueAsBool("movies", "SwitchRemovableDrives", true); _useOnlyNfoScraper = xmlreader.GetValueAsBool("moviedatabase", "useonlynfoscraper", false); _doNotUseDatabase = xmlreader.GetValueAsBool("moviedatabase", "donotusedatabase", false); } if (_currentFolder.Length > 0 && _currentFolder == _virtualStartDirectory) { VirtualDirectory vDir = new VirtualDirectory(); vDir.LoadSettings("movies"); } }
protected override void LoadDirectory(string strNewDirectory) { GUIWaitCursor.Show(); currentFolder = strNewDirectory; GUIControl.ClearControl(GetID, facadeLayout.GetID); ArrayList itemlist = new ArrayList(); ArrayList movies = new ArrayList(); if (_searchMovie) { string sql = "SELECT DISTINCT " + "movieinfo.idMovie," + "movieinfo.idDirector," + "movieinfo.strDirector," + "movieinfo.strPlotOutline," + "movieinfo.strPlot," + "movieinfo.strTagLine," + "movieinfo.strVotes," + "movieinfo.fRating," + "movieinfo.strCast," + "movieinfo.strCredits," + "movieinfo.iYear," + "movieinfo.strGenre," + "movieinfo.strPictureURL," + "movieinfo.strTitle," + "movieinfo.IMDBID," + "movieinfo.mpaa," + "movieinfo.runtime," + "movieinfo.iswatched," + "movieinfo.strUserReview," + "movieinfo.strFanartURL," + "movieinfo.dateAdded," + "movieinfo.dateWatched," + "movieinfo.studios," + "movieinfo.country," + "movieinfo.language," + "movieinfo.lastupdate, " + "movieinfo.strSortTitle " + "FROM movieinfo " + "INNER JOIN actorlinkmovie ON actorlinkmovie.idMovie = movieinfo.idMovie " + "INNER JOIN actors ON actors.idActor = actorlinkmovie.idActor " + "WHERE "+ _searchMovieDbField + " LIKE '%" + _searchMovieString + "%' " + "ORDER BY movieinfo.strTitle ASC"; VideoDatabase.GetMoviesByFilter(sql, out movies, false, true, false, false); } else if (_searchActor && handler.CurrentLevelWhere != "title") { string sql = string.Empty; if (handler.CurrentLevelWhere == "director") { sql = "SELECT idActor, strActor, imdbActorId FROM actors INNER JOIN movieinfo ON movieinfo.idDirector = actors.idActor WHERE strActor LIKE '%" + _searchActorString + "%' ORDER BY strActor ASC"; } else { sql = "SELECT * FROM actors WHERE strActor LIKE '%" + _searchActorString + "%' ORDER BY strActor ASC"; } VideoDatabase.GetMoviesByFilter(sql, out movies, true, false, false, false); } else { movies = ((VideoViewHandler)handler).Execute(); } GUIControl.ClearControl(GetID, facadeLayout.GetID); SwitchLayout(); if (handler.CurrentLevel > 0) { GUIListItem listItem = new GUIListItem(".."); listItem.Path = string.Empty; listItem.IsFolder = true; Util.Utils.SetDefaultIcons(listItem); listItem.OnItemSelected += OnItemSelected; itemlist.Add(listItem); SetLabel(listItem); ((VideoViewHandler)handler).SetLabel(listItem.AlbumInfoTag as IMDBMovie, ref listItem); facadeLayout.Add(listItem); } VirtualDirectory vDir = new VirtualDirectory(); // Get protected share paths for videos vDir.LoadSettings("movies"); foreach (IMDBMovie movie in movies) { GUIListItem item = new GUIListItem(); item.Label = movie.Title; if (handler.CurrentLevelWhere != "user groups") { if (handler.CurrentLevel + 1 < handler.MaxLevels) { item.IsFolder = true; } else { item.IsFolder = false; } } else { if (string.IsNullOrEmpty(movie.Title) && handler.CurrentLevel + 1 < handler.MaxLevels) { item.IsFolder = true; item.IsRemote = true; } else { item.IsFolder = false; } } item.Path = movie.File; // Protected movies validation, checks item and if it is inside protected shares. // If item is inside PIN protected share, checks if user validate PIN with Unlock // command from context menu and returns "True" if all is ok and item will be visible // in movie list. Non-protected item will skip check and will be always visible. if (!string.IsNullOrEmpty(item.Path)) { if (!IsItemPinProtected(item, vDir)) continue; } // item.Duration = movie.RunTime * 60; item.AlbumInfoTag = movie; item.Year = movie.Year; item.DVDLabel = movie.DVDLabel; item.Rating = movie.Rating; item.IsPlayed = movie.Watched > 0; try { if (item.Path.ToUpperInvariant().Contains(@"\VIDEO_TS")) { item.Label3 = MediaTypes.DVD.ToString() + " #" + movie.WatchedCount;; } else if (item.Path.ToUpperInvariant().Contains(@"\BDMV")) { item.Label3 = MediaTypes.BD.ToString() + " #" + movie.WatchedCount; } else if (VirtualDirectory.IsImageFile(Path.GetExtension(item.Path))) { item.Label3 = MediaTypes.ISO.ToString() + " #" + movie.WatchedCount; ; } else { item.Label3 = movie.WatchedPercent + "% #" + movie.WatchedCount; } } catch (Exception){} item.OnItemSelected += OnItemSelected; SetLabel(item); ((VideoViewHandler)handler).SetLabel(item.AlbumInfoTag as IMDBMovie, ref item); // Movie/group content list skin property will read from musictag item.MusicTag = SetMovieListGroupedBy(item); facadeLayout.Add(item); itemlist.Add(item); } // Sort facadeLayout.Sort(new VideoSort(CurrentSortMethod, CurrentSortAsc)); int itemIndex = 0; string viewFolder = SetItemViewHistory(); string selectedItemLabel = m_history.Get(viewFolder); if (string.IsNullOrEmpty(selectedItemLabel) && facadeLayout.SelectedListItem != null) { selectedItemLabel = facadeLayout.SelectedListItem.Label; } int itemCount = itemlist.Count; if (itemlist.Count > 0) { GUIListItem rootItem = (GUIListItem)itemlist[0]; if (rootItem.Label == "..") { itemCount--; } } //set object count label GUIPropertyManager.SetProperty("#itemcount", Util.Utils.GetObjectCountLabel(itemCount)); // Clear info for zero result if (itemlist.Count == 0) { GUIListItem item = new GUIListItem(); item.Label = GUILocalizeStrings.Get(284); IMDBMovie movie = item.AlbumInfoTag as IMDBMovie; movie = new IMDBMovie(); item.AlbumInfoTag = movie; movie.SetProperties(false, string.Empty); itemlist.Add(item); facadeLayout.Add(item); } bool itemSelected = false; if (handler.CurrentLevel < handler.MaxLevels) { for (int i = 0; i < facadeLayout.Count; ++i) { GUIListItem item = facadeLayout[itemIndex]; if (item.Label == selectedItemLabel) { currentSelectedItem = itemIndex; itemSelected = true; break; } itemIndex++; } switch (handler.CurrentLevelWhere.ToLowerInvariant()) { case "genre": SetGenreThumbs(itemlist); break; case "user groups": SetUserGroupsThumbs(itemlist); break; case "actor": case "director": SetActorThumbs(itemlist); break; case "year": SetYearThumbs(itemlist); break; case "actorindex": case "directorindex": case "titleindex": foreach (GUIListItem itemAbc in itemlist) { itemAbc.IconImageBig = @"alpha\" + itemAbc.Label + ".png"; itemAbc.IconImage = @"alpha\" + itemAbc.Label + ".png"; itemAbc.ThumbnailImage = @"alpha\" + itemAbc.Label + ".png"; } break; default: // Assign thumbnails also for the custom views. Bugfix for Mantis 0001471: // Cover image thumbs missing in My Videos when view Selection is by "watched" SetIMDBThumbs(itemlist); break; } } else { SetIMDBThumbs(itemlist); } if (itemSelected) { GUIControl.SelectItemControl(GetID, facadeLayout.GetID, currentSelectedItem); } else { SelectCurrentItem(); } UpdateButtonStates(); GUIWaitCursor.Hide(); }
protected void OnShowSavedPlaylists(string _directory) { VirtualDirectory _virtualDirectory = new VirtualDirectory(); _virtualDirectory.AddExtension(".m3u"); _virtualDirectory.AddExtension(".pls"); _virtualDirectory.AddExtension(".b4s"); _virtualDirectory.AddExtension(".wpl"); List<GUIListItem> itemlist = _virtualDirectory.GetDirectoryExt(_directory); if (_directory == m_strPlayListPath) { itemlist.RemoveAt(0); } GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU); if (dlg == null) { return; } dlg.Reset(); dlg.SetHeading(983); // Saved Playlists foreach (GUIListItem item in itemlist) { Util.Utils.SetDefaultIcons(item); dlg.Add(item); } dlg.DoModal(GetID); if (dlg.SelectedLabel == -1) { return; } GUIListItem selectItem = itemlist[dlg.SelectedLabel]; if (selectItem.IsFolder) { OnShowSavedPlaylists(selectItem.Path); return; } GUIWaitCursor.Show(); LoadPlayList(selectItem.Path); GUIWaitCursor.Hide(); }
// Check if item is pin protected and if it exists within unlocked shares // Returns true if item is valid or if item is not within protected shares private bool IsItemPinProtected(GUIListItem item, VirtualDirectory vDir) { string directory = Path.GetDirectoryName(item.Path); // item path if (directory != null) { //VirtualDirectory vDir = new VirtualDirectory(); //// Get protected share paths for videos //vDir.LoadSettings("movies"); // Check if item belongs to protected shares int pincode = 0; bool folderPinProtected = vDir.IsProtectedShare(directory, out pincode); bool success = false; // User unlocked share/shares with PIN and item is within protected shares if (folderPinProtected && _ageConfirmed) { // Iterate unlocked shares against current item path foreach (string share in _currentProtectedShare) { if (!directory.ToUpperInvariant().Contains(share.ToUpperInvariant())) { continue; } success = true; break; } // current item is not within unlocked shares, // don't show item and go to the next item if (!success) { return false; } return true; } // Nothing unlocked and item belongs to protected shares, // don't show item and go to the next item if (folderPinProtected && !_ageConfirmed) { return false; } } // Item is not inside protected shares, show it return true; }
private IMDBMovie GetRandomMovie(ArrayList mList) { try { ArrayList movies = new ArrayList(mList); ArrayList pShares = new ArrayList(); foreach (string p in _protectedShares) { char[] splitter = { '|' }; string[] pin = p.Split(splitter); // Only add shares which are unlocked if (Convert.ToInt32(pin[0]) == _currentPin) { pShares.Add(pin[1]); } } // Do not show fanart for unlocked protected movies foreach (IMDBMovie m in movies) { ArrayList files = new ArrayList(); VideoDatabase.GetFilesForMovie(m.ID, ref files); if (string.IsNullOrEmpty(files[0].ToString())) { continue; } string directory = Path.GetDirectoryName(files[0].ToString()); if (string.IsNullOrEmpty(directory)) continue; VirtualDirectory vDir = new VirtualDirectory(); vDir.LoadSettings("movies"); int pincode = 0; bool folderPinProtected = vDir.IsProtectedShare(directory, out pincode); // No PIN entered, remove all protected conetnt if (folderPinProtected && !_ageConfirmed) { mList.Remove(m); continue; } // PIN entered, check for corresponding shares if (folderPinProtected && _ageConfirmed) { bool found = false; foreach (string share in pShares) { if (directory.ToLowerInvariant().Contains(share.ToLowerInvariant())) { // Movie belongs to unlocked share found = true; break; } } // If movie is not from unlocked shares, don't show fanart if (!found) { mList.Remove(m); } } } if (mList.Count > 0) { Random rnd = new Random(); int r = rnd.Next(mList.Count); IMDBMovie movieDetails = (IMDBMovie)mList[r]; return movieDetails; } else { return null; } } catch (Exception) { return null; } }
public void GetVideoFiles(string path, ref ArrayList availableFiles) { // // Count the files in the current directory // try { VirtualDirectory dir = new VirtualDirectory(); dir.SetExtensions(Util.Utils.VideoExtensions); ArrayList imagePath = new ArrayList(); // Thumbs creation spam no1 causing this call // // Temporary disable thumbcreation // using (Settings xmlReaderWriter = new MPSettings()) { _currentCreateVideoThumbs = xmlReaderWriter.GetValueAsBool("thumbnails", "tvrecordedondemand", true); xmlReaderWriter.SetValueAsBool("thumbnails", "tvrecordedondemand", false); } List<GUIListItem> items = dir.GetDirectoryUnProtectedExt(path, true); foreach (GUIListItem item in items) { if (item.IsFolder) { if (item.Label != "..") { if (item.Path.ToUpperInvariant().IndexOf(@"\VIDEO_TS") >= 0) { string strFile = String.Format(@"{0}\VIDEO_TS.IFO", item.Path); availableFiles.Add(strFile); } else if (item.Path.ToUpperInvariant().IndexOf(@"\BDMV") >= 0) { string strFile = String.Format(@"{0}\index.bdmv", item.Path); availableFiles.Add(strFile); } else { GetVideoFiles(item.Path, ref availableFiles); } } } else { bool skipDuplicate = false; if (VirtualDirectory.IsImageFile(Path.GetExtension(item.Path))) { string filePath = Path.GetDirectoryName(item.Path) + @"\" + Path.GetFileNameWithoutExtension(item.Path); if (!imagePath.Contains(filePath)) { imagePath.Add(filePath); } else { skipDuplicate = true; } } if (!skipDuplicate) { string extension = Path.GetExtension(item.Path); if (extension != null && extension.ToUpperInvariant() != @".IFO" && extension.ToUpperInvariant() != ".BDMV") { availableFiles.Add(item.Path); } } } } } catch (Exception e) { Log.Info("VideoDatabase: Exception counting video files:{0}", e); } finally { // Restore thumbcreation setting using (Settings xmlwriter = new MPSettings()) { xmlwriter.SetValueAsBool("thumbnails", "tvrecordedondemand", _currentCreateVideoThumbs); } } }
// Check if item is pin protected and if it exists within unlocked shares // Returns true if item is valid or if item is not within protected shares private bool CheckItem(GUIListItem item) { string directory = Path.GetDirectoryName(item.Path); // item path VirtualDirectory vDir = new VirtualDirectory(); // Get protected share paths for videos vDir.LoadSettings("movies"); // Check if item belongs to protected shares int pincode = 0; bool folderPinProtected = vDir.IsProtectedShare(directory, out pincode); bool success = false; // User unlocked share/shares with PIN and item is within protected shares if (folderPinProtected && ageConfirmed) { // Iterate unlocked shares against current item path foreach (string share in currentProtectedShare) { if (!directory.ToLower().Contains(share.ToLower())) { continue; } else // item belongs to unlocked shares and will be displayed { success = true; break; } } // current item is not within unlocked shares, // don't show item and go to the next item if (!success) { return false; } else // current item is within unlocked shares, show it { return true; } } // Nothing unlocked and item belongs to protected shares, // don't show item and go to the next item else if (folderPinProtected && !ageConfirmed) { return false; } // Item is not inside protected shares, show it return true; }
/// <summary> /// Use only in share view /// </summary> /// <param name="item"></param> public static void SetMovieData(GUIListItem item) { IMDBMovie info = new IMDBMovie(); if (item == null) { return; } try { string path = string.Empty; string fileName = string.Empty; if (Util.Utils.IsVideo(item.Path)) { Util.Utils.Split(item.Path, out path, out fileName); } else { path = item.Path; } if (item.Path != ".." && System.IO.File.Exists(item.Path + @"\VIDEO_TS\VIDEO_TS.IFO")) { fileName = item.Path + @"\VIDEO_TS\VIDEO_TS.IFO"; } else if (item.Path != ".." && System.IO.File.Exists(item.Path + @"\BDMV\index.bdmv")) { fileName = item.Path + @"\BDMV\index.bdmv"; } else { fileName = item.Path; } // Set VideoFilesMediaInfo mInfo = new VideoFilesMediaInfo(); if (path == ".." || string.IsNullOrEmpty(path) || (!Directory.Exists(path) && !Util.Utils.IsVideo(fileName))) { info.MediaInfo = mInfo; item.AlbumInfoTag = info; return; } if (Directory.Exists(path) && !Util.Utils.IsVideo(fileName)) { int rndMovieId = -1; VirtualDirectory vDir = new VirtualDirectory(); string pin = string.Empty; vDir.LoadSettings("movies"); if (!vDir.IsProtectedShare(path, out pin)) { ArrayList mList = new ArrayList(); VideoDatabase.GetRandomMoviesByPath(path, ref mList, 1); if (mList.Count > 0) { IMDBMovie movieDetails = (IMDBMovie)mList[0]; mList.Clear(); rndMovieId = movieDetails.ID; if (Util.Utils.IsFolderDedicatedMovieFolder(path)) { VideoDatabase.GetMovieInfoById(rndMovieId,ref info); int percent = 0; int watchedCount = 0; VideoDatabase.GetmovieWatchedStatus(rndMovieId, out percent, out watchedCount); info.WatchedPercent = percent; info.WatchedCount = watchedCount; ArrayList fList = new ArrayList(); VideoDatabase.GetFilesForMovie(rndMovieId,ref fList); if (fList.Count > 0) { VideoDatabase.GetVideoFilesMediaInfo((string)fList[0], ref mInfo, false); info.VideoFileName = (string)fList[0]; } } } else { // User fanart (only for videos which do not have movie info in db -> not scanned) try { GetUserFanart(item, ref info); } catch (Exception ex) { Log.Error("IMDBMovie Set user fanart file property error: {0}", ex.Message); } } } info.ID = rndMovieId; info.MediaInfo = mInfo; item.AlbumInfoTag = info; return; } try { VideoDatabase.GetMovieInfo(fileName, ref info); // Get recording/nfo xml if (info.IsEmpty) { FetchMatroskaInfo(fileName, false, ref info); if (info.IsEmpty) { FetchMovieNfo(path, fileName, ref info); } } VideoDatabase.GetVideoFilesMediaInfo(fileName, ref mInfo, false); info.VideoFileName = fileName; if (string.IsNullOrEmpty(info.VideoFilePath) || info.VideoFilePath == Strings.Unknown) { string tmpFile = string.Empty; Util.Utils.Split(fileName, out path, out tmpFile); info.VideoFilePath = path; } info.Path = path; info.MediaInfo = mInfo; if (info.ID > 0) { info.Duration = VideoDatabase.GetMovieDuration(info.ID); } else { ArrayList files = new ArrayList(); VideoDatabase.GetFilesForMovie(VideoDatabase.GetMovieId(info.VideoFileName), ref files); foreach (string file in files) { info.Duration += VideoDatabase.GetVideoDuration(VideoDatabase.GetFileId(file)); } } int percent = 0; int watchedCount = 0; VideoDatabase.GetmovieWatchedStatus(VideoDatabase.GetMovieId(fileName), out percent, out watchedCount); info.WatchedPercent = percent; info.WatchedCount = watchedCount; // User fanart (only for videos which do not have movie info in db -> not scanned) try { if (info.ID < 1) { GetUserFanart(item, ref info); } } catch (ThreadAbortException) { Log.Debug("IMDBMovie.ThreadAbortException SetMovieData (GetMovieInfo) error."); } catch (Exception ex) { Log.Error("IMDBMovie Set user fanart file property error: {0}", ex.Message); } item.AlbumInfoTag = info; } catch (ThreadAbortException) { Log.Debug("IMDBMovie.ThreadAbortException SetMovieData (GetMovieInfo) error."); } catch (Exception ex) { Log.Error("IMDBMovie SetMovieData (GetMovieInfo) error: {0}", ex.Message); item.AlbumInfoTag = info; } } catch (ThreadAbortException) { Log.Debug("IMDBMovie.ThreadAbortException SetMovieData error."); } catch (Exception ex) { Log.Error("IMDBMovie SetMovieData error: {0}", ex.Message); item.AlbumInfoTag = info; } }
private static void CountFiles(string path, ref ArrayList availableFiles) { // // Count the files in the current directory // try { VirtualDirectory dir = new VirtualDirectory(); dir.SetExtensions(Util.Utils.PictureExtensions); List<GUIListItem> items = dir.GetDirectoryUnProtectedExt(path, true); foreach (GUIListItem item in items) { if (item.IsFolder) { if (item.Label != "..") { CountFiles(item.Path, ref availableFiles); CreateThumbsAndAddPictureToDBFolderThread ManualThumbBuilderFolder = new CreateThumbsAndAddPictureToDBFolderThread(item.Path); } } else { availableFiles.Add(item.Path); } } } catch (Exception e) { Log.Info("Exception counting files:{0}", e); // Ignore } }
/// <summary> /// /// </summary> /// <param name="path"></param> /// <param name="availableFiles"></param> private static void CountFiles(string path, ref ArrayList availableFiles) { // // Count the files in the current directory // try { VirtualDirectory dir = new VirtualDirectory(); dir.SetExtensions(Util.Utils.VideoExtensions); // Thumbs creation spam no1 causing this call // // Temporary disable thumbcreation // using (Settings xmlreader = new MPSettings()) { _currentCreateVideoThumbs = xmlreader.GetValueAsBool("thumbnails", "tvrecordedondemand", true); } using (Settings xmlwriter = new MPSettings()) { xmlwriter.SetValueAsBool("thumbnails", "tvrecordedondemand", false); } List<GUIListItem> items = dir.GetDirectoryUnProtectedExt(path, true); foreach (GUIListItem item in items) { if (item.IsFolder) { if (item.Label != "..") { if (item.Path.ToLower().IndexOf("video_ts") >= 0) { string strFile = String.Format(@"{0}\VIDEO_TS.IFO", item.Path); availableFiles.Add(strFile); } else { CountFiles(item.Path, ref availableFiles); } } } else { availableFiles.Add(item.Path); } } } catch (Exception e) { Log.Info("Exception counting files:{0}", e); // Ignore } finally { // Restore thumbcreation setting using (Settings xmlwriter = new MPSettings()) { xmlwriter.SetValueAsBool("thumbnails", "tvrecordedondemand", _currentCreateVideoThumbs); } } }
protected void OnShowSavedPlaylists(string _directory) { // Set TVSeries Playlist Extension VirtualDirectory _virtualDirectory = new VirtualDirectory(); _virtualDirectory.AddExtension(".tvsplaylist"); // Get All Playlists found in Directory List<GUIListItem> itemlist = _virtualDirectory.GetDirectoryExt(_directory); if (_directory == DBOption.GetOptions(DBOption.cPlaylistPath)) itemlist.RemoveAt(0); // If no playlists found, show a Message to user and then exit if (itemlist.Count == 0) { GUIDialogOK dlgOK = (GUIDialogOK)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_OK); dlgOK.SetHeading(983); dlgOK.SetLine(1, Translation.NoPlaylistsFound); dlgOK.SetLine(2, _directory); dlgOK.DoModal(GUIWindowManager.ActiveWindow); return; } // Create Playist Menu Dialog GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU); if (dlg == null) return; dlg.Reset(); dlg.SetHeading(983); // Saved Playlists // Add all playlists found to Menu for selection foreach (GUIListItem item in itemlist) { MediaPortal.Util.Utils.SetDefaultIcons(item); dlg.Add(item); } // Show Plaulist Menu Dialog dlg.DoModal(GetID); // Nothing was selected e.g. BACK if (dlg.SelectedLabel == -1) return; GUIListItem selectItem = itemlist[dlg.SelectedLabel]; // If Item selected was a Folder, re-curse to show contents if (selectItem.IsFolder) { OnShowSavedPlaylists(selectItem.Path); return; } // Load the Selected Playlist GUIWaitCursor.Show(); LoadPlayList(selectItem.Path); GUIWaitCursor.Hide(); }
public void SetDirectoryStructure(VirtualDirectory value) { m_directory = value; }
public void DoModal(int dwParentId) { m_bOverlay = GUIGraphicsContext.Overlay; m_dwParentWindowID = dwParentId; m_pParentWindow = GUIWindowManager.GetWindow(m_dwParentWindowID); if (null == m_pParentWindow) { m_dwParentWindowID = 0; return; } if (m_directory == null) { m_directory = new VirtualDirectory(); } // show menu ShowFileMenu(m_itemSourceItem); }
/// <summary> /// Show saved playlists /// </summary> /// <param name="_directory"></param> protected void OnShowSavedPlaylists(string _directory) { VirtualDirectory _virtualDirectory = new VirtualDirectory(); _virtualDirectory.AddExtension(".mvplaylist"); List<GUIListItem> itemlist = _virtualDirectory.GetDirectoryExt(_directory); string playListPath = string.Empty; if (!string.IsNullOrEmpty(mvCentralCore.Settings.PlayListFolder.Trim())) playListPath = mvCentralCore.Settings.PlayListFolder; else { using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.MPSettings()) { playListPath = xmlreader.GetValueAsString("movies", "playlists", string.Empty); playListPath = MediaPortal.Util.Utils.RemoveTrailingSlash(playListPath); } } if (_directory == playListPath) itemlist.RemoveAt(0); // If no playlists found, show a Message to user and then exit if (itemlist.Count == 0) { GUIDialogOK dlgOK = (GUIDialogOK)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_OK); dlgOK.SetHeading(983); dlgOK.SetLine(1, Localization.NoPlaylistsFound); dlgOK.SetLine(2, _directory); dlgOK.DoModal(GUIWindowManager.ActiveWindow); return; } GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU); if (dlg == null) return; dlg.Reset(); dlg.SetHeading(983); // Saved Playlists foreach (GUIListItem item in itemlist) { MediaPortal.Util.Utils.SetDefaultIcons(item); dlg.Add(item); } dlg.DoModal(GetID); if (dlg.SelectedLabel == -1) return; GUIListItem selectItem = itemlist[dlg.SelectedLabel]; if (selectItem.IsFolder) { OnShowSavedPlaylists(selectItem.Path); return; } GUIWaitCursor.Show(); LoadPlayList(selectItem.Path); GUIWaitCursor.Hide(); }
private void ListFilesForUpdateMediaInfo(GUIListItem item, ref List<GUIListItem> itemlist) { if (item != null) { // Process the list of files found in the directory. VirtualDirectory virtualDirectory = new VirtualDirectory(); virtualDirectory.SetExtensions(Util.Utils.VideoExtensions); List<GUIListItem> inertItemlist = virtualDirectory.GetDirectoryUnProtectedExt(item.Path, true); foreach (GUIListItem subItem in inertItemlist) { if (!subItem.IsFolder) { itemlist.Add(subItem); } else { if (subItem.Label != "..") { ListFilesForUpdateMediaInfo(subItem, ref itemlist); } } } } }
public static bool GetInfoFromIMDB(IMDB.IProgress progress, ref IMDBMovie movieDetails, bool isFuzzyMatching, bool getActors) { string file; string path = movieDetails.Path; string filename = movieDetails.File; if (path != string.Empty) { if (path.EndsWith(@"\")) { path = path.Substring(0, path.Length - 1); movieDetails.Path = path; } if (filename.StartsWith(@"\")) { filename = filename.Substring(1); movieDetails.File = filename; } file = path + Path.DirectorySeparatorChar + filename; } else { file = filename; } bool addToDB = true; int id = movieDetails.ID; if (id < 0) { if (File.Exists(file)) { id = VideoDatabase.AddMovieFile(file); VirtualDirectory dir = new VirtualDirectory(); dir.SetExtensions(Util.Utils.VideoExtensions); // Thumb creation spam no2 causing this call // // Temporary disable thumbcreation // using (Settings xmlreader = new MPSettings()) { _currentCreateVideoThumbs = xmlreader.GetValueAsBool("thumbnails", "tvrecordedondemand", true); } using (Settings xmlwriter = new MPSettings()) { xmlwriter.SetValueAsBool("thumbnails", "tvrecordedondemand", false); } List<GUIListItem> items = dir.GetDirectoryUnProtectedExt(path, true); foreach (GUIListItem item in items) { if (item.IsFolder) { continue; } if (Util.Utils.ShouldStack(item.Path, file) && item.Path != file) { string strPath, strFileName; DatabaseUtility.Split(item.Path, out strPath, out strFileName); DatabaseUtility.RemoveInvalidChars(ref strPath); DatabaseUtility.RemoveInvalidChars(ref strFileName); int pathId = VideoDatabase.AddPath(strPath); VideoDatabase.AddFile(id, pathId, strFileName); } } // Restore thumbcreation setting using (Settings xmlwriter = new MPSettings()) { xmlwriter.SetValueAsBool("thumbnails", "tvrecordedondemand", _currentCreateVideoThumbs); } movieDetails.ID = id; } else { Log.Info("File doesn't exists. So no info is stored in db."); getActors = false; addToDB = false; } } if (RefreshIMDB(progress, ref movieDetails, isFuzzyMatching, getActors, addToDB)) { if (movieDetails != null) { return true; } } return false; }
private static void AddVideoFiles(string path, ref ArrayList availableFiles) { // // Count the files in the current directory // bool currentCreateVideoThumbs = false; try { VirtualDirectory dir = new VirtualDirectory(); dir.SetExtensions(Util.Utils.VideoExtensions); // Temporary disable thumbcreation using (Profile.Settings xmlreader = new MPSettings()) { currentCreateVideoThumbs = xmlreader.GetValueAsBool("thumbnails", "videoondemand", true); } using (Profile.Settings xmlwriter = new MPSettings()) { xmlwriter.SetValueAsBool("thumbnails", "videoondemand", false); } List<GUIListItem> items = dir.GetDirectoryUnProtectedExt(path, true); foreach (GUIListItem item in items) { if (item.IsFolder) { if (item.Label != "..") { if (item.Path.ToUpperInvariant().IndexOf("VIDEO_TS") >= 0) { string strFile = String.Format(@"{0}\VIDEO_TS.IFO", item.Path); availableFiles.Add(strFile); } if (item.Path.ToUpperInvariant().IndexOf("BDMV") >= 0) { string strFile = String.Format(@"{0}\index.bdmv", item.Path); availableFiles.Add(strFile); } else { AddVideoFiles(item.Path, ref availableFiles); } } } else { availableFiles.Add(item.Path); } } } catch (Exception e) { Log.Info("Exception counting files:{0}", e); // Ignore } finally { // Restore thumbcreation setting using (Profile.Settings xmlwriter = new MPSettings()) { xmlwriter.SetValueAsBool("thumbnails", "videoondemand", currentCreateVideoThumbs); } } }
protected override void LoadSettings() { base.LoadSettings(); using (Profile.Settings xmlreader = new Profile.MPSettings()) { currentLayout = (Layout)xmlreader.GetValueAsInt(SerializeName, "layout", (int)Layout.List); m_bSortAscending = xmlreader.GetValueAsBool(SerializeName, "sortasc", true); VideoState.StartWindow = xmlreader.GetValueAsInt("movies", "startWindow", GetID); VideoState.View = xmlreader.GetValueAsString("movies", "startview", "369"); // Prevent unaccesible My Videos from corrupted config if (!IsVideoWindow(VideoState.StartWindow)) { VideoState.StartWindow = GetID; VideoState.View = "369"; } _isFuzzyMatching = xmlreader.GetValueAsBool("movies", "fuzzyMatching", false); _scanSkipExisting = xmlreader.GetValueAsBool("moviedatabase", "scanskipexisting", false); _getActors = xmlreader.GetValueAsBool("moviedatabase", "getactors", true); _markWatchedFiles = xmlreader.GetValueAsBool("movies", "markwatched", true); _eachFolderIsMovie = xmlreader.GetValueAsBool("movies", "eachFolderIsMovie", false); _fileMenuEnabled = xmlreader.GetValueAsBool("filemenu", "enabled", true); _fileMenuPinCode = Util.Utils.DecryptPin(xmlreader.GetValueAsString("filemenu", "pincode", string.Empty)); _howToPlayAll = xmlreader.GetValueAsInt("movies", "playallinfolder", 3); _virtualDirectory = VirtualDirectories.Instance.Movies; if (_virtualStartDirectory == string.Empty) { if (_virtualDirectory.DefaultShare != null) { if (_virtualDirectory.DefaultShare.IsFtpShare) { //remote:hostname?port?login?password?folder _currentFolder = _virtualDirectory.GetShareRemoteURL(_virtualDirectory.DefaultShare); _virtualStartDirectory = _currentFolder; } else { _currentFolder = _virtualDirectory.DefaultShare.Path; _virtualStartDirectory = _virtualDirectory.DefaultShare.Path; } } } _askBeforePlayingDVDImage = xmlreader.GetValueAsBool("daemon", "askbeforeplaying", false); if (xmlreader.GetValueAsBool("movies", "rememberlastfolder", false)) { string lastFolder = xmlreader.GetValueAsString("movies", "lastfolder", _currentFolder); if (VirtualDirectory.IsImageFile(Path.GetExtension(lastFolder))) { lastFolder = "root"; } if (lastFolder != "root") { _currentFolder = lastFolder; } } _switchRemovableDrives = xmlreader.GetValueAsBool("movies", "SwitchRemovableDrives", true); } if (_currentFolder.Length > 0 && _currentFolder == _virtualStartDirectory) { VirtualDirectory vDir = new VirtualDirectory(); vDir.LoadSettings("movies"); int pincode = 0; bool FolderPinProtected = vDir.IsProtectedShare(_currentFolder, out pincode); if (FolderPinProtected) { _currentFolder = string.Empty; } } if (_currentFolder.Length > 0 && !_virtualDirectory.IsRemote(_currentFolder)) { DirectoryInfo dirInfo = new DirectoryInfo(_currentFolder); while (dirInfo.Parent != null) { string dirName = dirInfo.Name; dirInfo = dirInfo.Parent; string currentParentFolder = @dirInfo.FullName; _history.Set(dirName, currentParentFolder); } } }
private void SetMovieIDProperty(string file, bool isFolder) { VirtualDirectory vDir = new VirtualDirectory(); int pin = 0; vDir.LoadSettings("movies"); if (isFolder && !vDir.IsProtectedShare(file, out pin)) { ArrayList mList = new ArrayList(); VideoDatabase.GetMoviesByPath(file, ref mList); if (mList.Count > 0) { Random rnd = new Random(); int r = rnd.Next(mList.Count); IMDBMovie movieDetails = (IMDBMovie)mList[r]; mList.Clear(); VideoDatabase.GetFilesForMovie(movieDetails.ID, ref mList); if (mList.Count > 0 && System.IO.File.Exists(mList[0].ToString())) { GUIPropertyManager.SetProperty("#movieid", movieDetails.ID.ToString()); } else { GUIPropertyManager.SetProperty("#movieid", "-1"); } } else { GUIPropertyManager.SetProperty("#movieid", "-1"); } } else if (isFolder && vDir.IsProtectedShare(file, out pin)) { GUIPropertyManager.SetProperty("#movieid", "-1"); } else { GUIPropertyManager.SetProperty("#movieid", ID.ToString()); } }
/// <summary> /// Use only in share view /// </summary> /// <param name="item"></param> public static void SetMovieData(GUIListItem item) { IMDBMovie info = new IMDBMovie(); if (item == null) { return; } try { string path = string.Empty; string fileName = string.Empty; if (Util.Utils.IsVideo(item.Path)) { Util.Utils.Split(item.Path, out path, out fileName); } else { path = item.Path; } if (item.Path != ".." && System.IO.File.Exists(item.Path + @"\VIDEO_TS\VIDEO_TS.IFO")) { fileName = item.Path + @"\VIDEO_TS\VIDEO_TS.IFO"; } else if (item.Path != ".." && System.IO.File.Exists(item.Path + @"\BDMV\index.bdmv")) { fileName = item.Path + @"\BDMV\index.bdmv"; } else { fileName = item.Path; } // Set VideoFilesMediaInfo mInfo = new VideoFilesMediaInfo(); if (path == ".." || string.IsNullOrEmpty(path) || (!Directory.Exists(path) && !Util.Utils.IsVideo(fileName))) { info.MediaInfo = mInfo; item.AlbumInfoTag = info; return; } if (Directory.Exists(path) && !Util.Utils.IsVideo(fileName)) { int rndMovieId = -1; VirtualDirectory vDir = new VirtualDirectory(); int pin = 0; vDir.LoadSettings("movies"); if (!vDir.IsProtectedShare(path, out pin)) { ArrayList mList = new ArrayList(); VideoDatabase.GetRandomMoviesByPath(path, ref mList, 1); if (mList.Count > 0) { IMDBMovie movieDetails = (IMDBMovie)mList[0]; mList.Clear(); rndMovieId = movieDetails.ID; } } info.ID = rndMovieId; info.MediaInfo = mInfo; item.AlbumInfoTag = info; return; } try { VideoDatabase.GetMovieInfo(fileName, ref info); // Get recording/nfo xml if (info.IsEmpty) { FetchMatroskaInfo(fileName, false, ref info); if (info.IsEmpty) { FetchMovieNfo(path, fileName, ref info); } } VideoDatabase.GetVideoFilesMediaInfo(fileName, ref mInfo, false); info.VideoFileName = fileName; if (string.IsNullOrEmpty(info.VideoFilePath) || info.VideoFilePath == Strings.Unknown) { string tmpFile = string.Empty; Util.Utils.Split(fileName, out path, out tmpFile); info.VideoFilePath = path; } info.Path = path; info.MediaInfo = mInfo; info.Duration = VideoDatabase.GetMovieDuration(info.ID); int percent = 0; int watchedCount = 0; VideoDatabase.GetmovieWatchedStatus(VideoDatabase.GetMovieId(fileName), out percent, out watchedCount); info.WatchedPercent = percent; info.WatchedCount = watchedCount; item.AlbumInfoTag = info; } catch (Exception ex) { Log.Error("IMDBMovie SetMovieData (GetMovieInfo) error: {0}", ex.Message); item.AlbumInfoTag = info; } } catch (Exception ex) { Log.Error("IMDBMovie SetMovieData error: {0}", ex.Message); item.AlbumInfoTag = info; } }