blogjava's web log

blogjava's web log
...

关于视频播客flv地址下载

 现在视频博客满天飞,你是否和我一样,当看到一个好的视频节目想把他下载下来,留着慢慢欣赏呢?但有的播客网站比较狡猾,不是一般的人压根就找不到他的地址。
   于是我为了方便,想自己写个找源视频flv地址,但一个一个网站的分析他的html源代码来处理,不仅效率不高,人家在服务器一改,你的压根也就没有用了。不知道那位高人有什么好的解决办法?能高效的分析出播客视频的flv源地址?
 
  我说说我的2 个笨方法,也是可以找到他的源地址的。

1.用这2 个工具 charles(http://www.xk72.com/charles/) 和 (fiddler)http://www.fiddlertool.com/Fiddler/ 一个是java写的,一个.net写的。他们都是用来监视http请求的。不管播客网站藏的多深,都能够找的到。我开始想用net来调用 fiddler类库,自己再封装一下,如果成功了,那基本上所以的博客网站的视频地址都能找到,不用一个一个的去分析他们的html源代码了~ 但俺比教笨,现在还没有搞定~

2:那只能用死办法。分析html代码。我写了一个分析土豆56 地址的。调这个方法。返回 flv地址.
  小提示:(这只是个测试,代码质量相当的差,你也别太在意 :)免的又有人大骂垃圾了~ )

 private static readonly string tudou = "http://{0}.tudou.com/flv/00{1}/{2}/{3}/{4}.flv";
 
private static readonly string v56="http://{0}/flvdownload/{1}/{2}/{3}@56.com_56flv_{4}.flv";

 分析土豆网视频

        /// <summary>
        
/// 分析土豆视频地址
        
/// </summary>
        
/// <param name="url">传入的地址如:http://www.tudou.com/programs/view/rpVqBgWWHmg/</param>
        
/// <returns>返回视频地址 视频最终地址:http://player0005.tudou.com/flv/003/866/012/3866012.flv</returns>
        public string ParseTudou(string url)
        {
            
char[] temp = null;
            
string  strId ="";
            
if (url.IndexOf('#'> 0)
            {
                strId 
= url.Substring(url.IndexOf('#'));
                temp 
= strId.ToCharArray();
            }
            
else
            {
                Normalize(
ref url);
                
string htmlSource = GetHtmlSource(url);
                strId 
= htmlSource.Substring(htmlSource.IndexOf("var iid=")+87);
                 temp 
= strId.ToCharArray();
            }
            
return string.Format(tudou, "player", temp[0], temp[1+ temp[2+ temp[3], temp[4+ temp[5+ temp[6], strId);
        }

分析http://www.56.com

      /// <summary>
      
/// 分析http://www.56.com
      
/// </summary>
      
/// <param name="url"></param>
      
/// <returns></returns>
        public string  Parse56(string url)
        {
           
string htmlSource=GetHtmlSource(url);
           
int start=htmlSource.IndexOf("swfUrl");
           
if (start<=0)
           {
               System.Diagnostics.Debug.Assert(
false"start 0");
               
return "";
           }
           
int length=htmlSource.Substring(start).IndexOf(";");
           
//array[6]=totaltimes
            string swfUrl = htmlSource.Substring(start, length);
            
string[] array=swfUrl.Split(new char[]{'&'});
            
for (int i = 0; i < array.Length; i++)
            {
                array[i] 
= array[i].Substring(array[i].IndexOf('='+ 1);
            }
            StringBuilder sb 
= new StringBuilder();
            
return string.Format(v56, array[1], array[2], array[3], array[4], array[5]);
        }

公共方法

        /// <summary>
        
/// 得到html网页
        
/// </summary>
        
/// <param name="strurl"></param>
        
/// <returns></returns>
        private  string GetHtmlSource(string strurl)
        {
            
string htmlSource="";
            
try
            {
                Normalize(
ref strurl);
                Uri url 
= new Uri(strurl);
                HttpWebRequest request 
= (HttpWebRequest)WebRequest.Create(url);
                HttpWebResponse response 
= (HttpWebResponse)request.GetResponse();
                Stream stream 
= response.GetResponseStream();
                StreamReader sr 
= new StreamReader(stream);
                htmlSource 
= sr.ReadToEnd();
           
            }
            
catch (Exception ex)
            {
                System.Diagnostics.Debug.Assert(
false, ex.Message);
            }
            
return htmlSource;
        }
        
private void Normalize(ref string url)
        {
            
if (url.StartsWith("http://"== false)
                url 
= "http://" + url;
            
if (url.IndexOf("/"8== -1)
                url 
+= '/';
        }



得到了flv地址,写个类下载就容易多了。看看这个http://www.codeproject.com/useritems/filedownloader.asp
都给封装好了。完全可以用的上~
地址和下载都搞定了。那就还差个 flv播放器了。看看这个 http://www.codeproject.com/cs/media/flashexternalapi.asp
人家也有教咱们怎么做了。凑合这用用吧~


//像第2种方法样一个网站一个网站的去分析~ 我是没这精力~ 看样子还是要在 (fiddler)上下点功夫~ 欢迎指点交流~

posted on 2007-01-11 09:48 record java and net 阅读(2666) 评论(2)  编辑  收藏 所属分类: dot net相关

评论

# re: 关于视频播客flv地址下载 2008-03-18 16:36 CODE 小弟

大哥有没有优酷的FLV视频分析源码。急需要啊。我qq:175241929.
小弟在这里叩谢了。  回复  更多评论   

# re: 关于视频播客flv地址下载 2009-02-27 14:55 huzling

楼主,fiddler的类库在使用时,fiddler是不是也要运行着?  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

常用链接

留言簿(44)

新闻档案

2.动态语言

3.工具箱

9.文档教程

友情链接

搜索

最新评论