sharul20001 commited on
Commit
02f3f32
·
verified ·
1 Parent(s): 732bddd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -54
app.py CHANGED
@@ -1,55 +1,49 @@
1
- # app.py (Space publik)
 
2
  import os
3
- from huggingface_hub import snapshot_download
4
- import sys
5
-
6
- # ---- 1) Set ENV sebelum Streamlit jalan (W A J I B) ----
7
- # HOME yang writable (agar tidak tulis ke '/.streamlit')
8
- os.environ.setdefault("HOME", "/home/user")
9
- # Matikan XSRF/CORS + naikan limit upload
10
- os.environ.setdefault("STREAMLIT_SERVER_ENABLE_XSRF_PROTECTION", "false")
11
- os.environ.setdefault("STREAMLIT_SERVER_ENABLE_CORS", "false")
12
- os.environ.setdefault("STREAMLIT_BROWSER_GATHER_USAGE_STATS", "false")
13
- os.environ.setdefault("STREAMLIT_SERVER_MAX_UPLOAD_SIZE", "1024")
14
-
15
- # (opsional) siapkan config.toml sebagai backup
16
- try:
17
- cfg_dir = os.path.join(os.environ["HOME"], ".streamlit")
18
- os.makedirs(cfg_dir, exist_ok=True)
19
- cfg_path = os.path.join(cfg_dir, "config.toml")
20
- if not os.path.exists(cfg_path):
21
- with open(cfg_path, "w", encoding="utf-8") as f:
22
- f.write(
23
- "[server]\n"
24
- "enableXsrfProtection = false\n"
25
- "enableCORS = false\n"
26
- "maxUploadSize = 1024\n"
27
- "\n[browser]\n"
28
- "gatherUsageStats = false\n"
29
- )
30
- except Exception:
31
- pass
32
-
33
- # ---- 2) Download Space privat ----
34
- LOCAL_DIR = snapshot_download(
35
- repo_id="sharul20001/veo", # <== pastikan benar
36
- repo_type="space",
37
- use_auth_token=os.getenv("HF_TOKEN"),
38
- )
39
-
40
- # ---- 3) Jalankan streamlit script dari Space privat ----
41
- streamlit_script = os.path.join(LOCAL_DIR, "app.py)
42
- if not os.path.exists(streamlit_script):
43
- print(f"File tidak ditemukan: {streamlit_script}")
44
- sys.exit(1)
45
-
46
- os.execvp(
47
- "streamlit",
48
- [
49
- "streamlit",
50
- "run",
51
- streamlit_script,
52
- "--server.address", "0.0.0.0",
53
- "--server.port", os.getenv("PORT", "7860"),
54
- ],
55
- )
 
1
+ import streamlit as st
2
+ import google.generativeai as genai
3
  import os
4
+
5
+ # ==============================
6
+ # 1. Setup API Key
7
+ # ==============================
8
+ API_KEY = os.getenv("GOOGLE_API_KEY") # nanti set di HuggingFace "Repository Secrets"
9
+ if not API_KEY:
10
+ st.error("⚠️ GOOGLE_API_KEY belum diset di Secrets.")
11
+ else:
12
+ genai.configure(api_key=API_KEY)
13
+
14
+ # ==============================
15
+ # 2. UI Streamlit
16
+ # ==============================
17
+ st.set_page_config(page_title="Veo‑3 Video Generator 🚀")
18
+ st.title("🎬 Veo‑3 Video Generator")
19
+
20
+ prompt = st.text_area("Masukkan deskripsi video yang ingin dibuat:",
21
+ "Seekor naga terbang di angkasa dengan gaya anime")
22
+
23
+ duration = st.slider("Durasi video (detik)", 2, 10, 4)
24
+
25
+ if st.button("🚀 Generate Video"):
26
+ if not API_KEY:
27
+ st.warning("Silakan set GOOGLE_API_KEY terlebih dahulu.")
28
+ else:
29
+ with st.spinner("Sedang generate video dari Veo‑3..."):
30
+ try:
31
+ # ==============================
32
+ # 3. Panggilan API Veo‑3
33
+ # ==============================
34
+ response = genai.generate_video(
35
+ model="veo-3",
36
+ prompt=prompt,
37
+ duration=duration,
38
+ )
39
+
40
+ video_url = response.video.uri # link URL video hasil (Veo API balikin URI ke file mp4)
41
+
42
+ # ==============================
43
+ # 4. Tampilkan hasil
44
+ # ==============================
45
+ st.video(video_url)
46
+ st.success("✅ Video berhasil dibuat.")
47
+
48
+ except Exception as e:
49
+ st.error(f"Terjadi error: {e}")