Exemplo n.º 1
0
 public AniDB_File GetByFileID(int fileID)
 {
     using (var session = JMMService.SessionFactory.OpenSession())
     {
         AniDB_File cr = session
                         .CreateCriteria(typeof(AniDB_File))
                         .Add(Restrictions.Eq("FileID", fileID))
                         .UniqueResult <AniDB_File>();
         return(cr);
     }
 }
Exemplo n.º 2
0
        private static int CompareSourceTo(AniDB_File newFile, AniDB_File oldFile)
        {
            if (string.IsNullOrEmpty(newFile.File_Source) || string.IsNullOrEmpty(oldFile.File_Source))
            {
                return(0);
            }
            int newIndex = Array.IndexOf(Settings._sources, newFile.File_Source);
            int oldIndex = Array.IndexOf(Settings._sources, oldFile.File_Source);

            return(newIndex.CompareTo(oldIndex));
        }
Exemplo n.º 3
0
 public void Save(AniDB_File obj)
 {
     using (var session = WebCache.SessionFactory.OpenSession())
     {
         // populate the database
         using (var transaction = session.BeginTransaction())
         {
             session.SaveOrUpdate(obj);
             transaction.Commit();
         }
     }
 }
Exemplo n.º 4
0
 public AniDB_File GetByHashAndFileSize(string hash, long fsize)
 {
     using (var session = JMMService.SessionFactory.OpenSession())
     {
         AniDB_File cr = session
                         .CreateCriteria(typeof(AniDB_File))
                         .Add(Restrictions.Eq("Hash", hash))
                         .Add(Restrictions.Eq("FileSize", fsize))
                         .UniqueResult <AniDB_File>();
         return(cr);
     }
 }
Exemplo n.º 5
0
        public static void Init()
        {
            JMMUser.Populate();
            CloudAccount.Populate();
            ImportFolder.Populate();
            AniDB_Anime.Populate();
            AniDB_Episode.Populate();
            AniDB_File.Populate();
            AniDB_Anime_Title.Populate();
            AniDB_Anime_Tag.Populate();
            AniDB_Tag.Populate();
            CustomTag.Populate();
            CrossRef_CustomTag.Populate();
            CrossRef_File_Episode.Populate();
            VideoLocalPlace.Populate();
            VideoLocal.Populate();
            VideoLocalUser.Populate();
            GroupFilter.Populate();
            AnimeEpisode.Populate();
            AnimeEpisode_User.Populate();
            AnimeSeries.Populate();
            AnimeSeries_User.Populate();
            AnimeGroup.Populate();
            AnimeGroup_User.Populate();

            // Update Contracts if necessary
            JMMUser.RegenerateDb();
            CloudAccount.RegenerateDb();
            ImportFolder.RegenerateDb();
            AniDB_Anime.RegenerateDb();
            AniDB_Episode.RegenerateDb();
            AniDB_File.RegenerateDb();
            AniDB_Anime_Title.RegenerateDb();
            AniDB_Anime_Tag.RegenerateDb();
            AniDB_Tag.RegenerateDb();
            CustomTag.RegenerateDb();
            CrossRef_CustomTag.RegenerateDb();
            CrossRef_File_Episode.RegenerateDb();
            VideoLocalPlace.RegenerateDb();
            VideoLocal.RegenerateDb();
            VideoLocalUser.RegenerateDb();
            AnimeEpisode.RegenerateDb();
            AnimeEpisode_User.RegenerateDb();
            AnimeSeries.RegenerateDb();
            AnimeSeries_User.RegenerateDb();
            AnimeGroup.RegenerateDb();
            AnimeGroup_User.RegenerateDb();

            GroupFilter.RegenerateDb();
            GroupFilter.PostProcess();
            CleanUpMemory();
        }
