Exemple #1
0
 /// <summary>
 /// Parses the YouTube link in the YouTube textbox.
 /// If valid displays GOOD else displays BAD.
 /// If valid will enable the Add buttons.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void youTubeLinkButton_Click(object sender,
                                      EventArgs e)
 {
     fileAddButton.Enabled    = true;
     youTubeAddButton.Enabled = true;
     huluAddButton.Enabled    = true;
     dvdAddButton.Enabled     = true;
     if (youTubeLinkTextBox.Text != "")
     {
         AVM.Parsers.YouTubeParser parser;
         parser = new AVM.Parsers.YouTubeParser(youTubeLinkTextBox.Text);
         bool status = parser.parse();
         if (status)
         {
             youTubeStatusLabel.ForeColor = Color.Green;
             youTubeStatusLabel.Text      = "GOOD";
             youTubeNameTextBox.Text      = parser.Title;
             fileNameTextBox.Text         = parser.Title;
             _node         = new AVM.Types.Node();
             _node.Name    = youTubeNameTextBox.Text;
             _node.YouTube = parser.Embedded;
             _node.Url     = parser.Url;
         }
         else
         {
             youTubeStatusLabel.ForeColor = Color.Red;
             youTubeStatusLabel.Text      = "BAD";
         }
     }
 }
Exemple #2
0
        /// <summary>
        /// Writes out an individual node to the xmlWriter.
        /// </summary>
        /// <param name="node">The node which is to be written.</param>
        /// <param name="xmlWriter">The writer for the xml backup.</param>
        private void writeNode(AVM.Types.Node node,
                               XmlTextWriter xmlWriter)
        {
            xmlWriter.WriteStartElement("node");
            xmlWriter.WriteAttributeString("id", node.Id.ToString());
            xmlWriter.WriteAttributeString("parent_id", node.ParentId.ToString());
            xmlWriter.WriteAttributeString("name", node.Name);
            xmlWriter.WriteStartElement("url");
            xmlWriter.WriteAttributeString("type", node.UrlType.ToString());
            xmlWriter.WriteString(node.Url);
            xmlWriter.WriteEndElement();
            // this should be able to be easily remade by choping off the last
            // part of the url and placeing it in http://www.youtube.com/v/HERE&hl=en&fs=1
            // this should be looked into to save space since its taking up over 50% of a \
            // node in xml currently problem is hulu
            xmlWriter.WriteElementString("embedded", node.embedded);
            xmlWriter.WriteElementString("comment", node.Comment);

            // If its an episode write the Episode element
            if (node.IsEpisode)
            {
                xmlWriter.WriteStartElement("episode");
                xmlWriter.WriteAttributeString("name", node.Episode.EpisodeName);
                xmlWriter.WriteAttributeString("number", node.Episode.EpisodeNumber.ToString());
                xmlWriter.WriteAttributeString("season", node.Episode.SeasonNumber.ToString());
                xmlWriter.WriteAttributeString("last", node.Episode.LastWatched.ToString());
                xmlWriter.WriteEndElement();
            }
            else
            {
                xmlWriter.WriteElementString("episode", null);
            }

            if (node.IsFile)
            {
                xmlWriter.WriteStartElement("file");
                xmlWriter.WriteAttributeString("uri", node.File.Uri.ToString());
                xmlWriter.WriteAttributeString("audio", node.File.Audio_Encoding);
                xmlWriter.WriteAttributeString("video", node.File.Video_Encoding);
                xmlWriter.WriteAttributeString("container", node.File.Container);
                xmlWriter.WriteEndElement();
            }
            else
            {
                xmlWriter.WriteElementString("file", null);
            }

            xmlWriter.WriteEndElement();
        }
