| | |
| | | #!/usr/bin/env -S python -u |
| | | import argparse |
| | | import os |
| | | import glob |
| | | import subprocess |
| | | import json |
| | | import re |
| | |
| | | stats = "-nostats" |
| | | |
| | | |
| | | def sendtodiscord(audiofile): |
| | | webhookurl = "https://discord.com/api/webhooks/764667082272145418/vorf2JdFG47WAmQP3yZhgHH12wW_qUXG0bS0SG8INLYVwU0HcDFajq9doaDgi_hnI00-" # noqa E501 |
| | | data = { |
| | | "content": f"There was a problem with file{audiofile}", |
| | | "username": "Captain Audio", |
| | | } |
| | | |
| | | with requests.Session() as r: |
| | | resp = r.post(webhookurl, json=data) |
| | | if resp.status_code == 204: |
| | | return True |
| | | |
| | | |
| | | def getmetadata(aaxfile): |
| | | # Returns the metadata from an aax file |
| | | ret = subprocess.run(["ffprobe", "-v", "info", "-hide_banner", |
| | | "-show_format", "-show_chapters", |
| | | "-print_format", "json", |
| | | os.path.abspath(aaxfile)], capture_output=True) |
| | | try: |
| | | ret = subprocess.run(["ffprobe", "-v", "info", "-hide_banner", |
| | | "-show_format", "-show_chapters", |
| | | "-print_format", "json", |
| | | os.path.abspath(aaxfile)], capture_output=True) |
| | | |
| | | mdata = json.loads(ret.stdout) |
| | | aret = ret.stderr.decode().split('\n')[0] |
| | | mdata["checksum"] = aret.split()[-1] |
| | | return mdata |
| | | mdata = json.loads(ret.stdout) |
| | | aret = ret.stderr.decode().split('\n')[0] |
| | | mdata["checksum"] = aret.split()[-1] |
| | | return mdata |
| | | except Exception as err: |
| | | sys.stderr.write("Error processing metadata: {}\n".format(err)) |
| | | return "None" |
| | | |
| | | |
| | | def getmetabitrate(): |
| | |
| | | |
| | | def normalize_data(data): |
| | | # Return a normalized title |
| | | data = data.replace(" ", "_") |
| | | pattern = re.compile('\W') |
| | | pattern = re.compile('[^\p{Latin}]', u'', data) |
| | | return re.sub(pattern, '', data) |
| | | |
| | | |
| | |
| | | except requests.exceptions.HTTPError as err: |
| | | raise err |
| | | |
| | | |
| | | def findalbumbyname_stub(album): |
| | | return False |
| | | |
| | |
| | | if args.filename.find("aax"): |
| | | rfile = args.filename |
| | | metadata = getmetadata(rfile) |
| | | album = getmetadatatags('album') |
| | | # See if we got it already |
| | | if not findalbumbyname(album): |
| | | artist = normalize_data(getmetadatatags('artist')) |
| | | title = normalize_data(getmetadatatags('title')) |
| | | act_byte = getcorrectkey() |
| | | if act_byte is None or act_byte == '': |
| | | sys.exit(f"Can't continue with this file {rfile}") |
| | | if metadata == "None": |
| | | sendtodiscord(rfile) |
| | | album = getmetadatatags('album') |
| | | # See if we got it already |
| | | if not findalbumbyname(album): |
| | | artist = normalize_data(getmetadatatags('artist')) |
| | | title = normalize_data(getmetadatatags('title')) |
| | | act_byte = getcorrectkey() |
| | | if act_byte is None or act_byte == '': |
| | | sendtodiscord(rfile) |
| | | sys.exit(f"Can't continue with this file {rfile}") |
| | | else: |
| | | ddir = "%s/%s/%s" % (path, artist, title) |
| | | single_file_path = "/processing/%s.mp3" % (title) |
| | | if not os.path.exists(ddir): |
| | | os.makedirs(ddir) |
| | | print(ddir) |
| | | reencode(rfile, single_file_path) |
| | | if mode == 'chapter': |
| | | chapter = 0 |
| | | numchapters = getchaptercount() |
| | | while (numchapters > 0): |
| | | cstart = getchaptermetadata(chapter, 'start_time') |
| | | cend = getchaptermetadata(chapter, 'end_time') |
| | | chapter += 1 |
| | | numchapters -= 1 |
| | | schap = str(chapter).zfill(2) |
| | | movetochapters(single_file_path, ddir, schap, title, |
| | | cstart, cend) |
| | | os.remove(single_file_path) |
| | | getcoverart(rfile, ddir) |
| | | else: |
| | | ddir = "%s/%s/%s" % (path, artist, title) |
| | | single_file_path = "/processing/%s.mp3" % (title) |
| | | if not os.path.exists(ddir): |
| | | os.makedirs(ddir) |
| | | print(ddir) |
| | | reencode(rfile, single_file_path) |
| | | if mode == 'chapter': |
| | | chapter = 0 |
| | | numchapters = getchaptercount() |
| | | while (numchapters > 0): |
| | | cstart = getchaptermetadata(chapter, 'start_time') |
| | | cend = getchaptermetadata(chapter, 'end_time') |
| | | chapter += 1 |
| | | numchapters -= 1 |
| | | schap = str(chapter).zfill(2) |
| | | movetochapters(single_file_path, ddir, schap, title, |
| | | cstart, cend) |
| | | os.remove(single_file_path) |
| | | getcoverart(rfile, ddir) |
| | | else: |
| | | print('We have that book already') |
| | | print('We have that book already') |