Exemplo n.º 6
0
        /*
         * public static WebCache_CrossRef_AniDB_Other_Request ToRequest(this CrossRef_AniDB_Other c)
         * {
         *  return new WebCache_CrossRef_AniDB_Other_Request
         *  {
         *      CrossRef_AniDB_OtherID = c.CrossRef_AniDB_OtherID,
         *      AnimeID = c.AnimeID,
         *      CrossRefID = c.CrossRefID,
         *      CrossRefSource = c.CrossRefSource,
         *      CrossRefType = c.CrossRefType,
         *  };
         * }
         */
        public static WebCache_FileHash ToHashRequest(this AniDB_File anifile)
        {
            WebCache_FileHash r = new WebCache_FileHash
            {
                ED2K     = anifile.Hash,
                CRC32    = anifile.CRC,
                MD5      = anifile.MD5,
                SHA1     = anifile.SHA1,
                FileSize = anifile.FileSize
            };

            return(r);
        }
Exemplo n.º 7
0
        public static void Send_AniDB_File(AniDB_File data)
        {
            if (!ServerSettings.WebCache_AniDB_File_Send)
            {
                return;
            }


            string            uri = string.Format("http://{0}/AddAniDB_File.aspx", ServerSettings.WebCache_Address);
            AniDB_FileRequest req = new AniDB_FileRequest(data);
            string            xml = req.ToXML();

            SendData(uri, xml);
        }
Exemplo n.º 8
0
        public static Azure_FileHash_Request ToHashRequest(this AniDB_File anifile)
        {
            Azure_FileHash_Request r = new Azure_FileHash_Request
            {
                ED2K     = anifile.Hash,
                CRC32    = anifile.CRC,
                MD5      = anifile.MD5,
                SHA1     = anifile.SHA1,
                FileSize = anifile.FileSize,
                Username = Constants.AnonWebCacheUsername,
                AuthGUID = string.Empty
            };

            return(r);
        }
Exemplo n.º 9
0
 private static int CompareChapterTo(SVR_VideoLocal newFile, AniDB_File newAniFile, SVR_VideoLocal oldFile, AniDB_File oldAniFile)
 {
     if ((newAniFile?.IsChaptered == 1 || newFile.Media.Chaptered) &&
         !(oldAniFile?.IsChaptered == 1 || oldFile.Media.Chaptered))
     {
         return(-1);
     }
     if (!(newAniFile?.IsChaptered == 1 || newFile.Media.Chaptered) &&
         (oldAniFile?.IsChaptered == 1 || oldFile.Media.Chaptered))
     {
         return(1);
     }
     return((oldAniFile?.IsChaptered == 1 || oldFile.Media.Chaptered).CompareTo(
                newAniFile?.IsChaptered == 1 || newFile.Media.Chaptered));
 }
Exemplo n.º 10
0
 public void Delete(int id)
 {
     using (var session = WebCache.SessionFactory.OpenSession())
     {
         // populate the database
         using (var transaction = session.BeginTransaction())
         {
             AniDB_File cr = GetByID(id);
             if (cr != null)
             {
                 session.Delete(cr);
                 transaction.Commit();
             }
         }
     }
 }
Exemplo n.º 11
0
        private static bool CheckSubGroup(AniDB_File aniFile)
        {
            FileQualityFilterOperationType operationType = Settings.RequiredSubGroupOperator;

            switch (operationType)
            {
            case FileQualityFilterOperationType.IN:
                return(Settings._requiredsubgroups.Item1.Contains(aniFile.Anime_GroupName.ToLowerInvariant()) ||
                       Settings._requiredsubgroups.Item1.Contains(aniFile.Anime_GroupNameShort.ToLowerInvariant()));

            case FileQualityFilterOperationType.NOTIN:
                return(!Settings._requiredsubgroups.Item1.Contains(aniFile.Anime_GroupName.ToLowerInvariant()) &&
                       !Settings._requiredsubgroups.Item1.Contains(aniFile.Anime_GroupNameShort.ToLowerInvariant()));
            }
            return(true);
        }
Exemplo n.º 12
0
        private static int CompareSourceTo(AniDB_File newFile, AniDB_File oldFile)
        {
            if (string.IsNullOrEmpty(newFile.File_Source) || string.IsNullOrEmpty(oldFile.File_Source))
            {
                return(0);
            }
            if (newFile.File_Source.Equals("unknown", StringComparison.InvariantCultureIgnoreCase) ||
                oldFile.File_Source.Equals("unknown", StringComparison.InvariantCultureIgnoreCase))
            {
                return(0);
            }
            int newIndex = Array.IndexOf(Settings._sources, newFile.File_Source.ToLowerInvariant());
            int oldIndex = Array.IndexOf(Settings._sources, oldFile.File_Source.ToLowerInvariant());

            return(newIndex.CompareTo(oldIndex));
        }
