#!/usr/bin/python2 # Generate an HTML page containing information about MP3s in a # directory. # # Usage: mp3tohtml.py # # Last version of this tool can be get from the GIT repository: # http://git.wpitchoune.net/radio.git # # (c) 2016 Jean-Philippe Orsini import argparse; import eyeD3 import fnmatch import glob import os import re import sys def fma_copyright_to_html(path, copyright): if copyright == "": sys.stderr.write(path + ": no FMA copyright.\n") return "" p = re.compile("(.*): (.*)") m = p.match(copyright) if m is not None: name = m.group(1) name = name.replace("Creative Commons", "CC") name = name.replace("Attribution", "BY") name = name.replace("NonCommercial", "NC") name = name.replace("Noncommercial", "NC") name = name.replace("NoDerivatives", "ND") name = name.replace("ShareAlike", "SA") name = name.replace("Share Alike", "SA") name = name.replace("United States", "US") return "" + name + "" else: sys.stderr.write(path + ": invalid FMA copyright: " + copyright + ".\n"); return copyright def copy_header(path): header_path = path + "/header.tpl" header = open(header_path, "r") for line in header: sys.stdout.write(line) def copy_footer(path): footer_path = path + "/footer.tpl" footer = open(footer_path, "r") for line in footer: sys.stdout.write(line) parser = argparse.ArgumentParser(description='Generate an HTML containing information about the MP3 files.') parser.add_argument('dir', help='The directory containing the MP3 files') parser.add_argument("--config", help="The directory containing the configuration") args = parser.parse_args() if (args.config is None): cfg_dir = os.path.dirname(sys.argv[0]) else: cfg_dir = args.config copy_header(cfg_dir) files = [] for root, dirnames, filenames in os.walk(args.dir): for filename in fnmatch.filter(filenames, '*.mp3'): files.append(os.path.join(root, filename)) for f in files: tag = eyeD3.Tag() tag.link(f) print("\t") print("\t\t" + tag.getArtist().encode("UTF8") + "\n") print("\t\t" + tag.getAlbum().encode("UTF-8") + "") print("\t\t" + tag.getTitle().encode("UTF-8") + "") comments = tag.getComments() strComments = "" for c in comments: strComments += c.comment p = re.compile("URL: (.*)\r\nComments: (.*)\r\nCurators?: (.*)\r\nCopyright: (.*)") m = p.match(strComments) if m is None: url = "" curator = "" copyright = "" else: if m.group(2) == "http://freemusicarchive.org/": strComments = "" url = "FMA" else: strComments = m.group(2) url = "source" curator = m.group(3) copyright = fma_copyright_to_html(f, m.group(4)) print("\t\t" + url + "") print("\t\t" + curator + "") print("\t\t" + copyright + "") print("\t\t" + strComments + "") print("\t") copy_footer(cfg_dir)