Exemple #3
0
        /// <summary>
        /// Reads in an individual node from the xmlReader and returns a node.
        /// </summary>
        /// <param name="xmlReader">The reader for the xml backup.</param>
        /// <returns>The node that was read in.</returns>
        private AVM.Types.Node readNode(XmlTextReader xmlReader)
        {
            AVM.Types.Node node = new AVM.Types.Node();

            node.Id       = Int64.Parse(xmlReader[0]);
            node.ParentId = Int64.Parse(xmlReader[1]);
            node.Name     = xmlReader[2];

            xmlReader.ReadToDescendant("url");

            node.UrlType = Int16.Parse(xmlReader[0]);
            xmlReader.ReadStartElement("url");
            if (node.UrlType != 0)
            {
                node.Url = xmlReader.ReadString();
                xmlReader.ReadEndElement();
            }

            node.embedded = xmlReader.ReadElementString("embedded");
            node.Comment  = xmlReader.ReadElementString("comment");

            // if it has attributes read it
            if ((xmlReader.AttributeCount > 0) &&
                (xmlReader.Name == "episode"))
            {
                node.Episode               = new AVM.Types.EpisodeInfo();
                node.Episode.EpisodeName   = xmlReader[0];
                node.Episode.EpisodeNumber = Int32.Parse(xmlReader[1]);
                node.Episode.SeasonNumber  = Int32.Parse(xmlReader[2]);
                node.Episode.LastWatched   = bool.Parse(xmlReader[3]);
            }
            xmlReader.ReadStartElement("episode");

            // if it has attributes then read it
            if ((xmlReader.AttributeCount > 0) &&
                (xmlReader.Name == "file"))
            {
                node.File                = new AVM.Types.FileData();
                node.File.Uri            = new Uri(xmlReader[0]);
                node.File.Audio_Encoding = xmlReader[1];
                node.File.Video_Encoding = xmlReader[2];
                node.File.Container      = xmlReader[3];
            }
            xmlReader.ReadStartElement("file");

            xmlReader.ReadEndElement();
            return(node);
        }
Exemple #4
0
        /// <summary>
        /// Shows the file selection dialog in order to prompt the user for the file
        /// they want to add.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void fileBrowseButton_Click(object sender,
                                            EventArgs e)
        {
            openFileDialog.Filter = VIDEO_FILTER;
            bool first_time = fileFileTextBox.Text == "" ? true : false;

            if (first_time)
            {
                openFileDialog.ShowDialog();
            }
            else
            {
                openFileDialog.FileName         = fileFileTextBox.Text;
                openFileDialog.InitialDirectory = fileFileTextBox.Text.Remove(fileFileTextBox.Text.LastIndexOf('\\'));
                openFileDialog.ShowDialog();
            }
            fileFileTextBox.Text = "";
            fileFileTextBox.Text = openFileDialog.FileName;
            // Need to check that its "" incase nothing is returned
            if (first_time && openFileDialog.FileName != "")
            {
                _node = new AVM.Types.Node(fileFileTextBox.Text);
                if (_node.Name != "")
                {
                    fileNameTextBox.Text = _node.Name;
                }
                if (_node.IsEpisode)
                {
                    if (_node.Episode.EpisodeNumber != -1)
                    {
                        fileEpisodeNumberTextBox.Text = _node.Episode.EpisodeNumber.ToString();
                    }
                }
                if (_node.File.Video_Encoding != "")
                {
                    fileVideoCodecComboBox.Text = _node.File.Video_Encoding;
                }
                if (_node.File.Container != "")
                {
                    fileContainerComboBox.Text = _node.File.Container;
                }
            }
        }
Exemple #5
0
        /// <summary>
        /// Parses the YouTube link in the Hulu textbox.
        /// If valid displays GOOD else displays BAD.
        /// If valid will enable the Add buttons.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void huluLinkButton_Click(object sender,
                                          EventArgs e)
        {
            fileAddButton.Enabled    = true;
            youTubeAddButton.Enabled = true;
            huluAddButton.Enabled    = true;
            dvdAddButton.Enabled     = true;

            if (huluLinkTextBox.Text != "")
            {
                AVM.Parsers.HuluParser parser;
                parser = new AVM.Parsers.HuluParser(huluLinkTextBox.Text);
                bool status = parser.parse();
                if (status)
                {
                    huluStatusLabel.ForeColor = Color.Green;
                    huluStatusLabel.Text      = "GOOD";
                    _node      = new AVM.Types.Node();
                    _node.Name = youTubeNameTextBox.Text;
                    _node.Hulu = parser.Embedded;
                    _node.Url  = parser.Url;
                    updateNodeName(parser.Title);
                    if (parser.EpisodeTitle != "")
                    {
                        updateEpisodeName(parser.EpisodeTitle);
                    }
                    updateEpisodeNumber(parser.EpisodeNumber);
                    updateSeasonNumber(parser.SeasonNumber);
                }
                else
                {
                    huluStatusLabel.ForeColor = Color.Red;
                    huluStatusLabel.Text      = "BAD";
                }
            }
        }
