#!/usr/bin/python
|
|
import os
|
import subprocess
|
import requests
|
|
def filechecksum(aaxfile):
|
ret = subprocess.Popen(["ffprobe", "-v", "info", "-hide_banner", os.path.abspath(aaxfile)], stderr=subprocess.PIPE)
|
grep = subprocess.Popen(["grep", "checksum"], stdin=ret.stderr, stdout=subprocess.PIPE)
|
awk = subprocess.Popen(["awk", " { print $8 } "], stdin=grep.stdout, stdout=subprocess.PIPE)
|
hashsum,out = awk.communicate()
|
hashsum = hashsum.strip('\n')
|
return hashsum
|
|
|
def writeauthcode(hashsum):
|
try:
|
file = open(".authcode", "a")
|
file.write(hashsum + os.linesep)
|
except (IOError, OSError) as e:
|
print("Can't write to .authcode")
|
return 1
|
finally:
|
file.close()
|
return 0
|
|
|
def readauthcode():
|
try:
|
if not os.path.isfile(".authcode"):
|
open (".authcode", "w").close()
|
with open(".authcode") as f:
|
hashes = f.read().split()
|
except (IOError, OSError) as e:
|
print("Can't read in .authcode")
|
return 1
|
finally:
|
f.close()
|
return hashes
|
|
|
def newauthcode(checksum):
|
r = requests.post("http://prod-faas-gw.darkurthe.net:8080/function/checkkey", checksum )
|
if r.status_code == 200:
|
response = str(r.text)
|
return response.strip()
|
else:
|
return 1
|
|
def checkagainstexisting(abytes,aaxfile):
|
ret = subprocess.Popen(["ffprobe", "-activation_bytes", abytes, "-hide_banner", os.path.abspath(aaxfile)], stderr=subprocess.PIPE)
|
grep = subprocess.Popen(["grep", "mismatch", "-c"], stdin=ret.stderr, stdout=subprocess.PIPE)
|
works,out = grep.communicate()
|
return works.strip('\n')
|
|
|
def getcorrectkey(aaxfile):
|
authcodes = readauthcode()
|
abyte = ''
|
for x in authcodes:
|
if checkagainstexisting(x, aaxfile) == '0':
|
abyte = x
|
return abyte
|
if abyte == '':
|
csum = filechecksum(aaxfile)
|
abyte = newauthcode(csum)
|
writeauthcode(abyte)
|
return abyte
|
|
|
if __name__ == "__main__":
|
import sys
|
if len(sys.argv) >= 2:
|
args = sys.argv[1]
|
else:
|
print("I need an file name to lookup")
|
sys.exit(1)
|
checksum = filechecksum(args)
|
out = newauthcode(checksum.strip())
|
if out is not None:
|
print(sys.argv[1], "Auth code is:", out)
|
else:
|
print(sys.argv[1], "no Authcode found")
|