mirror of
				https://github.com/9001/copyparty.git
				synced 2025-10-30 19:43:37 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			55 lines
		
	
	
		
			917 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			917 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env python
 | |
| 
 | |
| import os
 | |
| import sys
 | |
| import tempfile
 | |
| import subprocess as sp
 | |
| import keyfinder
 | |
| 
 | |
| from copyparty.util import fsenc
 | |
| 
 | |
| """
 | |
| dep: github/mixxxdj/libkeyfinder
 | |
| dep: pypi/keyfinder
 | |
| dep: ffmpeg
 | |
| """
 | |
| 
 | |
| 
 | |
| # tried trimming the first/last 5th, bad idea,
 | |
| # misdetects 9a law field (Sphere Caliber) as 10b,
 | |
| # obvious when mixing 9a ghostly parapara ship
 | |
| 
 | |
| 
 | |
| def det(tf):
 | |
|     # fmt: off
 | |
|     sp.check_call([
 | |
|         "ffmpeg",
 | |
|         "-nostdin",
 | |
|         "-hide_banner",
 | |
|         "-v", "fatal",
 | |
|         "-y", "-i", fsenc(sys.argv[1]),
 | |
|         "-t", "300",
 | |
|         "-sample_fmt", "s16",
 | |
|         tf
 | |
|     ])
 | |
|     # fmt: on
 | |
| 
 | |
|     print(keyfinder.key(tf).camelot())
 | |
| 
 | |
| 
 | |
| def main():
 | |
|     with tempfile.NamedTemporaryFile(suffix=".flac", delete=False) as f:
 | |
|         f.write(b"h")
 | |
|         tf = f.name
 | |
| 
 | |
|     try:
 | |
|         det(tf)
 | |
|     except:
 | |
|         pass  # mute
 | |
|     finally:
 | |
|         os.unlink(tf)
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     main()
 |