Exemple #6
0
        /// <summary>
        /// Parses a single file using the pattern.
        /// </summary>
        /// <param name="parent_group">Group_id of the parent group.</param>
        /// <param name="file">The file to be parsed.</param>
        /// <returns>A node with all the data that could be parsed from the file.</returns>
        public AVM.Types.Node parseFile(long parent_group,
                                        FileInfo file)
        {
            string ext = file.Extension.ToLower();
            string name;
            string dil;
            string tempName;
            string pattern = _pattern;
            string tempPattern;

            AVM.Types.Node node = new AVM.Types.Node();
            node.Id       = ++last_node;
            node.ParentId = parent_group;
            node.File     = new AVM.Types.FileData();
            node.File.Uri = new Uri(file.FullName);

            if ((_pattern.Contains(" - ")) ||
                (_pattern.Contains("_-_")))
            {
                dil = " - ";
            }
            else
            {
                dil = " ";
            }

            if ((ext == ".flv") || (ext == ".avi") || (ext == ".mkv") ||
                (ext == ".ogm") || (ext == ".mp4") || (ext == ".wmv"))
            {
                // Parse filename for information
                name = cleanString(file.Name.Replace("_", " "));
                name = name.Replace(ext, "");
                while ((pattern != "") &&
                       (name != ""))
                {
                    if (name.Contains(dil))
                    {
                        tempName = name.Remove(name.IndexOf(dil));
                    }
                    else
                    {
                        tempName = name;
                    }

                    if (pattern.Contains(dil))
                    {
                        tempPattern = pattern.Remove(_pattern.IndexOf(dil));
                    }
                    else
                    {
                        tempPattern = pattern;
                    }

                    // This is the pattern keyword section.
                    // Adding an if statement here for the
                    // keyword you want to add will allow
                    // you to add your own keywords to the
                    // pattern.

                    if (tempPattern.Replace(" ", "") == "Name")
                    {
                        tempName  = tempName.TrimStart(' ');
                        tempName  = tempName.TrimEnd(' ');
                        node.Name = tempName;
                    }

                    if (tempPattern.Replace(" ", "") == "EpisodeNumber")
                    {
                        int number;
                        if (Int32.TryParse(tempName, out number))
                        {
                            if (!node.IsEpisode)
                            {
                                node.Episode = new AVM.Types.EpisodeInfo();
                            }
                            node.Episode.EpisodeNumber = number;
                        }
                    }

                    if (name.Contains(dil))
                    {
                        name = name.Replace(tempName + dil, "");
                    }
                    else
                    {
                        name = name.Replace(tempName, "");
                    }

                    if (pattern.Contains(dil))
                    {
                        pattern = pattern.Replace(tempPattern + dil, "");
                    }
                    else
                    {
                        pattern = pattern.Replace(tempPattern, "");
                    }
                }
                //Console.WriteLine("-" + last_node++ + " - " + cleanString(file.Name.Replace("_", " ")));
                Console.Write("--" + node.Id + ": " + node.Name);
                if (node.IsEpisode)
                {
                    Console.WriteLine(" #" + node.Episode.EpisodeNumber);
                }
                else
                {
                    Console.WriteLine();
                }

                if (parent_group != -1)
                {
                    nodes.Add(node);
                }
                return(node);
            }
            else
            {
                return(null);
            }
        }
