Пример #1
0
        public void CollectBaiduMovie(MovieInfo m, MovieRule r, string url, string Title)
        {
            string html  = Url.GetHtml(url, r.Encoding);
            Match  match = html.GetMatchGroup(r.BaiduDramaRule);

            if (match.Success && !r.BaiduDramaRule.IsNullOrEmpty() && !match.Groups["url"].Value.IsNullOrEmpty())
            {
                MovieUrlBaidu drama = new MovieUrlBaidu();
                drama.Enable     = true;
                drama.MovieID    = m.id;
                drama.MovieTitle = m.Title;
                drama.Title      = Title.IsNull(match.Groups["title"].Value);
                drama.UpdateTime = DateTime.Now;
                drama.Url        = match.Groups["url"].Value;

                using (kuaiboyingshiEntities ent = new kuaiboyingshiEntities())
                {
                    var dramas = (from l in ent.MovieUrlBaidu where l.MovieID == m.id && l.MovieTitle == drama.Title select l).ToList();
                    if (dramas.Count == 0)
                    {
                        ent.AddToMovieUrlBaidu(drama);
                        ent.SaveChanges();
                    }
                }
            }
            else
            {
                Match m_source = html.GetMatchGroup(r.DramaPageBaiduRule);
                if (m_source.Success)
                {
                    CollectSources(r, m_source.Groups["source"].Value.AppendToDomain(url), m);
                }
            }
        }
Пример #2
0
 /// <summary>
 /// 根据名称获取类
 /// </summary>
 /// <param name="name"></param>
 /// <returns></returns>
 public Class GetClassByName(string name)
 {
     using (kuaiboyingshiEntities ent = new kuaiboyingshiEntities())
     {
         w("根据名称获取类");
         var classes = (from l in ent.Class where l.ClassName == name && l.ModelID == 6 select l).ToList();
         if (classes.Count == 0)
         {
             Class cls = new Class()
             {
                 ModelID   = 6,
                 Alter     = name,
                 AutoAudt  = true,
                 ClassName = name,
                 ParentID  = 0
             };
             ent.AddToClass(cls);
             w(string.Format("新增类:{0} ID为:{1}", cls.ClassName, cls.ID));
             return(cls);
         }
         else
         {
             w(string.Format("得到ID:{0}", classes.FirstOrDefault().ID));
             return(classes.FirstOrDefault());
         }
     }
 }
Пример #3
0
        public void CollectSources(MovieRule r, string url, MovieInfo m)
        {
            white();
            w("打开资源文件");
            string html = Url.GetHtml(url, r.Encoding);

            w("分析资源内容");
            var dramas = CollectDramas(html, m.id);

            dramas = dramas.OrderBy(p => p.Title).ToList();

            w(string.Format("得到{0}个资源", dramas.Count));
            using (kuaiboyingshiEntities ent = new kuaiboyingshiEntities())
            {
                foreach (var drama in dramas)
                {
                    if (drama.Type == "baidu")
                    {
                        ent.AddToMovieUrlBaidu(new MovieUrlBaidu()
                        {
                            Enable     = true,
                            MovieID    = m.id,
                            MovieTitle = m.Title,
                            Title      = drama.Title,
                            UpdateTime = DateTime.Now,
                            Url        = drama.Url
                        });
                    }
                    else
                    {
                        ent.AddToMovieUrlKuaib(new MovieUrlKuaib()
                        {
                            Enable     = true,
                            MovieID    = m.id,
                            MovieTitle = m.Title,
                            Title      = drama.Title,
                            UpdateTime = DateTime.Now,
                            Url        = drama.Url
                        });
                    }
                    m.UpdateTime     = DateTime.Now;
                    m.LastDramaTitle = drama.Title;
                    w("保存");
                    ent.SaveChanges();
                }
                w("保存");
                ent.SaveChanges();
            }
        }
Пример #4
0
        public void CollectSources(MovieRule r, string url, MovieInfo m)
        {
            string html = Url.GetHtml(url, r.Encoding);

            var dramas = CollectDramas(html, m.id);


            using (kuaiboyingshiEntities ent = new kuaiboyingshiEntities())
            {
                foreach (var drama in dramas)
                {
                    if (drama.Type == "baidu")
                    {
                        ent.AddToMovieUrlBaidu(new MovieUrlBaidu()
                        {
                            Enable     = true,
                            MovieID    = m.id,
                            MovieTitle = m.Title,
                            Title      = drama.Title,
                            UpdateTime = DateTime.Now,
                            Url        = drama.Url
                        });
                    }
                    else
                    {
                        ent.AddToMovieUrlKuaib(new MovieUrlKuaib()
                        {
                            Enable     = true,
                            MovieID    = m.id,
                            MovieTitle = m.Title,
                            Title      = drama.Title,
                            UpdateTime = DateTime.Now,
                            Url        = drama.Url
                        });
                    }
                    m.UpdateTime     = DateTime.Now;
                    m.LastDramaTitle = drama.Title;
                }
                ent.SaveChanges();
            }
        }
