Ejemplo n.º 1
0
        private void SetupTvScanner()
        {
            #region setup the tv scanner
            this.TvScanner            = new iMetaLibrary.Scanners.TvScanner();
            this.TvScanner.Started   += delegate {  };
            this.TvScanner.Completed += delegate
            {
                if (notebook1.Page == 1)
                {
                    topbar.IsStatusPulsing = false;
                }
                UpdateStatusText("TV Shows: {0}, Episodes: {1}".FormatStr(TvScanner.NumberOfShows, TvScanner.Items.Count), false);
            };
            this.TvScanner.ItemAdded += delegate(Meta Item)
            {
                UpdateStatusText("Found Episode: {0}".FormatStr(Item.Filename), false);
            };
            this.TvScanner.ScanningItem += delegate(Meta Item)
            {
                UpdateStatusText("Scanning File: {0}".FormatStr(Item.Filename), false);
            };
            this.TvScanner.AllItemsFound += delegate(iMetaLibrary.Metadata.Meta[] NewItems) {
                List <TvShowNode> storeItems = new List <TvShowNode>();
                foreach (string key in TvScanner.Shows.Keys)                // need to check if already in the store...
                {
                    List <TvFileMeta> episodes = TvScanner.Shows[key];
                    // construct these off the main thread

                    var  enumerator = storeItems.GetEnumerator();
                    bool showfound  = false;
                    while (enumerator.MoveNext())
                    {
                        TvShowNode node = (TvShowNode)enumerator.Current;
                        if (node.Title.ToLower() == episodes[0].ShowTitle.ToLower())
                        {
                            showfound             = true;
                            node.NumberOfEpisodes = episodes.Count;
                            break;
                        }
                    }
                    if (!showfound)
                    {
                        System.Drawing.Image poster = episodes[0].GetPoster();
                        storeItems.Add(new TvShowNode()
                        {
                            Title            = episodes[0].ShowTitle,
                            NumberOfEpisodes = episodes.Count,
                            Poster           = poster == null ? Images.NoPosterSmallPixbuf : GuiHelper.ImageToPixbufIcon(poster, 120, 180)
                        });

                        if (poster != null)
                        {
                            poster.Dispose();
                        }
                    }
                }
                guiTvShowList.AddToStore(storeItems);
            };
            guiTvShowList.ItemActivated += delegate(string Label)
            {
                if (String.IsNullOrEmpty(Label) || TvScanner.Shows == null || !TvScanner.Shows.ContainsKey(Label))
                {
                    return;
                }
                TvShowMeta showmeta = TvScanner.Shows[Label][0].LoadShowMeta();

                Gtk.Application.Invoke(delegate
                {
                    // show the tv show gui
                    guiTvShow.InitializeShow(showmeta, TvScanner.Shows[Label].ToArray());
                    topbar.TvShowsButtonIsActive = false;
                    nbkTvShows.Page = 1;
                });
            };

            /*
             * btnTvBack.Activated += delegate {
             *      nbkTvShows.Page = 0;
             * };
             * btnTvFolders.Activated += delegate {
             *      using(iMetaGui.FolderListGui flg = new iMetaGui.FolderListGui("TV Folders", "Here you can configure the folders to scan for TV episodes.", iMetaLibrary.Settings.TvFolders)){
             *              flg.Run();
             *              if(flg.DialogResult == ResponseType.Ok)
             *              {
             *                      iMetaLibrary.Settings.TvFolders = flg.Folders;
             *                      iMetaLibrary.Settings.SaveSettings();
             *              }
             *      }
             * };*/
            #endregion
        }
Ejemplo n.º 2
0
        public TvShowMeta LoadShowMeta(TvdbLib.TvdbHandler tvdbHandler)
        {
            if (this.TvShow == null)
            {
                FileInfo fileInfo = new FileInfo(this.Filename);
                string showPath = fileInfo.Directory.FullName;
                // get directory of show.
                if (Regex.IsMatch(fileInfo.Directory.Name, "(Season|Series|Specials)", RegexOptions.IgnoreCase))
                    showPath = fileInfo.Directory.Parent.FullName;

                this.TvShow = TvShowMeta.Load(tvdbHandler, this.ShowTitle, Path.Combine(showPath, "tvshow.nfo"));
            }
            return this.TvShow;
        }