Ejemplo n.º 1
0
        public override void ProcessCommand()
        {
            foreach (int section in ServerSettings.Plex_Libraries)
            {
                var allSeries = PlexHelper.GetForUser(_jmmuser).GetPlexSeries(section);
                foreach (PlexSeries series in allSeries)
                {
                    foreach (PlexEpisode episode in series.Episodes)
                    {
                        var            animeEpisode = episode.AnimeEpisode;
                        var            isWatched    = episode.WatchCount > 0;
                        var            lastWatched  = FromUnixTime(episode.LastWatched);
                        SVR_VideoLocal video        = animeEpisode?.GetVideoLocals()?.FirstOrDefault();
                        if (video == null)
                        {
                            continue;
                        }
                        var alreadyWatched = animeEpisode.GetVideoLocals()
                                             .Where(x => x.GetAniDBFile() != null)
                                             .Any(x => x.GetAniDBFile().IsWatched > 0);

                        if (alreadyWatched && !isWatched)
                        {
                            episode.Scrobble();
                        }
                        if (isWatched && !alreadyWatched)
                        {
                            video.ToggleWatchedStatus(true, true, lastWatched, true, true,
                                                      _jmmuser.JMMUserID, true, true);
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public override void ProcessCommand()
        {
            logger.Info($"Syncing watched videos for: {_jmmuser.Username}, if nothing happens make sure you have your libraries configured in Shoko.");

            foreach (var section in PlexHelper.GetForUser(_jmmuser).GetDirectories())
            {
                if (!ServerSettings.Instance.Plex.Libraries.Contains(section.Key))
                {
                    continue;
                }

                var allSeries = ((SVR_Directory)section).GetShows();
                foreach (var series in allSeries)
                {
                    var episodes = ((SVR_PlexLibrary)series)?.GetEpisodes()?.Where(s => s != null);
                    if (episodes == null)
                    {
                        continue;
                    }
                    foreach (var ep in episodes)
                    {
                        var episode = (SVR_Episode)ep;

                        var animeEpisode = episode.AnimeEpisode;
                        if (animeEpisode == null)
                        {
                            continue;
                        }
                        var userRecord  = animeEpisode.GetUserRecord(_jmmuser.JMMUserID);
                        var isWatched   = episode.ViewCount != null && episode.ViewCount > 0;
                        var lastWatched = userRecord?.WatchedDate;
                        if (userRecord?.WatchedCount == 0 && isWatched && episode.LastViewedAt != null)
                        {
                            lastWatched = FromUnixTime((long)episode.LastViewedAt);
                        }

                        SVR_VideoLocal video = animeEpisode.GetVideoLocals()?.FirstOrDefault();
                        if (video == null)
                        {
                            continue;
                        }
                        var alreadyWatched = animeEpisode.GetVideoLocals()
                                             .Where(x => x.GetAniDBFile() != null)
                                             .Any(x => x.GetAniDBFile().IsWatched > 0);

                        if (alreadyWatched && !isWatched)
                        {
                            episode.Scrobble();
                        }

                        if (isWatched && !alreadyWatched)
                        {
                            video.ToggleWatchedStatus(true, true, lastWatched, true, _jmmuser.JMMUserID, true, true);
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
 public static PlexHelper GetForUser(JMMUser user)
 {
     if (Cache.TryGetValue(user.JMMUserID, out PlexHelper helper))
     {
         return(helper);
     }
     Cache.Add(user.JMMUserID, helper = new PlexHelper(user));
     return(helper);
 }
Ejemplo n.º 4
0
        public override void ProcessCommand()
        {
            foreach (var section in PlexHelper.GetForUser(_jmmuser).GetDirectories().Where(d => ServerSettings.Plex_Libraries.Contains(d.Key)))
            {
                var allSeries = ((SVR_Directory)section).GetShows();
                foreach (var series in allSeries)
                {
                    var episodes = ((SVR_PlexLibrary)series)?.GetEpisodes();
                    if (episodes == null)
                    {
                        continue;
                    }
                    foreach (var ep in episodes)
                    {
                        var episode = (SVR_Episode)ep;

                        var animeEpisode = episode.AnimeEpisode;
                        if (animeEpisode == null)
                        {
                            continue;
                        }
                        var userRecord  = animeEpisode.GetUserRecord(_jmmuser.JMMUserID);
                        var isWatched   = episode.ViewCount > 0;
                        var lastWatched = userRecord.WatchedDate;
                        if (userRecord.WatchedCount == 0 && isWatched && episode.LastViewedAt != null)
                        {
                            lastWatched = FromUnixTime((long)episode.LastViewedAt);
                        }
                        SVR_VideoLocal video = animeEpisode.GetVideoLocals()?.FirstOrDefault();
                        if (video == null)
                        {
                            continue;
                        }
                        var alreadyWatched = animeEpisode.GetVideoLocals()
                                             .Where(x => x.GetAniDBFile() != null)
                                             .Any(x => x.GetAniDBFile().IsWatched > 0);

                        if (alreadyWatched && !isWatched)
                        {
                            episode.Scrobble();
                        }

                        if (isWatched && !alreadyWatched)
                        {
                            video.ToggleWatchedStatus(true, true, lastWatched, true,
                                                      _jmmuser.JMMUserID, true, true);
                        }
                    }
                }
            }
        }