/// <summary> /// 生成acplay配置文件 /// </summary> /// <param name="pr">Parser的解析结果</param> /// <param name="title">文件标题</param> private string GenerateAcplayConfig(ParseResult pr, string title) { try { //生成新的配置 AcPlayConfiguration c = new AcPlayConfiguration(); //播放器 c.PlayerName = "acfun"; //播放器地址 c.PlayerUrl = Info.Settings["PlayerUrl"]; //端口 c.HttpServerPort = 7776; c.ProxyServerPort = 7777; //视频 c.Videos = new Video[Info.FilePath.Count]; for (int i = 0; i < Info.FilePath.Count; i++) { c.Videos[i] = new Video(); c.Videos[i].FileName = Path.GetFileName(Info.FilePath[i]); if (pr != null) if (pr.Items[i].Information.ContainsKey("length")) c.Videos[i].Length = int.Parse(pr.Items[i].Information["length"]); if (pr != null) if (pr.Items[i].Information.ContainsKey("order")) c.Videos[i].Order = int.Parse(pr.Items[i].Information["order"]); } //弹幕 c.Subtitles = new string[Info.SubFilePath.Count]; for (int i = 0; i < Info.SubFilePath.Count; i++) { c.Subtitles[i] = Path.GetFileName(Info.SubFilePath[i]); } //其他 c.ExtraConfig = new SerializableDictionary<string, string>(); if (pr != null) if (pr.SpecificResult.ContainsKey("totallength")) //totallength c.ExtraConfig.Add("totallength", pr.SpecificResult["totallength"]); if (pr != null) if (pr.SpecificResult.ContainsKey("src")) //src c.ExtraConfig.Add("src", pr.SpecificResult["src"]); if (pr != null) if (pr.SpecificResult.ContainsKey("framecount")) //framecount c.ExtraConfig.Add("framecount", pr.SpecificResult["framecount"]); //配置文件的生成地址 string path = Path.Combine(Info.SaveDirectory.ToString(), title + ".acplay"); //序列化到文件中 using (var fs = new FileStream(path, FileMode.Create)) { XmlSerializer s = new XmlSerializer(typeof(AcPlayConfiguration)); s.Serialize(fs, c); } return path; } catch { return ""; } }
/// <summary> /// 生成acplay配置文件 /// </summary> /// <param name="pr">Parser的解析结果</param> /// <param name="title">文件标题</param> private string GenerateAcplayConfig(ParseResult pr) { if (Tools.IsRunningOnMono) return ""; try { //生成新的配置 var c = new AcPlayConfiguration { PlayerName = "acfun", PlayerUrl = Info.Settings["PlayerUrl"], HttpServerPort = 7776, ProxyServerPort = 7777, Videos = new Video[Info.FilePath.Count], WebUrl = Info.Url }; for (int i = 0; i < Info.FilePath.Count; i++) { c.Videos[i] = new Video(); c.Videos[i].FileName = Path.GetFileName(Info.FilePath[i]); if (pr != null) if (pr.Items[i].Information.ContainsKey("length")) c.Videos[i].Length = int.Parse(pr.Items[i].Information["length"]); if (pr != null) if (pr.Items[i].Information.ContainsKey("order")) c.Videos[i].Order = int.Parse(pr.Items[i].Information["order"]); } //弹幕 c.Subtitles = new string[Info.SubFilePath.Count]; for (int i = 0; i < Info.SubFilePath.Count; i++) { c.Subtitles[i] = Path.GetFileName(Info.SubFilePath[i]); } //其他 c.ExtraConfig = new SerializableDictionary<string, string>(); if (pr != null) if (pr.SpecificResult.ContainsKey("totallength")) //totallength c.ExtraConfig.Add("totallength", pr.SpecificResult["totallength"]); if (pr != null) if (pr.SpecificResult.ContainsKey("src")) //src c.ExtraConfig.Add("src", pr.SpecificResult["src"]); if (pr != null) if (pr.SpecificResult.ContainsKey("framecount")) //framecount c.ExtraConfig.Add("framecount", pr.SpecificResult["framecount"]); //配置文件的生成地址 var renamehelper = new CustomFileNameHelper(); string filename = renamehelper.CombineFileName(m_customFileName, m_videoTitle, m_currentPartTitle, "", "acplay", m_acNumber, m_acSubNumber); filename = Path.Combine(Info.SaveDirectory.ToString(), filename); Info.FilePath.Add(filename); //string path = Path.Combine(Info.SaveDirectory.ToString(), title + ".acplay"); //序列化到文件中 using (var fs = new FileStream(filename, FileMode.Create)) { var s = new XmlSerializer(typeof (AcPlayConfiguration)); s.Serialize(fs, c); } return filename; } catch { return ""; } }
/// <summary> /// 从文件中读取设置(不刷新用户界面) /// </summary> /// <param name="filePath"></param> private void LoadConfigFromFile(string filePath) { try { using (var fs = new FileStream(filePath, FileMode.Open)) { XmlSerializer s = new XmlSerializer(typeof(AcPlayConfiguration)); config = (AcPlayConfiguration)s.Deserialize(fs); } } catch { MessageBox.Show("配置文件读取失败", "AcPlay", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// 生成acplay配置文件 /// </summary> /// <param name="pr">Parser的解析结果</param> /// <param name="title">文件标题</param> private string GenerateAcplayConfig(ParseResult pr, string title, string subtitle) { try { //生成新的配置 AcPlayConfiguration c = new AcPlayConfiguration(); //播放器 c.PlayerName = "bilibili"; //播放器地址 c.PlayerUrl = "http://static.hdslb.com/play.swf"; //端口 c.HttpServerPort = 7776; c.ProxyServerPort = 7777; //视频 c.Videos = new Video[Info.FilePath.Count]; for (int i = 0; i < Info.FilePath.Count; i++) { c.Videos[i] = new Video(); c.Videos[i].FileName = Path.GetFileName(Info.FilePath[i]); if (pr != null) if (pr.Items[i].Information.ContainsKey("length")) c.Videos[i].Length = int.Parse(pr.Items[i].Information["length"]); if (pr != null) if (pr.Items[i].Information.ContainsKey("order")) c.Videos[i].Order = int.Parse(pr.Items[i].Information["order"]); } //弹幕 c.Subtitles = new string[Info.SubFilePath.Count]; for (int i = 0; i < Info.SubFilePath.Count; i++) { c.Subtitles[i] = Path.GetFileName(Info.SubFilePath[i]); } //其他 c.ExtraConfig = new SerializableDictionary<string, string>(); if (pr != null) if (pr.SpecificResult.ContainsKey("totallength")) //totallength c.ExtraConfig.Add("totallength", pr.SpecificResult["totallength"]); if (pr != null) if (pr.SpecificResult.ContainsKey("src")) //src c.ExtraConfig.Add("src", pr.SpecificResult["src"]); if (pr != null) if (pr.SpecificResult.ContainsKey("framecount")) //framecount c.ExtraConfig.Add("framecount", pr.SpecificResult["framecount"]); //配置文件的生成地址 var renamehelper = new CustomFileNameHelper(); string filename = renamehelper.CombineFileName(Settings["CustomFileName"], title, subtitle, "", "acplay", Info.Settings["AVNumber"], Info.Settings["AVSubNumber"]); filename = Path.Combine(Info.SaveDirectory.ToString(), filename); //序列化到文件中 using (var fs = new FileStream(filename, FileMode.Create)) { XmlSerializer s = new XmlSerializer(typeof(AcPlayConfiguration)); s.Serialize(fs, c); } return filename; } catch { return ""; } }