From c105fba74906a674c886e50c06ba5907a64fc8be Mon Sep 17 00:00:00 2001 From: Tristan Smith Date: Wed, 12 Mar 2025 14:18:51 -0400 Subject: [PATCH] dumb commit --- music.py | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100755 music.py diff --git a/music.py b/music.py new file mode 100755 index 0000000..6d521a1 --- /dev/null +++ b/music.py @@ -0,0 +1,100 @@ +import os +import platform +import datetime +from pydub import AudioSegment +import gspread +from google.oauth2.service_account import Credentials +import logging +import time + +# Enable debug logging for troubleshooting +logging.basicConfig(level=logging.DEBUG) + +# Google Sheets setup +SCOPES = [ + 'https://www.googleapis.com/auth/spreadsheets', + 'https://www.googleapis.com/auth/drive' +] +SERVICE_ACCOUNT_FILE = '../credentials.json' # Replace with your credentials file + +credentials = Credentials.from_service_account_file( + SERVICE_ACCOUNT_FILE, scopes=SCOPES +) +client = gspread.authorize(credentials) + +# Open the Google Sheet by ID +SPREADSHEET_ID = "15a6dmLkK8yk-GaXxDgljgf4zdgZ2FsJyxk_DF_60OhQ" +try: + spreadsheet = client.open_by_key(SPREADSHEET_ID) + sheet = spreadsheet.sheet1 +except Exception as e: + print(f"Error accessing Google Sheet: {e}") + exit() + +# Add headers to the Google Sheet if it's empty +if not sheet.get_all_records(): + sheet.append_row(["File Name", "Duration (sec)", "File Size (KB)", "Date Created"]) + +# Function to extract metadata using pydub +def get_audio_metadata(file_path): + try: + # Use pydub to load the audio file and calculate duration + audio = AudioSegment.from_file(file_path) + duration_seconds = int(len(audio) / 1000) + + minutes = duration_seconds // 60 + seconds = duration_seconds % 60 + duration_formatted = f"{minutes}:{seconds:02d}" + + # Get file size in KB + file_size = os.path.getsize(file_path) / 1024 + + # Get creation date + if platform.system() == "Windows": + created_time = os.path.getctime(file_path) # Creation time for Windows + else: + stat = os.stat(file_path) + created_time = stat.st_birthtime if hasattr(stat, 'st_birthtime') else stat.st_mtime # For Unix-based systems + + # Convert to readable date + created_date = datetime.datetime.fromtimestamp(created_time).strftime('%Y-%m-%d %H:%M:%S') + + return { + "file_name": os.path.basename(file_path), + "duration": duration_formatted, + "file_size": round(file_size, 2), + "created_date": created_date, + } + except Exception as e: + print(f"Error processing file {file_path}: {e}") + return None + +# Directory containing audio files +audio_dir = "/home/tristan/fuck/" +if not os.path.exists(audio_dir): + print(f"Directory '{audio_dir}' not found!") + exit() + +# Process files and append metadata to Google Sheets +for root, _, files in os.walk(audio_dir): + for file in files: + if file.lower().endswith(('.mp3', '.wav', '.flac', '.aac', '.ogg')): + file_path = os.path.join(root, file) + print(f"Processing file: {file_path}") # Debugging + + metadata = get_audio_metadata(file_path) + if metadata: + print(f"Metadata for {metadata['file_name']}: {metadata}") # Debugging + try: + sheet.append_row([ + metadata["file_name"], + metadata["duration"], + metadata["file_size"], + metadata["created_date"], + ]) + print(f"Successfully added {metadata['file_name']} to Google Sheet.") + time.sleep(0.5) # Pause to avoid hitting rate limits + except Exception as e: + print(f"Failed to write metadata for {file_path}: {e}") + +print("Metadata export completed.")