/// <summary> /// 抽取网页真实视频流地址 /// </summary> /// <param name="url">待抽取的网页地址</param> /// <returns>视频流的地址</returns> /// <exception cref="SWFExtractorNS.InvalidURLException">非法URL</exception> /// <exception cref="SWFExtractorNS.DomainNotSupportedException">域不支持</exception> public static Media Extract(String url) { try { String domain = ""; string youGetDomain = YouGetCommon.Url_to_key(url); try { domain = HTTPHelper.ParseDomain(url); } catch (Exception e) { Console.Write(e.Message); } Console.WriteLine("-------------------------------------------------------------"); if (domain == null || domain.Equals("") || extractors.ContainsKey(youGetDomain)) { domain = youGetDomain; } if (domain == null) { throw new InvalidURLException(url); } if (!extractors.ContainsKey(domain)) { int index = url.LastIndexOf('.'); if (index > 0) { String lastComponent = url.ToLower().Substring(index); if (lastComponent.CompareTo(".mp4") == 0 || lastComponent.CompareTo(".flv") == 0) { throw new DomainNotSupportedException(domain); } } HTML5Extractor extractor = new HTML5Extractor(); Media videoURL = extractor.Extract(url); if (videoURL != null) { return(videoURL); } throw new DomainNotSupportedException(domain); } else { Type extractorType = extractors[domain]; IExtractor extractor = Activator.CreateInstance(extractorType) as IExtractor; return(extractor.Extract(url)); } } catch (Exception) { return(null); } }
static SWFExtractor() { HunanTVExtractor.Register(); YunnanTVExtractor.Register(); HTML5Extractor.Register(); //YoukuExtractor.Register(); //TudouExtractor.Register(); //LetvExtractor.Register(); SohuExtractor.Register(); //IQiyiExtractor.Register(); CCTVExtractor.Register(); BallbarExtractor.Register(); YouGetExtractor.Register(); }