Exemplo n.º 13
0
 private static int CompareChapterTo(SVR_VideoLocal newFile, AniDB_File newAniFile, SVR_VideoLocal oldFile,
                                     AniDB_File oldAniFile)
 {
     if ((newAniFile?.IsChaptered == 1 || (newFile?.Media?.MenuStreams.Any() ?? false)) &&
         !(oldAniFile?.IsChaptered == 1 || (oldFile?.Media?.MenuStreams.Any() ?? false)))
     {
         return(-1);
     }
     if (!(newAniFile?.IsChaptered == 1 || (newFile?.Media?.MenuStreams.Any() ?? false)) &&
         (oldAniFile?.IsChaptered == 1 || (oldFile?.Media?.MenuStreams.Any() ?? false)))
     {
         return(1);
     }
     return((oldAniFile?.IsChaptered == 1 || (oldFile?.Media?.MenuStreams.Any() ?? false)).CompareTo(
                newAniFile?.IsChaptered == 1 || (newFile?.Media?.MenuStreams.Any() ?? false)));
 }
Exemplo n.º 14
0
        private static int CompareSubGroupTo(AniDB_File newFile, AniDB_File oldFile)
        {
            if (!Settings._subgroups.Contains(newFile.Anime_GroupName.ToLowerInvariant()))
            {
                return(0);
            }
            if (!Settings._subgroups.Contains(oldFile.Anime_GroupName.ToLowerInvariant()))
            {
                return(0);
            }
            // The above ensures that _subgroups contains both, so no need to check for -1 in this case
            int newIndex = Array.IndexOf(Settings._subgroups, newFile.Anime_GroupName.ToLowerInvariant());
            int oldIndex = Array.IndexOf(Settings._subgroups, oldFile.Anime_GroupName.ToLowerInvariant());

            return(newIndex.CompareTo(oldIndex));
        }
Exemplo n.º 15
0
        public FileHashInput(AniDB_File anifile)
        {
            ED2K     = anifile.Hash;
            CRC32    = anifile.CRC;
            MD5      = anifile.MD5;
            SHA1     = anifile.SHA1;
            FileSize = anifile.FileSize;

            this.Username = ServerSettings.AniDB_Username;
            if (ServerSettings.WebCache_Anonymous)
            {
                this.Username = Constants.AnonWebCacheUsername;
            }

            this.AuthGUID = string.Empty;
        }
Exemplo n.º 16
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.ContentType = "text/xml";

            try
            {
                Response.Write(Constants.ERROR_XML);
                return;

                string sfsize = Utils.GetParam("fsize");
                long   fsize  = 0;
                long.TryParse(sfsize, out fsize);

                if (fsize <= 0)
                {
                    Response.Write(Constants.ERROR_XML);
                    return;
                }

                string hash = Utils.GetParam("hash");
                if (hash.Trim().Length == 0)
                {
                    Response.Write(Constants.ERROR_XML);
                    return;
                }

                AniDB_FileRepository rep = new AniDB_FileRepository();

                AniDB_File anifile = rep.GetByHashAndFileSize(hash, fsize);
                if (anifile == null)
                {
                    Response.Write(Constants.ERROR_XML);
                    return;
                }

                AniDB_FileRequest data = new AniDB_FileRequest(anifile);
                string            ret  = Utils.ConvertToXML(data, typeof(AniDB_FileRequest));

                Response.Write(ret);
            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString());
                return;
            }
        }
