public static string GetFlvUrl(uint aid, uint cid)
{
SortedDictionary<string, string> parampairs = new SortedDictionary<string, string>();
//parampairs.Add("aid", aid.ToString());
//parampairs.Add("cid", cid.ToString());
//-parampairs.Add("type", null);
//parampairs.Add("otype", "json");
//parampairs.Add("type", "mp4");
//-parampairs.Add("player", "1");
//-parampairs.Add("ts", ((long)((DateTime.Now - new DateTime(1970, 1, 1)).TotalSeconds)).ToString());
//parampairs.Add("appkey", null);
parampairs.Add("appsec", dlappsec);
parampairs.Add("cid", cid.ToString());
parampairs.Add("from", "miniplay");
parampairs.Add("player", "1");
//parampairs.Add("quality", "3");
//string param = GetSign(parampairs);
string final_param = "";
foreach (var aparam in parampairs)
{
if (aparam.Value == null || aparam.Key == "appsec") continue;
if (final_param != "") final_param += "&";
final_param += aparam.Key + "=" + aparam.Value;
}
using (var md5 = MD5.Create())
{
string hashed = BitConverter.ToString(md5.ComputeHash(Encoding.ASCII.GetBytes(final_param + parampairs["appsec"]))).Replace("-", "").ToLower();
final_param += "&sign=" + hashed;
}
string html = GetHtml("http://interface.bilibili.com/playurl?" + final_param);
if (!html.Contains("<result>su"))
{
Log.Error("FLV地址获取失败! - CID:" + cid);
return null;
}
byte[] byteArray = Encoding.UTF8.GetBytes(html);
MemoryStream stream = new MemoryStream(byteArray);
XElement xe = XElement.Load(stream);
var t = xe.Elements("url");
IEnumerable<string> elements = from ele in xe.Descendants("url") //where ele.Name == "url"
select ele.Value;
Log.Debug("获取到下载地址:" + elements.ToArray()[0]);
return elements.ToArray()[0];
}