mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 11:07:21 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.IO;
 | 
						|
using System.Text;
 | 
						|
 | 
						|
namespace OpenSubtitlesHandler
 | 
						|
{
 | 
						|
    public class MovieHasher
 | 
						|
    {
 | 
						|
        public static byte[] ComputeMovieHash(Stream input)
 | 
						|
        {
 | 
						|
            using (input)
 | 
						|
            {
 | 
						|
                long lhash, streamsize;
 | 
						|
                streamsize = input.Length;
 | 
						|
                lhash = streamsize;
 | 
						|
 | 
						|
                long i = 0;
 | 
						|
                byte[] buffer = new byte[sizeof(long)];
 | 
						|
                while (i < 65536 / sizeof(long) && (input.Read(buffer, 0, sizeof(long)) > 0))
 | 
						|
                {
 | 
						|
                    i++;
 | 
						|
                    lhash += BitConverter.ToInt64(buffer, 0);
 | 
						|
                }
 | 
						|
 | 
						|
                input.Position = Math.Max(0, streamsize - 65536);
 | 
						|
                i = 0;
 | 
						|
                while (i < 65536 / sizeof(long) && (input.Read(buffer, 0, sizeof(long)) > 0))
 | 
						|
                {
 | 
						|
                    i++;
 | 
						|
                    lhash += BitConverter.ToInt64(buffer, 0);
 | 
						|
                }
 | 
						|
                byte[] result = BitConverter.GetBytes(lhash);
 | 
						|
                Array.Reverse(result);
 | 
						|
                return result;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        public static string ToHexadecimal(byte[] bytes)
 | 
						|
        {
 | 
						|
            StringBuilder hexBuilder = new StringBuilder();
 | 
						|
            for (int i = 0; i < bytes.Length; i++)
 | 
						|
            {
 | 
						|
                hexBuilder.Append(bytes[i].ToString("x2"));
 | 
						|
            }
 | 
						|
            return hexBuilder.ToString();
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |