import os
import json
import sys
from datetime import datetime
import subprocess
import eyed3

def get_id3_data(file_path, url_prefix):
    try:
        audiofile = eyed3.load(file_path)
        if audiofile.tag:
            print(f"Processing ID3 tags for: {file_path}")
            print(f"Title: {audiofile.tag.title}")
            print(f"Artist: {audiofile.tag.artist}")
            print(f"Album: {audiofile.tag.album}")
            return {
                "name": audiofile.tag.title,
                "artist": audiofile.tag.artist,
                "album": audiofile.tag.album,
                "url": os.path.join(url_prefix, os.path.basename(file_path)),
                "cover_art_url": "defaultalbum.jpg",
                "datemod": datetime.fromtimestamp(os.path.getmtime(file_path)).strftime('%Y-%m-%d %H:%M:%S')
            }
    except Exception as e:
        print(f"Error processing {file_path}: {e}")
    return None

def create_tunz_json(directory, json_file, url_prefix):
    songs = []
    for filename in os.listdir(directory):
        if filename.endswith(".mp3"):
            file_path = os.path.join(directory, filename)
            id3_data = get_id3_data(file_path, url_prefix)
            if id3_data:
                songs.append(id3_data)
    
    tunz_data = {
        "songs": songs,
        "default_album_art": "defaultalbum.jpg"
    }
    
    with open(json_file, "w") as f:
        f.write("tunz = " + json.dumps(tunz_data, indent=4) + ";\n")

if __name__ == "__main__":
    if len(sys.argv) != 4:
        print("Usage: python script.py <directory_to_scan> <output_json_file> <url_prefix>")
        sys.exit(1)
    
    directory = sys.argv[1]
    json_file = sys.argv[2]
    url_prefix = sys.argv[3]
    
    if not os.path.isdir(directory):
        print("Error: Directory not found.")
        sys.exit(1)
    
    create_tunz_json(directory, json_file, url_prefix)
