Пример #1
0
 public YouKuCollection()
 {
     http             = new HttpHelper();
     movie_bll        = new Movie_BLL();
     player_bll       = new Player_BLL();
     douBanCollection = new DouBanCollection();
 }
Пример #2
0
 public GaoQingCollection()
 {
     http             = new HttpHelper();
     movie_bll        = new Movie_BLL();
     download_bll     = new Download_BLL();
     subtitle_bll     = new Subtitle_BLL();
     douBanCollection = new DouBanCollection();
 }
Пример #3
0
        /// <summary>
        /// 根据豆瓣ID获取该条目的详细信息
        /// </summary>
        /// <param name="doubanId"></param>
        /// <returns></returns>
        public void Action(string doubanId)
        {
            //发送请求
            var httpResult = new HttpHelper().GetHtml(new HttpItem()
            {
                URL              = "https://api.douban.com/v2/movie/subject/" + doubanId + "?apikey=" + Config_BLL.Config.Get <string>("DouBan.ApiKey"),
                Accept           = "application/json",
                ReadWriteTimeout = 1000 * 60,
                Timeout          = 1000 * 60
            });

            //判断请求是否成功
            if (httpResult.StatusCode == System.Net.HttpStatusCode.OK)
            {
                var callsSurplus = httpResult.Header["X-Ratelimit-Remaining2"].ToInt_();

                var json       = httpResult.Html;
                var doubanInfo = json.ParseJSON <Models.DouBan.Rootobject>();
                if (doubanInfo != null)
                {
                    var directors     = new List <Domain.Entity.Celebrity>();
                    var screenwriters = new List <Domain.Entity.Celebrity>();
                    var performers    = new List <Domain.Entity.Celebrity>();
                    var fragments     = new List <Domain.Entity.Preview>();
                    var tidbits       = new List <Domain.Entity.Preview>();
                    var trailers      = new List <Domain.Entity.Preview>();
                    var pictures      = new List <string>();
                    var pubdatas      = new List <Domain.Entity.PubData>();
                    var durations     = new List <Domain.Entity.Duration>();
                    doubanInfo.directors.ForEach_(m =>
                    {
                        if (!string.IsNullOrWhiteSpace(m.id) && directors.Count(c => c.DouBanID == m.id) < 1)
                        {
                            directors.Add(new Domain.Entity.Celebrity()
                            {
                                Alt      = m.alt,
                                Avatar   = m.avatars.large,
                                DouBanID = m.id,
                                Name     = m.name
                            });
                        }
                    });
                    doubanInfo.writers.ForEach_(m => {
                        if (!string.IsNullOrWhiteSpace(m.id) && screenwriters.Count(c => c.DouBanID == m.id) < 1)
                        {
                            screenwriters.Add(new Domain.Entity.Celebrity()
                            {
                                Alt      = m.alt,
                                Avatar   = m.avatars.large,
                                DouBanID = m.id,
                                Name     = m.name
                            });
                        }
                    });
                    doubanInfo.casts.ForEach_(m => {
                        if (!string.IsNullOrWhiteSpace(m.id) && performers.Count(c => c.DouBanID == m.id) < 1)
                        {
                            performers.Add(new Domain.Entity.Celebrity()
                            {
                                Alt      = m.alt,
                                Avatar   = m.avatars.large,
                                DouBanID = m.id,
                                Name     = m.name
                            });
                        }
                    });
                    doubanInfo.clips.ForEach_(m => {
                        if (!string.IsNullOrWhiteSpace(m.id) && fragments.Count(c => c.UID == m.id) < 1)
                        {
                            fragments.Add(new Domain.Entity.Preview()
                            {
                                Photo = m.medium,
                                Title = m.title,
                                UID   = m.id,
                                Video = m.resource_url
                            });
                        }
                    });
                    doubanInfo.bloopers.ForEach_(m => {
                        if (!string.IsNullOrWhiteSpace(m.id) && tidbits.Count(c => c.UID == m.id) < 1)
                        {
                            tidbits.Add(new Domain.Entity.Preview()
                            {
                                Photo = m.medium,
                                Title = m.title,
                                UID   = m.id,
                                Video = m.resource_url
                            });
                        }
                    });
                    doubanInfo.trailers.ForEach_(m => {
                        if (!string.IsNullOrWhiteSpace(m.id) && trailers.Count(c => c.UID == m.id) < 1)
                        {
                            trailers.Add(new Domain.Entity.Preview()
                            {
                                Photo = m.medium,
                                Title = m.title,
                                UID   = m.id,
                                Video = m.resource_url
                            });
                        }
                    });
                    doubanInfo.photos.ForEach_(m => {
                        if (!string.IsNullOrWhiteSpace(m.image) && pictures.Count(c => c == m.image) < 1)
                        {
                            pictures.Add(m.image);
                        }
                    });
                    doubanInfo.pubdates.ForEach_(m => {
                        var year = m.Length >= 10 ? m.Substring(0, 10) : "";
                        if (!string.IsNullOrWhiteSpace(year))
                        {
                            var plan      = m.Replace(year, "").Replace("(", "").Replace(")", "").Trim();
                            DateTime?date = year.ToDate_();
                            date          = Utils.BaseDateTime == date ? null : date;
                            if (date.HasValue && pubdatas.Count(c => c.PubDate == date && c.PubPlace == plan) < 1)
                            {
                                pubdatas.Add(new Domain.Entity.PubData()
                                {
                                    PubDate  = date.Value,
                                    PubPlace = plan
                                });
                            }
                        }
                    });
                    doubanInfo.durations.ForEach_(m => {
                        var min_str = m.IndexOf("分钟") > 0 ? m.Substring(0, m.IndexOf("分钟")) : m.Substring(0);
                        var plan    = m.Replace(min_str + (m.IndexOf("分钟") > 0 ? "分钟" : ""), "").Replace("(", "").Replace(")", "").Trim();
                        int min     = min_str.ToInt_();
                        if (min > 0 && durations.Count(c => c.LongTime == min && c.Plan == plan) < 1)
                        {
                            durations.Add(new Domain.Entity.Duration()
                            {
                                LongTime = min,
                                Plan     = plan
                            });
                        }
                    });
                    var      pubDate_str = doubanInfo.pubdate.Length >= 10 ? doubanInfo.pubdate.Substring(0, 10) : "";
                    DateTime?pubDate     = pubDate_str.ToDate_();
                    pubDate = pubDate == Utils.BaseDateTime ? null : pubDate;
                    var pubdataObj = pubdatas.FirstOrDefault();
                    if (!pubDate.HasValue && pubdataObj != null)
                    {
                        pubDate = pubdataObj.PubDate;
                    }
                    decimal?score = doubanInfo.rating.average;
                    score = score == 0 ? null : score;
                    int?episodes_count = doubanInfo.episodes_count.ToIntOrNull_();
                    var movie          = new Domain.Entity.Movie()
                    {
                        Aka           = doubanInfo.aka.ToList(),
                        Describe      = doubanInfo.summary.Replace("©豆瓣", ""),
                        RatingsCount  = doubanInfo.ratings_count,
                        Poster        = doubanInfo.images.large,
                        ReviewsCount  = doubanInfo.reviews_count,
                        ScheduleUrl   = doubanInfo.schedule_url,
                        Score         = score,
                        Alt           = doubanInfo.alt,
                        ShareUrl      = doubanInfo.share_url,
                        WebSite       = doubanInfo.website,
                        SeasonsCount  = doubanInfo.seasons_count,
                        WishCount     = doubanInfo.wish_count,
                        Year          = doubanInfo.year.ToIntOrNull_(),
                        OriginalTitle = doubanInfo.original_title,
                        Name          = doubanInfo.title,
                        CollectCount  = doubanInfo.collect_count,
                        Family        = doubanInfo.subtype == "movie" ? Domain.Enum.Family.电影 : Domain.Enum.Family.电视剧,
                        MobileUrl     = doubanInfo.mobile_url,
                        EpisodesCount = episodes_count,
                        CommentsCount = doubanInfo.comments_count,
                        DouBanSite    = doubanInfo.douban_site,
                        DoCount       = doubanInfo.do_count,
                        DouBanID      = doubanInfo.id,
                        Categorys     = doubanInfo.genres.ToList(),
                        Countries     = doubanInfo.countries.ToList(),
                        CurrentSeason = doubanInfo.current_season,
                        Languages     = doubanInfo.languages.ToList(),
                        Tags          = doubanInfo.tags.ToList(),
                        Directors     = directors,
                        Screenwriters = screenwriters,
                        Performers    = performers,
                        Fragments     = fragments,
                        Tidbits       = tidbits,
                        Trailers      = trailers,
                        PubDate       = pubDate,
                        Pictures      = pictures,
                        PubDatas      = pubdatas,
                        Durations     = durations
                    };
                    var movie_bll = new Movie_BLL();
                    int?movieId   = movie_bll.GetMovieIDByDouBanID(doubanInfo.id);
                    if (!movieId.HasValue)
                    {
                        movieId = movie_bll.ThingInsertMovie(movie);
                    }
                    else
                    {
                        //更新
                    }
                }
            }
        }
Пример #4
0
 public DouBanCollection()
 {
     http      = new HttpHelper();
     movie_bll = new Movie_BLL();
 }