mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-10-31 00:01:12 +01: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();
 | |
|         }
 | |
|     }
 | |
| }
 |