File size: 1,960 Bytes
f793e88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1099d8a
f793e88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 json
import os
import gradio as gr

def process_srt(file_path, podcast_name, podcast_episode):
    # Get the directory of the current script and go one level up
    script_dir = os.path.dirname(__file__)
    parent_dir = os.path.dirname(script_dir)

    # Prepare the output path in the 'downloads' directory one level above script_dir
    output_dir = os.path.join(parent_dir, "downloads")
    base_name = os.path.basename(file_path).rsplit('.', 1)[0]
    output_file = os.path.join(output_dir, f"{base_name}.json")

    # Create the downloads directory if it doesn't exist
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    # Process the SRT file
    with open(file_path, 'r', encoding='utf-8') as file:
        srt_content = file.read()

    entries = srt_content.strip().split('\n\n')
    transcripts = []

    for entry in entries:
        lines = entry.split('\n')
        id = int(float(lines[0].replace('\ufeff', '').strip()))
        timestamp = lines[1]
        timestamp_start, timestamp_end = timestamp.split(" --> ")
        transcript = ' '.join(lines[2:])
        transcripts.append({'podcast_name': podcast_name, 'podcast_episode': podcast_episode, 'line_id': id, 'timestamp_start': timestamp_start, 'timestamp_end': timestamp_end, 'content': transcript})

    json_data = transcripts

    # Save the output to the specified JSON file
    with open(output_file, 'w', encoding='utf-8') as outfile:
        json.dump(json_data, outfile, indent=2)

    return output_file

# Create the Gradio interface
interface = gr.Interface(
    fn=process_srt,
    inputs=[
        gr.File(type='filepath', label='Upload Transcript (.srt)'),
        gr.Textbox(label='Podcast Name'),
        gr.Textbox(label='Podcast Episode')
    ],
    outputs='file',
    title='SRT to JSON Converter',
    description='Upload an SRT file and enter the podcast name and episode to convert it to JSON format.'
)

interface.launch(share=True)