Exemplo n.º 17
0
        private static int CompareVideoCodecTo(SVR_VideoLocal newLocal, AniDB_File newFile, SVR_VideoLocal oldLocal, AniDB_File oldFile)
        {
            string[] newCodecs = newFile.File_VideoCodec.ToLowerInvariant().Split(new[] { '\'' }, StringSplitOptions.RemoveEmptyEntries);
            string[] oldCodecs = oldFile.File_VideoCodec.ToLowerInvariant().Split(new[] { '\'' }, StringSplitOptions.RemoveEmptyEntries);
            // compare side by side, average codec quality would be vague and annoying, defer to number of audio tracks
            if (newCodecs.Length != oldCodecs.Length)
            {
                return(0);
            }

            for (int i = 0; i < Math.Min(newCodecs.Length, oldCodecs.Length); i++)
            {
                string newCodec = newCodecs[i];
                string oldCodec = oldCodecs[i];
                int    newIndex = Array.IndexOf(Settings._videocodecs, newCodec);
                int    oldIndex = Array.IndexOf(Settings._videocodecs, oldCodec);
                if (newIndex < 0 || oldIndex < 0)
                {
                    continue;
                }
                int result = newIndex.CompareTo(oldIndex);
                if (result != 0)
                {
                    return(result);
                }
                if (string.IsNullOrEmpty(newLocal.VideoBitDepth) ||
                    string.IsNullOrEmpty(oldLocal.VideoBitDepth))
                {
                    continue;
                }
                if ((newLocal.VideoBitDepth.Equals("8") || newLocal.VideoBitDepth.Equals("10")) &&
                    (oldLocal.VideoBitDepth.Equals("8") || oldLocal.VideoBitDepth.Equals("10")))
                {
                    if (newLocal.VideoBitDepth.Equals("8") && oldLocal.VideoBitDepth.Equals("10"))
                    {
                        return(Settings.Prefer8BitVideo ? -1 : 1);
                    }
                    if (newLocal.VideoBitDepth.Equals("10") && oldLocal.VideoBitDepth.Equals("8"))
                    {
                        return(Settings.Prefer8BitVideo ? 1 : -1);
                    }
                }
            }
            return(0);
        }
Exemplo n.º 18
0
        public void Save(AniDB_File obj, bool updateStats)
        {
            using (var session = JMMService.SessionFactory.OpenSession())
            {
                // populate the database
                using (var transaction = session.BeginTransaction())
                {
                    session.SaveOrUpdate(obj);
                    transaction.Commit();
                }
            }

            if (updateStats)
            {
                logger.Trace("Updating group stats by file from AniDB_FileRepository.Save: {0}", obj.Hash);
                AniDB_Anime.UpdateStatsByAnimeID(obj.AnimeID);
            }
        }
Exemplo n.º 19
0
        private static bool CheckSource(AniDB_File aniFile)
        {
            if (string.IsNullOrEmpty(aniFile.File_Source))
            {
                return(false);
            }
            FileQualityFilterOperationType operationType = Settings.RequiredSourceOperator;

            switch (operationType)
            {
            case FileQualityFilterOperationType.IN:
                return(Settings._requiredsources.Item1.Contains(aniFile.File_Source.ToLowerInvariant()));

            case FileQualityFilterOperationType.NOTIN:
                return(!Settings._requiredsources.Item1.Contains(aniFile.File_Source.ToLowerInvariant()));
            }
            return(true);
        }
Exemplo n.º 20
0
 public static bool IsNullOrUnknown(AniDB_File file)
 {
     if (file == null)
     {
         return(true);
     }
     if (string.IsNullOrWhiteSpace(file.File_Source))
     {
         return(true);
     }
     if (string.IsNullOrWhiteSpace(file.Anime_GroupName))
     {
         return(true);
     }
     if (string.IsNullOrWhiteSpace(file.Anime_GroupNameShort))
     {
         return(true);
     }
     if (file.Anime_GroupName.EqualsInvariantIgnoreCase("unknown"))
     {
         return(true);
     }
     if (file.Anime_GroupNameShort.EqualsInvariantIgnoreCase("unknown"))
     {
         return(true);
     }
     if (file.Anime_GroupName.EqualsInvariantIgnoreCase("raw"))
     {
         return(true);
     }
     if (file.Anime_GroupNameShort.EqualsInvariantIgnoreCase("raw"))
     {
         return(true);
     }
     if (file.File_Source.EqualsInvariantIgnoreCase("unknown"))
     {
         return(true);
     }
     if (file.File_Source.EqualsInvariantIgnoreCase("raw"))
     {
         return(true);
     }
     return(false);
 }
