Chris Pomeroy
2019-02-08 51fb0d6c74d05e8a3502d3c0a851eb8e1b7c60ea
aaxConvert.py
@@ -1,12 +1,15 @@
#!/usr/bin/python
#!/usr/bin/env python
import argparse
import os
import glob
import subprocess
import shlex
import json
from getaaxkey.getaaxkey import getcorrectkey
import querysubsonic
import requests
import unicodedata
from querysubsonic import findalbumbyname
from time import sleep
# arguments
# activation_key, file name, codec(default to mp3)
@@ -50,10 +53,14 @@
    bit_rate = metadata['format']['bit_rate']
    return bit_rate[:2]
def getmetacopyright():
    copyright = unicodedata.normalize('NFKD', metadata['format']['tag']['copyright']).encode('ascii','ignore')
    return copyright
def getmetadatatags(key):
    # get specific data
    tag = metadata['format']['tags'][key]
    tag = cleantag(metadata['format']['tags'][key])
    return tag
@@ -65,16 +72,16 @@
                                                                                           getmetadatatags('title'), getmetadatatags('artist'),
                                                                                           getmetadatatags('album_artist'), getmetadatatags('album'),
                                                                                           getmetadatatags('date'), getmetadatatags('genre'),
                                                                                           getmetadatatags('copyright'),outpath)
                                                                                           getmetacopyright(),outpath)
    if args.verbose:
        print command
        print(command)
        process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE)
        while True:
            output = process.stdout.readline()
            if output == '' and process.poll() is not None:
                break
            if output:
                print output.strip()
                print(output.strip())
        rc = process.poll()
        return rc
    else:
@@ -102,14 +109,14 @@
                                                                                                               start, end,
                                                                                                               chapter, outfile)
    if args.verbose:
        print command
        print(command)
        process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE)
        while True:
            output = process.stdout.readline()
            if output == '' and process.poll() is not None:
                break
            if output:
                print output.strip()
                print(output.strip())
        rc = process.poll()
        return rc
    else:
@@ -122,27 +129,47 @@
    command = "ffmpeg -loglevel error -activation_bytes {} -i \"{}\" -an -codec:v copy \"{}/cover.jpg\"".format(act_byte,
                                                                                                               path, outpath)
    if args.verbose:
        print command
        print(command)
    process = subprocess.call(shlex.split(command))
    return
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 getcorrectkey(aaxfile):
    hex = filechecksum(aaxfile)
    payload = hex
    recovery = 3
    while recovery != 0:
      r = requests.post('http://x86-docker01:8080/function/checkkey', payload, verify=False, timeout=None)
      if r.status_code == 200:
          key = r.text
          recovery = 0
          return key
      else:
          print('Checkkey function is down please wait')
          recovery = recovery - 1
          sleep(5)
for rfile in glob.glob(args.filename):
    if rfile.find("aax") != -1 and os.path.isfile(rfile):
        metadata = getmetadata(rfile)
        album = getmetadatatags('album')
        #See if we got it already
        if findalbumbyname(album):
            return 0
        else:
        if (findalbumbyname(album) == False):
            artist = getmetadatatags('artist')
            title = getmetadatatags('title')
            act_byte = getcorrectkey(rfile)
            ddir = "%s/%s/%s" % (path, artist, title)
            single_file_path = "%s/%s.mp3" % (ddir, title)
            single_file_path = "/processing/%s.mp3" % (title)
            if not os.path.exists(ddir):
                os.makedirs(ddir)
            print ddir
            print(ddir)
            reencode(rfile, single_file_path)
            if mode == 'chapter':
                chapter = 0
@@ -156,4 +183,4 @@
                    movetochapters(single_file_path, ddir, schap, title, cstart,cend)
                os.remove(single_file_path)
            getcoverart(rfile, ddir)
            updatelibrary('testuser','testpass')