public static BiliInterfaceInfo GetInfo(string AVnum)
{
string avnum = AVnum.ToUpper();
if (avnum.Contains("AV"))
{
avnum = avnum.Substring(2, avnum.Length - 2);
}
Log.Info("正在获取API数据 - AV" + avnum);
string html = GetHtml(InterfaceUrl + avnum);
JavaScriptSerializer j = new JavaScriptSerializer();
BiliInterfaceInfo info = new BiliInterfaceInfo();
try
{
info = j.Deserialize<BiliInterfaceInfo>(html);
if (info.code == -403)
{
if (info.error == "no perm error")
Log.Error("没有数据!(正在补档或被删除?)");
else
Log.Error("本视频为会员独享,需要Cookie!");
}
else if (info.code == -503)
{
Log.Warn("到达连续获取上限,延时两秒");
System.Threading.Thread.Sleep(2000);
return GetInfo(AVnum);
}
else if (info.code == -404)
{
Log.Error("视频不存在!");
}
else if (info.code != 0)
{
Log.Error("返回未知错误:" + info.code);
}
else
{
info.aid = avnum;
info.AVNUM = "AV" + avnum;
info.title = info.title.Replace("&", "&");
info.title = info.title.Replace("<", "<");
info.title = info.title.Replace(">", ">");
info.title = info.title.Replace(""", "\"");
//算分
double xiuzheng = 0;
//收藏
xiuzheng = ((double)info.favorites / (double)info.play) * 1500;
if (xiuzheng > 55)
xiuzheng = 55;
info.Ffavorites = Convert.ToUInt32(info.favorites * xiuzheng);
//硬币
xiuzheng = ((double)info.coins / (double)info.play) * 5000;
if (xiuzheng > 25)
xiuzheng = 25;
info.Fcoins = Convert.ToUInt32(info.coins * xiuzheng);
//评论
xiuzheng = ((double)(info.review + info.favorites + info.coins) / (double)(info.play + info.review + info.video_review * 5)) * 800;
if (xiuzheng > 30)
xiuzheng = 30;
info.Freview = Convert.ToUInt32(info.review * xiuzheng);
//播放
info.Fplay = info.Ffavorites + info.Fcoins;
if (info.play <= info.Fplay)
info.Fplay = info.play;
else
info.Fplay = info.Fplay + (info.play - info.Fplay) / 2;
//得分
info.Fdefen = info.Ffavorites + info.Fcoins + info.Freview + info.Fplay;
}
}
catch (Exception e)
{
Log.Error("AV" + avnum + "的数据发生错误,请稍后重试!" + e.Message);
}
return info;
}