|
- import eyed3
- import os
- import sys
- import shutil
- from html_writer import Html
-
-
- # TracksDir class definition
- class TracksDir:
- def __init__(self, track_files):
- self.trackFiles = track_files
-
- # HTML Output
- def to_html(self):
- head = Html()
- head.self_close_tag('meta', attributes=dict(charset='utf-8'))
- head.self_close_tag('link', attributes=dict(href='assets/labelize.css', rel='stylesheet'))
- body = Html()
- track_number = 0
- with body.tag('div', classes=['track-list']):
- # body.tag_with_content('Track List', name='h2')
- with body.tag('div', attributes=dict(id='player-toggler')):
- body.self_close_tag('img', attributes=dict(src='assets/labelize.png'))
- with body.tag('ul') as list:
- for t in self.trackFiles:
- track_number = track_number + 1
- track_id = 'track-' + str(track_number)
- audio_file = eyed3.load("build/" + t)
- with body.tag('li') as li:
- print(audio_file.tag.title)
- li += str(audio_file.tag.title or 'untitled') + ' - '
- li += str(audio_file.tag.album or 'untitled') + ' - '
- li += audio_file.tag.artist
- with body.tag('button', attributes=dict(onclick="togglePlay(this)")):
- body.self_close_tag('img', attributes=dict(src='assets/play.png'))
- with body.tag('audio', attributes=dict(src=t, id=track_id,
- ontimeupdate="updateProgress(this)")) as audio:
- audio += "Your browser does not support the audio element"
-
- # with body.tag('canvas',attributes=dict(id='player-progress')) as canvas:
- # canvas += "player's progress bar"
- with body.tag('progress', attributes=dict(id='player-progress', value='0')) as canvas:
- canvas += "player's progress bar"
- with body.tag('div', attributes=dict(id='time-info')) as timeInfo:
- timeInfo += '00:00'
- with body.tag('script', attributes=dict(src='assets/labelize.js')) as script:
- script += "" # script tag is not added without that trick
-
- return Html.html_template(head, body).to_raw_html(indent_size=2)
-
-
- # script usage function
- def usage():
- print('USAGE : labelize.py [inputDirectory] [outputDirectory]')
-
-
- # script beginning
- arguments = len(sys.argv) - 1
- if arguments != 2:
- usage()
- sys.exit(2)
-
- input_directory = sys.argv[1]
- output_directory = sys.argv[2]
-
-
- def copy_directory(src, dest):
- try:
- shutil.copytree(src, dest)
- except shutil.Error as e:
- print('Directory not copied. Error: %s' % e)
- except OSError as e:
- print('Directory not copied. Error: %s' % e)
-
-
- # removes existing build directory if exists
- if os.path.isdir(output_directory):
- shutil.rmtree(output_directory)
-
- # copies source files in the build directory
- copy_directory(input_directory, 'build')
-
- # copies assets in the build directory
- copy_directory('assets', output_directory + '/assets')
-
- for root, dirs, files in os.walk(input_directory):
- trackFiles = []
- for f in files:
- if f.lower().endswith(('.mp3', '.wav', '.ogg')):
- trackFiles.append(f)
-
- td = TracksDir(trackFiles)
- f = open(output_directory + "/index.html", "w+")
- f.write(td.to_html())
- f.close()
|