Music album web page generator
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 

81 lignes
2.0 KiB

  1. import eyed3
  2. import os
  3. import sys
  4. import shutil
  5. import yaml
  6. from mako.template import Template
  7. # TracksDir class definition
  8. class Album:
  9. def __init__(self, track_files):
  10. self.trackFiles = track_files
  11. # script usage function
  12. def usage():
  13. print('USAGE : labelize.py [inputDirectory] [outputDirectory]')
  14. # script beginning
  15. arguments = len(sys.argv) - 1
  16. if arguments != 2:
  17. usage()
  18. sys.exit(2)
  19. input_directory = sys.argv[1]
  20. output_directory = sys.argv[2]
  21. def copy_directory(src, dest):
  22. try:
  23. shutil.copytree(src, dest)
  24. except shutil.Error as e:
  25. print('Directory not copied. Error: %s' % e)
  26. except OSError as e:
  27. print('Directory not copied. Error: %s' % e)
  28. # removes existing build directory if exists
  29. if os.path.isdir(output_directory):
  30. shutil.rmtree(output_directory)
  31. #
  32. # copies source files in the build directory
  33. copy_directory(input_directory, output_directory + '/audio')
  34. # copies assets in the build directory
  35. copy_directory('assets', output_directory + '/assets')
  36. with open('labelize.yaml') as f:
  37. data = yaml.load(f, Loader=yaml.FullLoader)
  38. title = data['band']
  39. cover_img = data['images']['cover']
  40. contact_img = data['images']['contact']
  41. shutil.copyfile(input_directory + '/' + cover_img, output_directory + '/assets/images/cover.png');
  42. shutil.copyfile(input_directory + '/' + contact_img, output_directory + '/assets/images/contact.png');
  43. track_files = []
  44. for root, dirs, files in os.walk(input_directory):
  45. for f in sorted(files):
  46. if f.lower().endswith(('.mp3', '.wav', '.ogg')):
  47. track_files.append(f)
  48. print(f)
  49. # td = TracksDir(trackFiles)
  50. # f = open(output_directory + "/index.html", "w+")
  51. # f.write(td.to_html())
  52. # f.close()
  53. my_template = Template(filename='template.html')
  54. f = open(output_directory + "/index.html", "w+")
  55. # Write template data to the file created
  56. f.write(my_template.render(
  57. title=title,
  58. tracks=track_files,
  59. albums_section=data['albums_section']))
  60. # Close file
  61. f.close()