示例#1
0
        public static List <WebCache_CrossRef_AniDB_Provider> BestProvider(this List <WebCache_CrossRef_AniDB_Provider> list, bool prefer_user = false)
        {
            if (list == null || list.Count == 0)
            {
                return(new List <WebCache_CrossRef_AniDB_Provider>());
            }
            if (prefer_user)
            {
                List <WebCache_CrossRef_AniDB_Provider> bst = list.Where(a => a.Type == WebCache_ReliabilityType.User).ToList();
                if (bst != null)
                {
                    return(bst);
                }
            }
            WebCache_CrossRef_AniDB_Provider best = list.FirstOrDefault(a => a.Type == WebCache_ReliabilityType.AdminVerified);

            if (best == null)
            {
                best = list.FirstOrDefault(a => a.Type == WebCache_ReliabilityType.ModeratorVerified);
            }
            if (best == null)
            {
                best = list.FirstOrDefault(a => a.Type == WebCache_ReliabilityType.User);
            }
            if (best == null)
            {
                best = list.OrderByDescending(a => a.PopularityCount).First();
            }
            return(list.Where(a => a.AniDBUserId == best.AniDBUserId).ToList());
        }
示例#2
0
 public bool AddCrossRef_AniDB_Provider(WebCache_CrossRef_AniDB_Provider cross, bool approve)
 {
     return(WrapAuthentication((token) =>
     {
         cclient.AddProvider(cross, token, approve);
     }));
 }
示例#3
0
        public static WebCache_CrossRef_AniDB_Provider ToWebCache(this  SVR_CrossRef_AniDB_Provider pr)
        {
            WebCache_CrossRef_AniDB_Provider w = new WebCache_CrossRef_AniDB_Provider();

            w.CrossRefID           = pr.CrossRefID;
            w.AnimeID              = pr.AnimeID;
            w.CrossRefSource       = pr.CrossRefSource;
            w.CrossRefType         = pr.CrossRefType;
            w.EpisodesOverrideData = pr.EpisodesOverrideData;
            w.IsAdditive           = pr.IsAdditive;
            return(w);
        }
示例#4
0
        public static void LinkAniDBTvDBFromWebCache(WebCache_CrossRef_AniDB_Provider cache)
        {
            // check if we have this information locally
            // if not download it now
            int         tvDBID   = int.Parse(cache.CrossRefID);
            TvDB_Series tvSeries = Repo.Instance.TvDB_Series.GetByTvDBID(tvDBID);

            if (tvSeries == null)
            {
                tvSeries = Task.Run(async() => await GetSeriesInfoOnlineAsync(tvDBID, true)).GetAwaiter().GetResult();
            }
            using (var upd = Repo.Instance.CrossRef_AniDB_Provider.BeginAddOrUpdate(() => Repo.Instance.CrossRef_AniDB_Provider.GetByAnimeIdAndProvider(CrossRefType.TvDB, cache.AnimeID, cache.CrossRefID)))
            {
                upd.Entity.CrossRefSource       = CrossRefSource.WebCache;
                upd.Entity.AnimeID              = cache.AnimeID;
                upd.Entity.CrossRefID           = cache.CrossRefID;
                upd.Entity.CrossRefType         = CrossRefType.TvDB;
                upd.Entity.EpisodesOverrideData = cache.EpisodesOverrideData;
                upd.Entity.IsAdditive           = cache.IsAdditive;
                upd.Commit();
            }
        }