#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Mon May 23 15:26:53 2022 1. Convert file from GBK charset to UTF-8 2. Get album picture form mp3 files @author: Rex Chow """
import os import json from pathlib import Path import eyed3 from urllib.parse import quote
defgbk2utf8(directory, suffixs=['.lrc']): for root, dirs, files in os.walk(directory): for file in files: path = Path(os.path.join(root, file)) if path.suffix notin suffixs: continue try: withopen(path, 'r', encoding='gbk') as f: content = f.readlines() except Exception: continue withopen(path, 'w', encoding='utf-8') as f: f.writelines(content)
defget_albums(directory, suffixs=['.mp3']): result = [] prefix = 'https://blog-static.chowrex.com/aplayer' for root, dirs, files in os.walk(directory): for file in files: path = Path(os.path.join(root, file)) if path.suffix notin suffixs: continue name = path.with_suffix('').name audio = eyed3.load(path) for img in audio.tag.images: suffix = img.mime_type.split('/')[-1] pic = path.absolute().with_suffix(f'.{suffix}') withopen(pic, 'wb') as f: f.write(img.image_data) result.append( { 'title': name, 'author': audio.tag.artist, 'url': f'{prefix}/songs/{quote(name)}.mp3', 'pic': f'{prefix}/pic/{quote(name)}.{suffix}', 'lrc': f'{prefix}/lrc/{quote(name)}.lrc' } ) return result
DIR = '/Users/rexchow/Downloads/upload' albums = get_albums(DIR) print(json.dumps(albums, ensure_ascii=False, indent=2))