File size: 1,919 Bytes
e79a00d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import os
import logging
import subprocess
import time

def download_audio(youtube_url):
    """Downloads audio from the given YouTube URL and saves it to audio_files directory."""
    # Create audio_files directory if it doesn't exist
    if not os.path.exists('audio_files'):
        os.makedirs('audio_files')

    # Use yt-dlp to download audio
    command = [
        'yt-dlp',
        '-x',  # Extract audio
        '--audio-format', 'wav',  # Convert to WAV format
        '-o', 'audio_files/%(title)s.%(ext)s',  # Output format
        youtube_url
    ]

    result = subprocess.run(command, capture_output=True, text=True)

    if result.returncode != 0:
        logging.error(f'Error downloading audio: {result.stderr}')
        raise Exception('Failed to download audio')

    # Wait a moment for the file to be created
    time.sleep(1)

def get_audio_filename():
    """Returns the latest downloaded audio filename from audio_files directory."""
    audio_files = os.listdir('audio_files')
    if audio_files:
        # Sort by modification time, return the latest .wav file
        audio_files.sort(key=lambda x: os.path.getmtime(os.path.join('audio_files', x)))
        for file in audio_files:
            if file.endswith('.wav'):
                return os.path.join('audio_files', file)
    return None

if __name__ == "__main__":
    youtube_url = input("Enter the YouTube URL: ")
    try:
        download_audio(youtube_url)

        # Get the latest audio file (optional step, can be used later for transcription)
        audio_file = get_audio_filename()
        if audio_file:
            print(f"Audio file downloaded: {audio_file}")
        else:
            logging.error('No audio file found after download.')
            raise Exception('No audio file found.')
    except Exception as e:
        logging.error(f'An error occurred: {e}')