Esempio n. 1
0
    //-------------------------------------------------------------------------------------------
    //  Grab URL Internet Movie Informations and update the XML database and refresh screen
    //  -> Selection of grabber script
    //-------------------------------------------------------------------------------------------        
    public static void grabb_Internet_Informations(string fullMovieName, int GetID, bool choosescript, string wscript, string fullMoviePath, GrabType grabtype, bool showAll, Searchtitles sTitles, GUIAnimation searchanimation)
    {
      LogMyFilms.Debug("(grabb_Internet_Informations) with grabtype = '" + grabtype + "', title = '" + fullMovieName + "', choosescript = '" + choosescript + "', grabberfile = '" + wscript + "'");
      if (choosescript)
      {
        if (!Directory.Exists(MyFilmsSettings.GetPath(MyFilmsSettings.Path.GrabberScripts)))
        {
          GUIUtils.ShowOKDialog(string.Format(GUILocalizeStrings.Get(1079876), MyFilmsSettings.GetPath(MyFilmsSettings.Path.GrabberScripts)), GUILocalizeStrings.Get(1079877), "", "");
          LogMyFilms.Info("My Films : The Directory grabber config files doesn't exists. Verify your Configuration !");
          return;
        }

        if (!Directory.Exists(MyFilmsSettings.GetPath(MyFilmsSettings.Path.GrabberScripts) + @"\user"))
        {
          try { Directory.CreateDirectory(MyFilmsSettings.GetPath(MyFilmsSettings.Path.GrabberScripts) + @"\user"); }
          catch (Exception ex) { LogMyFilms.Debug("Error creating user script directory: '" + ex.Message + "'"); }
        }

        // Grabber Directory filled, search for XML scripts files
        var dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU);
        dlg.Reset();
        dlg.SetHeading(GUILocalizeStrings.Get(10798706)); // "Choose internet grabber script"
        if (dlg == null) return;
        var scriptfile = new ArrayList();

        if (MyFilms.conf.StrGrabber_cnf.Length > 0 && (grabtype == GrabType.Details || grabtype == GrabType.All))
        {
          try
          {
            var defaultScript = new GrabberScript(MyFilms.conf.StrGrabber_cnf);
            defaultScript.Load(MyFilms.conf.StrGrabber_cnf);
            scriptfile.Add(MyFilms.conf.StrGrabber_cnf);
            dlg.Add(MyFilms.conf.StrGrabber_cnf.Substring(MyFilms.conf.StrGrabber_cnf.LastIndexOf("\\", System.StringComparison.Ordinal) + 1) + " (default)");
            dlg.SelectedLabel = 0;
          }
          catch (Exception)
          {
            LogMyFilms.Error("The default script is not compatible with current MyFilms version - please change your settings !");
          }
        }
        var dirsInf = new DirectoryInfo(MyFilmsSettings.GetPath(MyFilmsSettings.Path.GrabberScripts));
        FileSystemInfo[] sfiles = dirsInf.GetFileSystemInfos();

        foreach (FileSystemInfo sfi in sfiles)
        {
          if ((sfi.Extension.ToLower() == ".xml") && (sfi.FullName != MyFilms.conf.StrGrabber_cnf))
          {
            var script = new GrabberScript(sfi.FullName);
            script.Load(sfi.FullName);
            string displayName = "";
            string displayNamePost = "";
            switch (grabtype)
            {
              case GrabType.MultiCovers:
                displayNamePost = script.Type.ToLower().Contains("multicovers") ? " - (Multi Cover)" : " - (Single Cover)";
                break;
            }
            if (ShouldGrabberBeAdded(script, grabtype, showAll))
            {
              if (!string.IsNullOrEmpty(script.DBName))
              {
                displayName += script.DBName;
                if (!string.IsNullOrEmpty(script.Language)) displayName += " (" + script.Language + ")";
                displayName += displayNamePost;
              }
              else displayName += sfi.Name;
              dlg.Add(displayName);
              scriptfile.Add(sfi.FullName);
            }
          }
        }
        // add choice to show all languages
        if (!showAll && !string.IsNullOrEmpty(MyFilms.conf.ItemSearchGrabberScriptsFilter))
          dlg.Add(GUILocalizeStrings.Get(10798765)); // Show all

        if (scriptfile.Count > 0)
        {
          dlg.DoModal(GetID);
          if (dlg.SelectedLabel == -1)
            return;
          if (dlg.SelectedLabelText == GUILocalizeStrings.Get(10798765))
          {
            grabb_Internet_Informations(fullMovieName, GetID, true, wscript, fullMoviePath, grabtype, true, sTitles, searchanimation);
            return;
          }
          if (dlg.SelectedLabel > -1)
            wscript = scriptfile[dlg.SelectedLabel].ToString();
        }
      }
      grabb_Internet_Informations_Search(fullMovieName, GetID, wscript, fullMoviePath, grabtype, sTitles, searchanimation);
    }