m3u8解析到临时数据
This commit is contained in:
parent
05f567279e
commit
920e63996e
@ -4,6 +4,8 @@ using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
using HtmlAgilityPack;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
|
||||
namespace HaoYue.CQTVShow.Hub
|
||||
{
|
||||
@ -61,5 +63,74 @@ namespace HaoYue.CQTVShow.Hub
|
||||
return "";
|
||||
}
|
||||
|
||||
public static ShowInfo GetShowInfo(string url)
|
||||
{
|
||||
HtmlWeb htmlweb = new HtmlWeb();
|
||||
HtmlDocument htmldoc = htmlweb.Load(url);
|
||||
string scriptstr = htmldoc.DocumentNode.SelectNodes("//div[@class='main']/script")[0].InnerHtml;
|
||||
string[] strArr = scriptstr.Split('\n');
|
||||
|
||||
string vurl_1 = strArr[1].Substring(strArr[1].IndexOf("\"") + 1);
|
||||
string vurl = vurl_1.Substring(0, vurl_1.LastIndexOf('\"'));
|
||||
|
||||
string url_1 = strArr[6].Substring(strArr[6].IndexOf("\'") + 1);
|
||||
string url_2 = url_1.Substring(0, url_1.LastIndexOf('\''));
|
||||
|
||||
ShowInfo si = new ShowInfo();
|
||||
si.PlayListM3u8Url = url_2.Replace("' + vurl + '", vurl);
|
||||
|
||||
var list = CheckM3u8File(si.PlayListM3u8Url);
|
||||
|
||||
var normalm3u8 = list.Where(w => w.filetype == 1 && w.Path.Contains("b3000")).FirstOrDefault();
|
||||
if (normalm3u8 != null)
|
||||
{
|
||||
si.PlayNormalM3u8Url = si.PlayListM3u8Url.Substring(0, si.PlayListM3u8Url.LastIndexOf("/")+1) + normalm3u8.Path;
|
||||
}
|
||||
|
||||
var hdm3u8 = list.Where(w => w.filetype == 1 && w.Path.Contains("b5000")).FirstOrDefault();
|
||||
if (hdm3u8 != null)
|
||||
{
|
||||
si.PlayNormalM3u8Url = si.PlayListM3u8Url.Substring(0, si.PlayListM3u8Url.LastIndexOf("/")+1) + normalm3u8.Path;
|
||||
}
|
||||
|
||||
return si;
|
||||
}
|
||||
|
||||
|
||||
private static List<ModelOfM3u8> CheckM3u8File(string url)
|
||||
{
|
||||
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
|
||||
webRequest.Method = "GET"; HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
|
||||
StreamReader sr = new StreamReader(webResponse.GetResponseStream(), Encoding.Default);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//AddLog("开始解析m3u8文件");
|
||||
var ALLList = new List<ModelOfM3u8>();
|
||||
//string FileText = File.ReadAllText(FilePath);
|
||||
string FileText = sr.ReadToEnd();
|
||||
|
||||
int i = 0;
|
||||
foreach (string s in FileText.Split('\n'))
|
||||
{
|
||||
if (s.Trim().Length > 0 && s.Trim().Substring(0, 1) != "#")//去空格后长度不为1 且不是注释
|
||||
{
|
||||
int filetype = 0;
|
||||
|
||||
|
||||
if (s.Substring(s.LastIndexOf(".")).Contains("m3u8"))
|
||||
{
|
||||
filetype = 1;
|
||||
}
|
||||
ALLList.Add(new ModelOfM3u8() { Path = s, filetype = filetype, State = 0, Index = ++i });
|
||||
|
||||
}
|
||||
}
|
||||
//AddLog("解析完毕,共" + ALLList.Where(w => w.filetype == 0).Count() + "个ts视频切片,共" + ALLList.Where(w => w.filetype == 1).Count() + "个m3u8配置文件");
|
||||
return ALLList;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -116,6 +116,11 @@ namespace HaoYue.CQTVShow.Hub
|
||||
{
|
||||
//获取选择的节目
|
||||
int SelectedIndex = this.ListBoxShow.SelectedIndex;
|
||||
|
||||
//大概是重新装载列表的时候也会出发选择事件、然而这时候选择的Index会为-1 执行则会错误
|
||||
if (SelectedIndex < 0)
|
||||
return;
|
||||
|
||||
ThreadPool.QueueUserWorkItem((obj) =>
|
||||
{
|
||||
this.Image_SelectedShow.Dispatcher.BeginInvoke(new myintsetter(SetShowSelected), SelectedIndex);
|
||||
@ -182,7 +187,8 @@ namespace HaoYue.CQTVShow.Hub
|
||||
/// <param name="e"></param>
|
||||
private void PlayMedia(object sender, RoutedEventArgs e)
|
||||
{
|
||||
System.Diagnostics.Process.Start(StaticClass.PlayUrl);
|
||||
//System.Diagnostics.Process.Start(StaticClass.PlayUrl);
|
||||
StaticClass.StaticShowInfo = HtmlDoIt.GetShowInfo(StaticClass.PlayUrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ namespace HaoYue.CQTVShow.Hub
|
||||
{
|
||||
public static List<StaticShow> StaticShowList = new List<StaticShow>();
|
||||
public static string PlayUrl = "";
|
||||
public static ShowInfo StaticShowInfo = new ShowInfo();
|
||||
}
|
||||
|
||||
|
||||
@ -22,4 +23,29 @@ namespace HaoYue.CQTVShow.Hub
|
||||
public string Time { get; set; }
|
||||
public string ImageSrc { get; set; }
|
||||
}
|
||||
|
||||
public class ShowInfo
|
||||
{
|
||||
public string Title { get; set; }
|
||||
public string Info { get; set; }
|
||||
public string PlayList { get; set; }
|
||||
public string PlayListM3u8Url { get; set; }
|
||||
public string PlayNormalM3u8Url { get; set; }
|
||||
public string PlayHDM3u8Url { get; set; }
|
||||
}
|
||||
|
||||
public class ModelOfM3u8
|
||||
{
|
||||
public string Path { get; set; }
|
||||
/// <summary>
|
||||
/// [0] 视频格式 [1]m3u8文件
|
||||
/// </summary>
|
||||
public int filetype { get; set; }
|
||||
/// <summary>
|
||||
/// [0]未处理[1]在下中[2]已下载[3]处理失败
|
||||
/// </summary>
|
||||
public int State { get; set; }
|
||||
|
||||
public int Index { get; set; }
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user