/// <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"; } } }
/// <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(); }
/// <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); }
/// <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; } } }
/// <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"; } } }
/// <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); } }
/// <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 }
/// <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; }