Exemplo n.º 21
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.ContentType = "text/xml";

            try
            {
                Response.Write(Constants.ERROR_XML);
                return;

                AniDB_FileRepository rep = new AniDB_FileRepository();

                StreamReader reader  = new StreamReader(this.Request.InputStream);
                String       xmlData = reader.ReadToEnd();

                XmlSerializer serializer      = new XmlSerializer(typeof(AniDB_FileRequest));
                XmlDocument   docSearchResult = new XmlDocument();
                docSearchResult.LoadXml(xmlData);

                XmlNodeReader     xmlreader = new XmlNodeReader(docSearchResult.DocumentElement);
                object            obj       = serializer.Deserialize(xmlreader);
                AniDB_FileRequest result    = (AniDB_FileRequest)obj;


                if (result == null)
                {
                    Response.Write(Constants.ERROR_XML);
                    return;
                }


                AniDB_File anifile = rep.GetByFileID(result.FileID);
                if (anifile == null)
                {
                    anifile = new AniDB_File();
                }

                anifile.Populate(result);
                rep.Save(anifile);
            }
            catch (Exception ex)
            {
                Response.Write(Constants.ERROR_XML);
            }
        }
Exemplo n.º 22
0
        private static int CompareVersionTo(SVR_VideoLocal newFile, SVR_VideoLocal oldFile)
        {
            AniDB_File newani = newFile.GetAniDBFile();
            AniDB_File oldani = oldFile.GetAniDBFile();

            if (!newani.Anime_GroupName.Equals(oldani.Anime_GroupName))
            {
                return(0);
            }
            if (!newani.File_VideoResolution.Equals(oldani.File_VideoResolution))
            {
                return(0);
            }
            if (!newFile.VideoBitDepth.Equals(oldFile.VideoBitDepth))
            {
                return(0);
            }
            return(oldani.FileVersion.CompareTo(newani.FileVersion));
        }
Exemplo n.º 23
0
        private static int CompareSourceTo(AniDB_File newFile, AniDB_File oldFile)
        {
            var newSource = newFile.File_Source.ToLowerInvariant();

            if (FileQualityPreferences.SimplifiedSources.ContainsKey(newSource))
            {
                newSource = FileQualityPreferences.SimplifiedSources[newSource];
            }
            var oldSource = oldFile.File_Source.ToLowerInvariant();

            if (FileQualityPreferences.SimplifiedSources.ContainsKey(oldSource))
            {
                oldSource = FileQualityPreferences.SimplifiedSources[oldSource];
            }
            int newIndex = Array.IndexOf(Settings._sources, newSource);
            int oldIndex = Array.IndexOf(Settings._sources, oldSource);

            return(newIndex.CompareTo(oldIndex));
        }
Exemplo n.º 24
0
        public static Azure_FileHash_Request ToHashRequest(this AniDB_File anifile)
        {
            Azure_FileHash_Request r = new Azure_FileHash_Request
            {
                ED2K     = anifile.Hash,
                CRC32    = anifile.CRC,
                MD5      = anifile.MD5,
                SHA1     = anifile.SHA1,
                FileSize = anifile.FileSize
            };

            r.Username = ServerSettings.AniDB_Username;
            if (ServerSettings.WebCache_Anonymous)
            {
                r.Username = Constants.AnonWebCacheUsername;
            }
            r.AuthGUID = string.IsNullOrEmpty(ServerSettings.WebCacheAuthKey) ? string.Empty : ServerSettings.WebCacheAuthKey;

            return(r);
        }
Exemplo n.º 25
0
        private static bool CheckAudioStreamCount(AniDB_File aniFile)
        {
            int streamCount = aniFile.File_AudioCodec.ToLowerInvariant()
                              .Split(new[] { '\'' }, StringSplitOptions.RemoveEmptyEntries)
                              .Length;
            FileQualityFilterOperationType operationType = Settings.RequiredAudioStreamCountOperator;

            switch (operationType)
            {
            case FileQualityFilterOperationType.EQUALS:
                return(streamCount == Settings.RequiredAudioStreamCount);

            case FileQualityFilterOperationType.GREATER_EQ:
                return(streamCount >= Settings.RequiredAudioStreamCount);

            case FileQualityFilterOperationType.LESS_EQ:
                return(streamCount <= Settings.RequiredAudioStreamCount);
            }
            return(true);
        }