Пример #5
0
        public void CollectKuaiboMovie(MovieInfo m, MovieRule r, string url, string Title)
        {
            blue();

            w(string.Format("打开《{0}》-({1})快播播放页面", m.Title, Title));
            string html  = Url.GetHtml(url, r.Encoding);
            Match  match = html.GetMatchGroup(r.KuaibDramaRule);

            if (match.Success && !r.KuaibDramaRule.IsNullOrEmpty())
            {
                w("得到资源地址");
                MovieUrlKuaib drama = new MovieUrlKuaib();
                drama.Enable     = true;
                drama.MovieID    = m.id;
                drama.MovieTitle = m.Title;
                drama.Title      = Title.IsNull(match.Groups["title"].Value);
                drama.UpdateTime = DateTime.Now;
                drama.Url        = match.Groups["url"].Value;

                using (kuaiboyingshiEntities ent = new kuaiboyingshiEntities())
                {
                    var dramas = (from l in ent.MovieUrlKuaib where l.MovieID == m.id && l.MovieTitle == drama.Title select l).ToList();
                    if (dramas.Count == 0)
                    {
                        ent.AddToMovieUrlKuaib(drama);
                        ent.SaveChanges();
                    }
                }
            }
            else
            {
                Match m_source = html.GetMatchGroup(r.DramaPageKuaibRule);
                if (m_source.Success)
                {
                    CollectSources(r, m_source.Groups["source"].Value.AppendToDomain(url), m);
                }
            }
        }
Пример #6
0
 /// <summary>
 /// 根据名称获取类
 /// </summary>
 /// <param name="name"></param>
 /// <returns></returns>
 public Class GetClassByName(string name)
 {
     using (kuaiboyingshiEntities ent = new kuaiboyingshiEntities())
     {
         var classes = (from l in ent.Class where l.ClassName == name && l.ModelID == 6 select l).ToList();
         if (classes.Count == 0)
         {
             Class cls = new Class()
             {
                 ModelID   = 6,
                 Alter     = name,
                 AutoAudt  = true,
                 ClassName = name,
                 ParentID  = 0
             };
             ent.AddToClass(cls);
             return(cls);
         }
         else
         {
             return(classes.FirstOrDefault());
         }
     }
 }
