euler314 commited on
Commit
c5e23a5
·
verified ·
1 Parent(s): e392d05

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +80 -0
app.py ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import json
3
+ import asyncio
4
+ import streamlit as st
5
+ import logging
6
+
7
+ # Configure logging
8
+ logging.basicConfig(
9
+ level=logging.INFO,
10
+ format='%(asctime)s - %(levelname)s - %(message)s',
11
+ handlers=[
12
+ logging.FileHandler('app.log'),
13
+ logging.StreamHandler()
14
+ ]
15
+ )
16
+
17
+ # Load Google OAuth config from environment variables
18
+ GOOGLE_OAUTH_CONFIG = {
19
+ "web": {
20
+ "client_id": os.environ.get("GOOGLE_CLIENT_ID"),
21
+ "project_id": os.environ.get("GOOGLE_PROJECT_ID"),
22
+ "auth_uri": os.environ.get("GOOGLE_AUTH_URI", "https://accounts.google.com/o/oauth2/auth"),
23
+ "token_uri": os.environ.get("GOOGLE_TOKEN_URI", "https://oauth2.googleapis.com/token"),
24
+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
25
+ "client_secret": os.environ.get("GOOGLE_CLIENT_SECRET"),
26
+ "redirect_uris": [os.environ.get("GOOGLE_REDIRECT_URI")]
27
+ }
28
+ }
29
+
30
+ # Setup the UI
31
+ st.set_page_config(page_title="Advanced File Downloader", layout="wide", page_icon="📁")
32
+
33
+ # Import the core components (still keeping modular organization)
34
+ from utils import USER_AGENTS, STEALTH_SETTINGS, PROXY_ROTATION_CONFIG
35
+ from utils import (
36
+ get_random_user_agent, sizeof_fmt, create_zip_file, humanize_file_size, get_domain,
37
+ is_download_link, normalize_download_url, detect_captcha, show_user_friendly_error
38
+ )
39
+ from google_drive import (
40
+ get_google_auth_url, exchange_code_for_credentials, google_drive_upload, create_drive_folder
41
+ )
42
+ from download_manager import DownloadManager
43
+ from rag_search import EnhancedRAGSearch
44
+
45
+ # Initialize session state variables
46
+ def initialize_session_state():
47
+ if 'files' not in st.session_state:
48
+ st.session_state.files = []
49
+ if 'downloaded_paths' not in st.session_state:
50
+ st.session_state.downloaded_paths = []
51
+ if 'download_complete' not in st.session_state:
52
+ st.session_state.download_complete = False
53
+ if 'selected_tab' not in st.session_state:
54
+ st.session_state.selected_tab = 0
55
+ if 'rag_search' not in st.session_state:
56
+ st.session_state.rag_search = EnhancedRAGSearch()
57
+ if 'keep_progress' not in st.session_state:
58
+ st.session_state.keep_progress = False
59
+ if 'google_credentials' not in st.session_state:
60
+ st.session_state.google_credentials = None
61
+ if 'mode' not in st.session_state:
62
+ st.session_state.mode = "Standard"
63
+ if 'use_proxy' not in st.session_state:
64
+ st.session_state.use_proxy = False
65
+ if 'proxy_string' not in st.session_state:
66
+ st.session_state.proxy_string = None
67
+ if 'stealth_mode' not in st.session_state:
68
+ st.session_state.stealth_mode = True
69
+
70
+ # Import the UI code while keeping the modular structure
71
+ from ui import setup_ui, create_sidebar, display_file_results, handle_downloads, handle_google_drive_upload
72
+ from main import main as app_main
73
+
74
+ # Set up and run the application
75
+ def main():
76
+ initialize_session_state()
77
+ app_main()
78
+
79
+ if __name__ == "__main__":
80
+ main()