获取腾讯视频的动态地址


今天帮同事看了一下小程序的东西,发现腾讯视频的地址是随时改变的,如果放置一个固定地址,第二天就不能访问了。查了一下网上的,都只是一些思路,这里是自己写的一个获取地址代码,觉得有哪里需要改动欢迎评价。

下面就直接贴代码了

    /// <summary>
        /// 获取视频地址xml
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public string geturl(string str)
        {
            string newurl = "http://vv.video.qq.com/getinfo?vids=" + str + "&platform=101001&charge=0&otype=xml";
            WebRequest wRequest = WebRequest.Create(newurl);
            wRequest.Method = "POST";
            wRequest.ContentType = "application/x-www-form-urlencoded;charset=utf-8 ";
            WebResponse wResponse = wRequest.GetResponse();
            Stream stream = wResponse.GetResponseStream();
            StreamReader reader = new StreamReader(stream, System.Text.Encoding.UTF8);
            string result = reader.ReadToEnd();   //url返回的值  
            reader.Close();
            wResponse.Close();
            return result;
        }
        public JsonResult getVid(string url)//url是原来没有解析的地址,比如:https://v.qq.com/x/page/s03648e6b6h.html
        {
            string str = url.Substring(24, 11); //这里是截取vid
            string jsonstr= geturl(str);

//把xml字符串的我们把前面的QZOutputJson=跟最后的 ;过滤掉
            if (jsonstr.Contains("QZOutputJson="))
            {
                jsonstr = jsonstr.Replace("QZOutputJson=","");
            }
            if (jsonstr.Contains(";"))
            {
                jsonstr = jsonstr.Replace(";", "");
            }
            XmlDocument xmlDoc = ConvertStringToXmlDocument(jsonstr);
            XmlNodeList rootul = xmlDoc.SelectNodes("//ui");//获取ui下的子节点List
            string myurl = "";
            foreach (XmlNode item in rootul)
            {
                XmlNode townode = item.SelectSingleNode("vt");
                if (townode.InnerText == "106")
                {
                    myurl = (item.SelectSingleNode("url")).InnerText;
                    break;
                }

            }
            if (myurl=="")
            {
                myurl= System.Configuration.ConfigurationSettings.AppSettings["vedioUrl"];//每次刷新都会改变,可能获取不到值,所以把webconfig放入一个固定值,这个值可以上次获取到就把它加入webconfig
            }
            XmlNode rootvi = xmlDoc.SelectSingleNode("//vi");
            string myfn = (rootvi.SelectSingleNode("fn")).InnerText;
            string myfvkey = (rootvi.SelectSingleNode("fvkey")).InnerText;
            string tourl = myurl + myfn + "?vkey=" + myfvkey;
            return Json(tourl, JsonRequestBehavior.AllowGet);
        }
        /// <summary>  
        /// 将字符串(符合xml格式)转换为XmlDocument  
        /// </summary>  
        /// <param name="xmlString">XML格式字符串</param>  
        /// <returns></returns>  
        public XmlDocument ConvertStringToXmlDocument(string xmlString)
        {
            XmlDocument document = new XmlDocument();
            document.LoadXml(xmlString);
            return document;
        }

 

//下面是xml原文 可格式化后与上面代码比对

<root><dltype>1</dltype><exem>0</exem><fl><cnt>2</cnt><fi><id>100701</id><name>msd</name><lmt>0</lmt><sb>1</sb><cname>标清;(270P)</cname><br>29</br><drm>0</drm><video>1</video><audio>1</audio><fs>1483986</fs><sl>1</sl></fi><fi><id>2</id><name>mp4</name><lmt>0</lmt><sb>1</sb><cname>高清;(480P)</cname><br>34</br><drm>0</drm><video>1</video><audio>1</audio><fs>3034343</fs><sl>0</sl></fi></fl><hs>0</hs><ip>222.247.209.43</ip><ls>0</ls><preview>49</preview><s>o</s><sfl><cnt>0</cnt></sfl><tm>1508400146</tm><vl><cnt>1</cnt><vi><br>29</br><ch>0</ch><cl><fc>0</fc><keyid>s03648e6b6h.100701</keyid></cl><ct>21600</ct><drm>0</drm><dsb>0</dsb><fmd5>85861493a7ffd203508605b83bf4ffb7</fmd5><fn>s03648e6b6h.m701.mp4</fn><fs>1483986</fs><fst>5</fst><fvkey>364452075FDD0EDD71265437D49D5A1852D25879C4AA37E6842C591116F69D6018F5D7CAEDAF2935F57939795BFC19C4A26D15280E9AD2EA78EB062AB24F638C2A121A1C8E6A89456FFB4944D9E7D095AB5A0C84A46A09077035C8E17C82033ED7987F3E002E8A0F</fvkey><head>0</head><hevc>0</hevc><iflag>0</iflag><level>0</level><lnk>s03648e6b6h</lnk><logo>1</logo><mst>8</mst><share>1</share><sp>0</sp><st>2</st><tail>0</tail><td>49.2</td><ti>新品上市宣传片</ti><type>3</type><ul><ui><url>http://ugcbsy.qq.com/flv/55/19/</url><vt>136</vt><dtc>0</dtc><dt>2</dt></ui><ui><url>http://124.232.155.153/vhot2.qqvideo.tc.qq.com/AVHybXzSNNaflXig41L4OlnmporSxXpLdrm5Oz6NTvWc/</url><vt>200</vt><dtc>0</dtc><dt>2</dt></ui><ui><url>http://ugcws.video.gtimg.com/flv/55/19/</url><vt>106</vt><dtc>0</dtc><dt>2</dt></ui><ui><url>http://video.dispatch.tc.qq.com/</url><vt>0</vt><dtc>0</dtc><dt>2</dt></ui></ul><vh>160</vh><vid>s03648e6b6h</vid><videotype>0</videotype><vr>0</vr><vst>2</vst><vw>480</vw><wh>3</wh><wl/></vi></vl></root>


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM