您的位置:首页 > 编程语言 > C#

C#控制台程序取得INSOYA视频区的视频的真实URL,视频标题,发布时间集合。

2015-09-27 21:05 411 查看

准备工作

  起因是因为这个网站:http://i.youku.com/kmsfan 这个是一个叫做冒险岛的游戏的资讯论坛,以前我经常在里面传视频,现在我不玩这个游戏了,但是很多玩家还是经常到我的网站里面去看视频,所以我觉得有点不好意思,我觉得开发出一款自动上传下载的工具比什么都好,也不耽误我时间。需要准备一些插件,这些插件都可以从Nuget里面找到,比如Newtonsoft.Json啊HtmlAgilityPack ,不过目前为止也只用到了这些东西。还有我没有做youtube视频的下载,我只做了Daum tv的视频解析,因为Insoya视频区大部分都是上传到Daum Tv 的视频。

Insoya视频区结构解析

  我先不放代码,大家先要对网站的文件解析有个大概的了解才行吧?我的想法就是:解析当天的视频。因为Insoya是一个韩国网站,所以韩文什么的思密达什么的就不要再吐槽了。这是视频区的地址:http://www.insoya.com/bbs/zboard.php?id=ucc

public static IList<VideoModel> GrabVideoInfo()
{
int max=getMaxIdOfVideo();
int staticMax = max;
IList<VideoModel> models = new List<VideoModel>();
do {
VideoModel model=new VideoModel();
HtmlWeb innerDocWeb = new HtmlWeb();
HtmlDocument innerDoc = innerDocWeb.Load(insoyaUcc + max);
//标题
foreach (HtmlNode title in innerDoc.DocumentNode.Descendants("a").Where(d =>
d.Attributes.Contains("name") && d.Attributes["name"].Value.Contains("pv9")))
{
model.Title = title.InnerText;
break;
}

//日期
foreach (HtmlNode title in innerDoc.DocumentNode.Descendants("span").Where(d =>
d.Attributes.Contains("class") && d.Attributes["class"].Value=="eng"))
{
DateTime date;
DateTime.TryParse(title.InnerText,out date);

if (date != null)
{
model.PubTime = date;
break;
}

}
//视频地址
foreach (HtmlNode title in innerDoc.DocumentNode.Descendants("iframe").Where(d =>
d.Attributes.Contains("title") && d.Attributes["title"].Value.Contains("maplestory_ucc")))
{
string oldUrl = title.Attributes["src"].Value;
string newUrl = GetDownloadUrls(oldUrl);
model.VideoUrl = newUrl;
break;

}
model.VideoId = max;
models.Add(model);
Console.WriteLine("ID:"+max + " has accomplish grabbed!");
--max;
} while (max >= staticMax - 20);

return models;
}


GrabVideoInfo(获取视频模型)
  好了,到此为止我们就可以抓取到视频模型了。

尚未完成的工作

  当然了,才完成了30%,还要自动上传视频到优酷,还有要把韩文翻译成最合适的中文,如果我做出来了,会和大家分享的,首先是上传到优酷。有兴趣的同好可以看看优酷开放平台。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: