File size: 1,927 Bytes
c62ee22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""

Classe que será declarada no arquivo main.py para lidar com a autenticação do google e suas além de se adaptar com o Gradio

"""
from conversor.converter import GoogleDriveDownload
import gradio as gr
class GoogleDriveHandler:
    def __init__(self):
        self.downloader = None #Iniciando sem credenciais
        
    def autenticar(self):
        self.downloader = GoogleDriveDownload()
        return "Google Drive autenticado com sucesso!"
    
    def list_folders(self):
        #Tenta autenticar no google drive
        if not self.downloader:
            return ["❌ Você precisa autenticar primeiro!"]
        
        pastas = self.downloader.list_folders()
        if not pastas:
            return gr.Dropdown(choices=["Nenhuma pasta encontrada"], value="Nenhuma pasta encontrada")
    
        return gr.Dropdown(choices=list(pastas.keys()), value=list(pastas.keys())[0])
    
    def list_videos(self, pasta_selecionada):
        #Tenta autenticar no google drive
        if not self.downloader:
            return ["❌ Você precisa autenticar primeiro!"]
        
        pastas = self.downloader.list_folders()
        pasta_id = pastas.get(pasta_selecionada)
        
        if not pasta_id:
            return ["Nenhuma pasta selecionada"]
        
        videos = self.downloader.list_videos(pasta_id) #Lista os videos da pasta selecionada do drive
        if not isinstance(videos, list):
            return ["Erro ao carregar vídeos"]
        video_nomes = []
        for video in videos:
            if isinstance(video, dict) and "name" in video:
                video_nomes.append(video["name"])
            else:
                print(f"Vídeo ignorado: {video}")  # Log para vídeos não processados
        if not video_nomes:
            return ["Nenhum vídeo encontrado"]
        
        return gr.CheckboxGroup(choices=video_nomes)