Exemple #7
0
        /// <summary>
        /// Populates the editor with data if a node is provided.
        /// Changes the text on buttons based on if the title is "new" or not.
        /// </summary>
        /// <param name="title">The title of the form. "New" means your adding a new node.</param>
        /// <param name="node">The node to populate the editor weith. Null means new node.</param>
        public NodeEditor(string title,
                          AVM.Types.Node node)
        {
            InitializeComponent();
            this.Text = title;
            if (title != "New")
            {
                fileAddButton.Text    = "Save";
                youTubeAddButton.Text = "Save";
                huluAddButton.Text    = "Save";
                dvdAddButton.Text     = "Save";
            }
            if (node != null)
            {
                _node = node;
                if (_node.IsFile)
                {
                    fileFileTextBox.Text        = _node.File.Uri.OriginalString;
                    fileVideoCodecComboBox.Text = _node.File.Video_Encoding;
                    fileAudioCodecComboBox.Text = _node.File.Audio_Encoding;
                    fileContainerComboBox.Text  = _node.File.Container;
                }
                if (_node.IsEpisode)
                {
                    // Fill EpisodeName in for each tab
                    fileEpisodeNameTextBox.Text    = _node.Episode.EpisodeName;
                    youTubeEpisodeNameTextBox.Text = _node.Episode.EpisodeName;
                    huluEpisodeNameTextBox.Text    = _node.Episode.EpisodeName;

                    // Fill LastWatched for each tab
                    fileLastWatchedCheckBox.Checked    = _node.Episode.LastWatched;
                    youTubeLastWatchedCheckBox.Checked = _node.Episode.LastWatched;
                    huluLastWatchedCheckBox.Checked    = _node.Episode.LastWatched;

                    // Fill EpisodeNumber in for each tab
                    if (_node.Episode.EpisodeNumber > -1)
                    {
                        fileEpisodeNumberTextBox.Text    = _node.Episode.EpisodeNumber.ToString();
                        youTubeEpisodeNumberTextBox.Text = _node.Episode.EpisodeNumber.ToString();
                        huluEpisodeNumberTextBox.Text    = _node.Episode.EpisodeNumber.ToString();
                    }

                    // Fill SeasonNumber in for each tab
                    if (_node.Episode.SeasonNumber > -1)
                    {
                        fileSeasonNumberTextBox.Text    = _node.Episode.SeasonNumber.ToString();
                        youTubeSeasonNumberTextBox.Text = _node.Episode.SeasonNumber.ToString();
                        huluSeasonNumberTextBox.Text    = _node.Episode.SeasonNumber.ToString();
                    }
                }
                fileNameTextBox.Text    = _node.Name;
                youTubeNameTextBox.Text = _node.Name;
                huluNameTextBox.Text    = _node.Name;
                dvdNameTextBox.Text     = _node.Name;

                if (_node.Comment != "")
                {
                    dvdCommentsTextBox.Text      = _node.Comment;
                    nodeTabControl.SelectedIndex = 3;
                }

                if (_node.IsYouTube)
                {
                    youTubeLinkTextBox.Text = _node.Url;

                    youTubeStatusLabel.ForeColor = Color.Green;
                    youTubeStatusLabel.Text      = "GOOD";

                    fileAddButton.Enabled    = true;
                    youTubeAddButton.Enabled = true;
                    huluAddButton.Enabled    = true;
                    dvdAddButton.Enabled     = true;

                    nodeTabControl.SelectedIndex = 1;
                }
                if (_node.IsHulu)
                {
                    huluLinkTextBox.Text      = _node.Url;
                    huluStatusLabel.ForeColor = Color.Green;
                    huluStatusLabel.Text      = "GOOD";
                    fileAddButton.Enabled     = true;
                    youTubeAddButton.Enabled  = true;
                    huluAddButton.Enabled     = true;
                    dvdAddButton.Enabled      = true;

                    nodeTabControl.SelectedIndex = 2;
                }
            }
            #region Populating File Tab
            // Populate Video Codec ComboBox
            fileVideoCodecComboBox.Items.Add("");
            fileVideoCodecComboBox.Items.Add("Xvid");
            fileVideoCodecComboBox.Items.Add("x264");
            fileVideoCodecComboBox.Items.Add("h.286");
            fileVideoCodecComboBox.Items.Add("DivX");
            fileVideoCodecComboBox.Items.Add("mpeg2");
            fileVideoCodecComboBox.Items.Add("VC-1");
            fileVideoCodecComboBox.Items.Add("Theora");
            // Populate Audio Codec ComboxBox
            fileAudioCodecComboBox.Items.Add("");
            fileAudioCodecComboBox.Items.Add("mp3");
            fileAudioCodecComboBox.Items.Add("AAC");
            fileAudioCodecComboBox.Items.Add("Vorbis");
            fileAudioCodecComboBox.Items.Add("VC-1");
            fileAudioCodecComboBox.Items.Add("AC-3");
            // Populate Container ComboBox
            fileContainerComboBox.Items.Add("");
            fileContainerComboBox.Items.Add("flv");
            fileContainerComboBox.Items.Add("avi");
            fileContainerComboBox.Items.Add("mkv");
            fileContainerComboBox.Items.Add("ogm");
            fileContainerComboBox.Items.Add("ogg");
            fileContainerComboBox.Items.Add("mp4");
            fileContainerComboBox.Items.Add("wmv");
            #endregion
        }
Exemple #8
0
 /// <summary>
 /// Creates a NodeViewer form populated with the information from
 /// the passed in node.
 /// </summary>
 /// <param name="node"></param>
 public NodeViewer(AVM.Types.Node node)
 {
     InitializeComponent();
     _node = node;
 }