Пример #7
0
        public void GetMovieInfo(MovieRule r, MovieInfo m, string InfoUrl)
        {
            string html = Url.GetHtml(InfoUrl, r.Encoding);

            using (kuaiboyingshiEntities ent = new kuaiboyingshiEntities())
            {
                var movies = (from l in ent.MovieInfo where l.Title == m.Title select l).ToList();
                if (movies.Count == 0)
                {
                    Match match = html.GetMatchGroup(r.InfoRule);
                    if (!match.Success)
                    {
                        return;
                    }

                    m.ClassName      = m.ClassName.IsNull(match.Groups["class"].Value).IsNull("其他");
                    m.Title          = match.Groups["title"].Value;
                    m.Location       = m.Title.IsNull(match.Groups["location"].Value);
                    m.PublicYear     = m.PublicYear.IsNull(match.Groups["publicyear"].Value).IsNull("2012");;
                    m.Actors         = m.Actors.IsNull(match.Groups["actors"].Value);
                    m.Director       = m.Director.IsNull(match.Groups["director"].Value);
                    m.Info           = m.Info.IsNull(match.Groups["intro"].Value);
                    m.Intro          = m.Intro.IsNull(match.Groups["intro"].Value);
                    m.Status         = 0;
                    m.ClassID        = GetClassByName(m.ClassName).ID;
                    m.ClickCount     = 0;
                    m.DayClick       = 0;
                    m.InsertTime     = DateTime.Now;
                    m.IsMove         = false;
                    m.LastClickTime  = DateTime.Now;
                    m.LastDramaID    = 0;
                    m.LastDramaTitle = "";
                    m.MonthClick     = 0;
                    m.ReplyCount     = 0;
                    m.ScoreAvg       = 0;
                    m.ScoreTime      = 0;
                    m.StandardTitle  = StandTitle(m.Title);
                    m.Enable         = true;

                    ent.AddToMovieInfo(m);
                    ent.SaveChanges();

                    SaveFace(match.Groups["image"].Value.AppendToDomain(InfoUrl), m.id);
                    m.FaceImage = string.Format("/u/MovieFace/{0}.jpg", m.id);
                    ent.SaveChanges();
                }
                else
                {
                    m = movies.FirstOrDefault();
                }

                //获取百度和快播区域并且开始采集

                #region 百度区域
                Match m_baiduarea = html.GetMatchGroup(r.BaiduAreaRule);
                if (m_baiduarea.Success && !r.BaiduAreaRule.IsNullOrEmpty())
                {
                    Match m_drama = m_baiduarea.Groups["key"].Value.GetMatchGroup(r.BaiduDramaRule);
                    while (m_drama.Success)
                    {
                        string title   = m_drama.Groups["title"].Value;
                        string playurl = m_drama.Groups["playurl"].Value;
                        string url     = m_drama.Groups["url"].Value;

                        #region 打开播放页面处理
                        if (url.IsNullOrEmpty())
                        {
                            CollectBaiduMovie(m, r, playurl.AppendToDomain(InfoUrl), title);
                            if (!r.SourceBaiduRule.IsNullOrEmpty())
                            {
                                break;
                            }
                        }
                        #endregion

                        else
                        {
                            var dramas = (from l in ent.MovieUrlBaidu where l.MovieID == m.id && l.Title == title select l);
                            if (dramas.Count() == 0)
                            {
                                ent.AddToMovieUrlBaidu(new MovieUrlBaidu()
                                {
                                    Enable     = true,
                                    MovieID    = m.id,
                                    MovieTitle = m.Title,
                                    Title      = title,
                                    UpdateTime = DateTime.Now,
                                    Url        = url
                                });
                                m.UpdateTime = DateTime.Now;

                                ent.SaveChanges();
                            }
                        }

                        m_drama = m_drama.NextMatch();
                    }
                }
                #endregion

                #region 快播区域
                Match m_kuaiboarea = html.GetMatchGroup(r.KuaibAreaRule);
                if (m_kuaiboarea.Success && !r.KuaibAreaRule.IsNullOrEmpty())
                {
                    Match m_drama = m_kuaiboarea.Groups["key"].Value.GetMatchGroup(r.KuaibAreaRule);
                    while (m_drama.Success)
                    {
                        string title   = m_drama.Groups["title"].Value;
                        string playurl = m_drama.Groups["playurl"].Value;
                        string url     = m_drama.Groups["url"].Value;

                        #region 打开播放页面处理
                        if (url.IsNullOrEmpty())
                        {
                            CollectKuaiboMovie(m, r, playurl.AppendToDomain(InfoUrl), title);
                            if (!r.SourceKuaibRule.IsNullOrEmpty())
                            {
                                break;
                            }
                        }
                        #endregion

                        else
                        {
                            var dramas = (from l in ent.MovieUrlKuaib where l.MovieID == m.id && l.Title == title select l);
                            if (dramas.Count() == 0)
                            {
                                ent.AddToMovieUrlKuaib(new MovieUrlKuaib()
                                {
                                    Enable     = true,
                                    MovieID    = m.id,
                                    MovieTitle = m.Title,
                                    Title      = title,
                                    UpdateTime = DateTime.Now,
                                    Url        = url
                                });
                                m.UpdateTime = DateTime.Now;
                                ent.SaveChanges();
                            }
                        }

                        m_drama = m_drama.NextMatch();
                    }
                }
                #endregion
            }
        }
