Skip to content

Instantly share code, notes, and snippets.

@grahamannett
Created September 28, 2020 17:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save grahamannett/8d89b15df43f79d239fc5c430ca12641 to your computer and use it in GitHub Desktop.
Save grahamannett/8d89b15df43f79d239fc5c430ca12641 to your computer and use it in GitHub Desktop.
import eyed3
import argparse
from pathlib import Path
def check_subdirectories(folder):
pass
def get_files_folder(path):
files = []
folder = Path(path)
for filepath in folder.glob("*.mp3"):
files.append(filepath)
return files
def fix_file(filename, subfolder={}, _dry_run=True):
lstrip_pattern = "track"
try:
track_num = int(filename.name.split(".mp3")[0].lstrip(lstrip_pattern))
except:
breakpoint()
return
track_name= f"Track {track_num}"
disc_num = subfolder.get("disc_num", 1)
audiofile = eyed3.load(filename)
if _dry_run:
print(f"would set {filename} to")
print(f"track_num: {track_num, disc_num}")
print(f"track_name: {track_name}")
else:
audiofile.tag.track_num = (track_num, disc_num)
audiofile.tag.title = track_name
audiofile.tag.save()
def main(folder, dry_run=True):
if dry_run: print("doing dry run... wont overwrite any files")
files = get_files_folder(folder)
for file in files:
fix_file(file, _dry_run=dry_run)
if __name__=="__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--folder', type=str, help='which folder to use')
parser.add_argument('--dry-run', action='store_false', help='dry run or not')
args = parser.parse_args()
main(folder=args.folder, dry_run=args.dry_run)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment