56 lines
962 B
Python
Executable File
56 lines
962 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([
|
|
b"ffmpeg",
|
|
b"-nostdin",
|
|
b"-hide_banner",
|
|
b"-v", b"fatal",
|
|
b"-y", b"-i", fsenc(sys.argv[1]),
|
|
b"-map", b"0:a:0",
|
|
b"-t", b"300",
|
|
b"-sample_fmt", b"s16",
|
|
fsenc(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()
|