Пример #8
0
        /// <summary>
        /// 从source文件中分析剧集
        /// </summary>
        /// <param name="source"></param>
        /// <returns></returns>
        public List <Drama> CollectDramas(string source, int Movieid)
        {
            kuaiboyingshiEntities ent = new kuaiboyingshiEntities();

            MovieInfo mv     = (from l in ent.MovieInfo where l.id == Movieid select l).FirstOrDefault();
            var       baidu  = (from l in ent.MovieUrlBaidu where l.MovieID == Movieid select l).ToList();
            var       kuaibo = (from l in ent.MovieUrlKuaib where l.MovieID == Movieid select l).ToList();

            var result = new List <Drama>();

            source = source.UrlDecode().AsciiToNative();

            List <string> tmp = new List <string>();
            Match         m   = new Regex("((bdhd://)|(qvod://)).*?((.rmvb)|(.rm)|(.avi)|(.mp4)|(.asf)|(.wmv))+").Match(source);

            while (m.Success)
            {
                string str = m.Groups["0"].Value;
                tmp.Add(str);
                m = m.NextMatch();
            }

            foreach (string str in tmp)
            {
                string title = str.Split('|')[2].Replace(mv.Title, "");
                title = title.ToLower();
                title = Regex.Replace(title, "[a-zA-Z0-9\\.]+\\.(com|net|org|co|cn|us|hk|info|gov)", "");
                title = title.ToLower().Replace(".rmvb", "").Replace(".rm", "").Replace(".avi", "").Replace(".mp4", "").Replace(".asf", "").Replace(".wmv", "").Replace(" ", "").Replace(".", "").Replace("_", "");
                if (title.IsNumeric())
                {
                    title = string.Format("第{0}集", title);
                }
                if (title.IsNumeric())
                {
                    title = "全集";
                }
                //string title =str.Split('|')[2].ToLower().Replace(".rmvb", "").Replace(".rm", "").Replace(".avi", "").Replace(".mp4", "").Replace(".asf", "").Replace(".wmv", "").Replace(" ", "").Replace(".", "");
                string type = str.StartsWith("bdhd") ? "baidu" : "qvod";
                if (type == "baidu")
                {
                    if (baidu.Where(p => p.Title == title).Count() > 0)
                    {
                        continue;
                    }
                }
                else
                {
                    if (kuaibo.Where(p => p.Title == title).Count() > 0)
                    {
                        continue;
                    }
                }
                try
                {
                    result.Add(new Drama()
                    {
                        Title = title,
                        Url   = str,
                        Type  = type
                    });
                }
                catch { }
            }

            ent.Dispose();

            return(result);
        }