Exemplo n.º 26
0
        private static bool CheckVideoCodec(AniDB_File aniFile)
        {
            string[] codecs = aniFile.File_VideoCodec.ToLowerInvariant()
                              .Split(new[] { '\'' }, StringSplitOptions.RemoveEmptyEntries);
            if (codecs.Length == 0)
            {
                return(false);
            }
            FileQualityFilterOperationType operationType = Settings.RequiredVideoCodecOperator;

            switch (operationType)
            {
            case FileQualityFilterOperationType.IN:
                return(Settings._requiredvideocodecs.Item1.FindInEnumerable(codecs));

            case FileQualityFilterOperationType.NOTIN:
                return(!Settings._requiredvideocodecs.Item1.FindInEnumerable(codecs));
            }
            return(true);
        }
Exemplo n.º 27
0
        private static bool CheckSubGroup(AniDB_File aniFile)
        {
            if (IsNullOrUnknown(aniFile))
            {
                return(false);
            }
            FileQualityFilterOperationType operationType = Settings.RequiredSubGroups.Operator;

            switch (operationType)
            {
            case FileQualityFilterOperationType.IN:
                return(Settings.RequiredSubGroups.Value.Contains(aniFile.Anime_GroupName.ToLowerInvariant()) ||
                       Settings.RequiredSubGroups.Value.Contains(aniFile.Anime_GroupNameShort.ToLowerInvariant()));

            case FileQualityFilterOperationType.NOTIN:
                return(!Settings.RequiredSubGroups.Value.Contains(aniFile.Anime_GroupName.ToLowerInvariant()) &&
                       !Settings.RequiredSubGroups.Value.Contains(aniFile.Anime_GroupNameShort.ToLowerInvariant()));
            }

            return(true);
        }
Exemplo n.º 28
0
        private static int CompareResolutionTo(AniDB_File newFile, AniDB_File oldFile)
        {
            string oldRes = GetResolution(oldFile);
            string newRes = GetResolution(newFile);

            if (newRes == null || oldRes == null)
            {
                return(0);
            }
            if (!Settings._resolutions.Contains(newRes))
            {
                return(0);
            }
            if (!Settings._resolutions.Contains(oldRes))
            {
                return(-1);
            }
            int newIndex = Array.IndexOf(Settings._resolutions, newRes);
            int oldIndex = Array.IndexOf(Settings._resolutions, oldRes);

            return(newIndex.CompareTo(oldIndex));
        }
Exemplo n.º 29
0
        private static bool CheckSource(AniDB_File aniFile)
        {
            if (IsNullOrUnknown(aniFile))
            {
                return(false);
            }
            FileQualityFilterOperationType operationType = Settings.RequiredSourceOperator;
            var source = aniFile.File_Source.ToLowerInvariant();

            if (FileQualityPreferences.SimplifiedSources.ContainsKey(source))
            {
                source = FileQualityPreferences.SimplifiedSources[source];
            }
            switch (operationType)
            {
            case FileQualityFilterOperationType.IN:
                return(Settings._requiredsources.Item1.Contains(source));

            case FileQualityFilterOperationType.NOTIN:
                return(!Settings._requiredsources.Item1.Contains(source));
            }
            return(true);
        }
Exemplo n.º 30
0
        private static Tuple <int, int> GetResolutionInternal(AniDB_File aniFile)
        {
            string[] res = aniFile.File_VideoResolution.Split('x');
            if (res.Length != 2)
            {
                return(null);
            }
            int oldWidth  = 0;
            int oldHeight = 0;

            if (!int.TryParse(res[0], out oldWidth))
            {
                return(null);
            }
            if (!int.TryParse(res[1], out oldHeight))
            {
                return(null);
            }
            if (oldWidth == 0 || oldHeight == 0)
            {
                return(null);
            }
            return(new Tuple <int, int>(oldWidth, oldHeight));
        }