Пример #9
0
        public void GetMovieInfo(MovieRule r, MovieInfo m, string InfoUrl)
        {
            red();
            w(string.Format("打开电影《{0}》的信息页:{1}", m.Title, InfoUrl));
            string html = Url.GetHtml(InfoUrl, r.Encoding);

            using (kuaiboyingshiEntities ent = new kuaiboyingshiEntities())
            {
                string short_title = m.Title.TrimEnd('.');
                var    movies      = (from l in ent.MovieInfo where l.Title.Contains(short_title) select l).ToList();
                Match  match       = html.GetMatchGroup(r.InfoRule);
                if (movies.Count == 0)
                {
                    if (!match.Success)
                    {
                        w("这个电影无法和规则匹配\n ");
                        return;
                    }



                    m.ClassName  = m.ClassName.IsNull(match.Groups["class"].Value).IsNull("其他");
                    m.Title      = match.Groups["title"].Value;
                    m.Location   = m.Title.IsNull(match.Groups["location"].Value);
                    m.PublicYear = m.PublicYear.IsNull(match.Groups["publicyear"].Value).IsNull("2012");;
                    m.Actors     = m.Actors.IsNull(match.Groups["actors"].Value).TrimHTML();
                    m.Director   = m.Director.IsNull(match.Groups["director"].Value);
                    m.Info       = m.Info.IsNull(match.Groups["intro"].Value).Replace(r.SiteName, "");
                    m.Intro      = m.Intro.IsNull(match.Groups["intro"].Value).Replace(r.SiteName, "");

                    m.FaceImage = m.FaceImage.IsNull(match.Groups["image"].Value.AppendToDomain(InfoUrl));

                    m.Status         = 0;
                    m.ClassID        = GetClassByName(m.ClassName).ID;
                    m.ClickCount     = 0;
                    m.DayClick       = 0;
                    m.UpdateTime     = DateTime.Now;
                    m.InsertTime     = DateTime.Now;
                    m.IsMove         = false;
                    m.LastClickTime  = DateTime.Now;
                    m.LastDramaID    = 0;
                    m.LastDramaTitle = "";
                    m.MonthClick     = 0;
                    m.ReplyCount     = 0;
                    m.ScoreAvg       = 0;
                    m.ScoreTime      = 0;
                    m.StandardTitle  = StandTitle(m.Title);
                    m.Enable         = true;
                    if ((from l in ent.MovieInfo where l.Title == m.Title select l).Count() > 0)
                    {
                        w(string.Format("电影:{0}  类型:{1}  地区:{2}  年代:{3}  演员:{4}  导演:{5}", m.Title, m.ClassName, m.Location, m.PublicYear, m.Actors, m.Director));
                        ent.AddToMovieInfo(m);

                        w("保存电影信息...");
                        ent.SaveChanges();

                        if (!m.FaceImage.IsNullOrEmpty())
                        {
                            w("设置封面");

                            SaveFace(m.FaceImage, m.id);
                            m.FaceImage = string.Format("/u/MovieFace/{0}.jpg", m.id);
                            w("保存封面...");
                            ent.SaveChanges();
                        }
                    }
                }
                else
                {
                    string imageUrl = m.FaceImage.IsNull(match.Groups["image"].Value.AppendToDomain(InfoUrl));
                    m = movies.FirstOrDefault();
                    if (m.FaceImage.IsNullOrEmpty())
                    {
                        SaveFace(imageUrl, m.id);
                    }
                }



                //获取百度和快播区域并且开始采集

                #region 百度区域
                yellow();
                Match m_baiduarea = html.GetMatchGroup(r.BaiduAreaRule);
                if (m_baiduarea.Success && !r.BaiduAreaRule.IsNullOrEmpty())
                {
                    w("分析百度区域");
                    Match m_drama = m_baiduarea.Groups["key"].Value.GetMatchGroup(r.BaiduDramaRule);
                    while (m_drama.Success)
                    {
                        string title   = m_drama.Groups["title"].Value;
                        string playurl = m_drama.Groups["playurl"].Value;
                        string url     = m_drama.Groups["url"].Value;

                        #region 打开播放页面处理
                        if (url.IsNullOrEmpty())
                        {
                            CollectBaiduMovie(m, r, playurl.AppendToDomain(InfoUrl), title);
                            if (!r.SourceBaiduRule.IsNullOrEmpty())
                            {
                                break;
                            }
                        }
                        #endregion

                        else
                        {
                            var dramas = (from l in ent.MovieUrlBaidu where l.MovieID == m.id && l.Title == title select l);
                            if (dramas.Count() == 0)
                            {
                                w(string.Format("在信息页面得到地址:{0}", url));
                                ent.AddToMovieUrlBaidu(new MovieUrlBaidu()
                                {
                                    Enable     = true,
                                    MovieID    = m.id,
                                    MovieTitle = m.Title,
                                    Title      = title,
                                    UpdateTime = DateTime.Now,
                                    Url        = url
                                });
                                m.UpdateTime     = DateTime.Now;
                                m.LastDramaTitle = title;
                                w("保存");
                                ent.SaveChanges();
                            }
                        }

                        m_drama = m_drama.NextMatch();
                    }
                }
                #endregion

                #region 快播区域
                Match m_kuaiboarea = html.GetMatchGroup(r.KuaibAreaRule);
                if (m_kuaiboarea.Success && !r.KuaibAreaRule.IsNullOrEmpty())
                {
                    w("分析快播区域");
                    Match m_drama = m_kuaiboarea.Groups["key"].Value.GetMatchGroup(r.KuaibDramaRule);
                    while (m_drama.Success)
                    {
                        string title   = m_drama.Groups["title"].Value.IsNull("全集");
                        string playurl = m_drama.Groups["playurl"].Value;
                        string url     = m_drama.Groups["url"].Value;

                        #region 打开播放页面处理
                        if (url.IsNullOrEmpty())
                        {
                            CollectKuaiboMovie(m, r, playurl.AppendToDomain(InfoUrl), title);
                            if (!r.SourceKuaibRule.IsNullOrEmpty())
                            {
                                break;
                            }
                        }
                        #endregion

                        else
                        {
                            var dramas = (from l in ent.MovieUrlKuaib where l.MovieID == m.id && l.Title == title select l);
                            if (dramas.Count() == 0)
                            {
                                w(string.Format("在信息页面得到地址:{0}", url));
                                ent.AddToMovieUrlKuaib(new MovieUrlKuaib()
                                {
                                    Enable     = true,
                                    MovieID    = m.id,
                                    MovieTitle = m.Title,
                                    Title      = title,
                                    UpdateTime = DateTime.Now,
                                    Url        = url
                                });
                                m.UpdateTime     = DateTime.Now;
                                m.LastDramaTitle = title;

                                w("保存");
                                ent.SaveChanges();
                            }
                        }

                        m_drama = m_drama.NextMatch();
                    }
                }
                #endregion
            }
        }