1 line
391 KiB
JSON
1 line
391 KiB
JSON
{"repo": "1wanganshi/baize-fast-mix-video", "files": {"webui/Main.py": {"39fd46106e09f4c3de66282a378fdf61ac9d5e53": {"t": 1785595162.3623326, "n": 55128, "h": "08ac97831140ed47", "c": "import os\nimport sys\nimport webbrowser\nfrom uuid import UUID, uuid4\n\nimport requests\nimport streamlit as st\nfrom loguru import logger\n\n# Add the root directory of the project to the system path to allow importing modules from the project\nroot_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))\nif root_dir not in sys.path:\n sys.path.append(root_dir)\n print(\"******** sys.path ********\")\n print(sys.path)\n print(\"\")\n\nfrom app.config import config\nfrom app.models.schema import (\n MaterialInfo,\n VideoAspect,\n VideoConcatMode,\n VideoParams,\n VideoTransitionMode,\n)\nfrom app.services import llm, voice\nfrom app.utils import utils\n\n\ndef get_config_snapshot():\n return utils.to_json(\n {\n \"app\": config.app,\n \"ui\": config.ui,\n }\n )\n\n\ndef save_config_if_changed(force: bool = False):\n snapshot = get_config_snapshot()\n if force or st.session_state.get(\"_config_snapshot\") != snapshot:\n config.save_config()\n st.session_state[\"_config_snapshot\"] = get_config_snapshot()\n\n\nst.set_page_config(\n page_title=\"白泽混剪\",\n page_icon=\"🎬\",\n layout=\"wide\",\n initial_sidebar_state=\"auto\",\n menu_items=None,\n)\n\n\nstreamlit_style = \"\"\"\n<style>\nh1 {\n padding-top: 0 !important;\n}\n\nheader[data-testid=\"stHeader\"],\ndiv[data-testid=\"stToolbar\"],\ndiv[data-testid=\"stDecoration\"],\ndiv[data-testid=\"stStatusWidget\"],\n#MainMenu,\nfooter {\n display: none !important;\n visibility: hidden !important;\n}\n\n.block-container {\n padding-top: 1.2rem !important;\n}\n</style>\n\"\"\"\nst.markdown(streamlit_style, unsafe_allow_html=True)\n\n# 瀹氫箟璧勬簮鐩綍\nfont_dir = os.path.join(root_dir, \"resource\", \"fonts\")\nsong_dir = os.path.join(root_dir, \"resource\", \"songs\")\ni18n_dir = os.path.join(root_dir, \"webui\", \"i18n\")\nconfig_file = os.path.join(root_dir, \"webui\", \".streamlit\", \"webui.toml\")\nsystem_locale = utils.get_system_locale()\n\n\nif \"video_subject\" not in st.session_state:\n st.session_state[\"video_subject\"] = \"\"\nif \"video_script\" not in st.session_state:\n st.session_state[\"video_script\"] = \"\"\nif \"video_terms\" not in st.session_state:\n st.session_state[\"video_terms\"] = \"\"\nif \"video_script_prompt\" not in st.session_state:\n st.session_state[\"video_script_prompt\"] = \"\"\nif \"custom_system_prompt\" not in st.session_state:\n st.session_state[\"custom_system_prompt\"] = llm.DEFAULT_SCRIPT_SYSTEM_PROMPT\nif \"use_custom_system_prompt\" not in st.session_state:\n st.session_state[\"use_custom_system_prompt\"] = False\nif \"ui_language\" not in st.session_state:\n st.session_state[\"ui_language\"] = config.ui.get(\"language\", system_locale)\nif \"local_video_materials\" not in st.session_state:\n # 记住用户最近一次已经落盘的本地素材,避免二次生成时丢失素材列表。\n st.session_state[\"local_video_materials\"] = []\nif \"generation_in_progress\" not in st.session_state:\n st.session_state[\"generation_in_progress\"] = False\nif \"_config_snapshot\" not in st.session_state:\n st.session_state[\"_config_snapshot\"] = get_config_snapshot()\n\n# 鍔犺浇璇█鏂囦欢\nlocales = utils.load_locales(i18n_dir)\n\n# 鍒涘缓涓€涓《閮ㄦ爮锛屽寘鍚爣棰樺拰璇█閫夋嫨\ntitle_col, lang_col = st.columns([3, 1])\n\nwith title_col:\n st.title(f\"白泽混剪 v{config.project_version}\")\n\nwith lang_col:\n display_languages = []\n selected_index = 0\n for i, code in enumerate(locales.keys()):\n display_languages.append(f\"{code} - {locales[code].get('Language')}\")\n if code == st.session_state.get(\"ui_language\", \"\"):\n selected_index = i\n\n selected_language = st.selectbox(\n \"Language / 璇█\",\n options=display_languages,\n index=selected_index,\n key=\"top_language_selector\",\n label_visibility=\"collapsed\",\n )\n if selected_language:\n code = selected_language.split(\" - \")[0].strip()\n st.session_state[\"ui_language\"] = code\n config.ui[\"language\"] = code\n\nsupport_locales = [\n \"zh-CN\",\n \"zh-HK\",\n \"zh-TW\",\n \"de-DE\",\n \"en-US\",\n \"fr-FR\",\n \"ru-RU\",\n \"vi-VN\",\n \"th-TH\",\n \"tr-TR\",\n]\n\n\n@st.cache_data(show_spinner=False)\ndef get_all_fonts():\n fonts = []\n for root, dirs, files in os.walk(font_dir):\n for file in files:\n if file.endswith(\".ttf\") or file.endswith(\".ttc\"):\n fonts.append(file)\n fonts.sort()\n return fonts\n\n\n@st.cache_data(show_spinner=False)\ndef get_all_songs():\n songs = []\n for root, dirs, files in os.walk(song_dir):\n for file in files:\n if file.endswith(\".mp3\"):\n songs.append(file)\n return songs\n\n\ndef open_task_folder(task_id):\n try:\n # task_id 搴斿缁堟槸鏈嶅姟绔敓鎴愮殑 UUID銆傝繖閲屽厛鍋氭牸寮忔牎楠岋紝閬垮厤寮傚父鍊?\n # 閫氳繃璺緞鎷兼帴璁块棶浠诲姟鐩綍涔嬪鐨勪綅缃紝涔熼伩鍏嶅悗缁墦寮€鐩綍鏃惰Е鍙?\n # 骞冲彴 shell 瀵圭壒娈婂瓧绗︾殑瑙i噴銆?\n normalized_task_id = str(UUID(str(task_id)))\n tasks_root = os.path.abspath(os.path.join(root_dir, \"storage\", \"tasks\"))\n path = os.path.abspath(os.path.join(tasks_root, normalized_task_id))\n\n # 鍗充娇 UUID 鏍¢獙閫氳繃锛屼篃鍐嶆纭鏈€缁堣矾寰勪粛鍦ㄤ换鍔℃牴鐩綍鍐咃紝閬垮厤\n # 鏈潵璋冪敤鏂硅皟鏁?task_id 鏉ユ簮鏃跺紩鍏ヨ矾寰勭┛瓒婇闄┿€?\n if not path.startswith(tasks_root + os.sep):\n logger.warning(f\"invalid task folder path: {path}\")\n return\n\n if os.path.isdir(path):\n webbrowser.open(f\"file://{path}\")\n except Exception as e:\n logger.error(e)\n\n\ndef scroll_to_bottom():\n js = \"\"\"\n <script>\n console.log(\"scroll_to_bottom\");\n function scroll(dummy_var_to_force_repeat_execution){\n var sections = parent.document.querySelectorAll('section.main');\n console.log(sections);\n for(let index = 0; index<sections.length; index++) {\n sections[index].scrollTop = sections[index].scrollHeight;\n }\n }\n scroll(1);\n </script>\n \"\"\"\n st.components.v1.html(js, height=0, width=0)\n\n\ndef init_log():\n logger.remove()\n _lvl = \"DEBUG\"\n\n def format_record(record):\n # 鑾峰彇鏃ュ織璁板綍涓殑鏂囦欢鍏ㄨ矾寰?\n file_path = record[\"file\"].path\n # 灏嗙粷瀵硅矾寰勮浆鎹负鐩稿浜庨」鐩牴鐩綍鐨勮矾寰?\n relative_path = os.path.relpath(file_path, root_dir)\n # 鏇存柊璁板綍涓殑鏂囦欢璺緞\n record[\"file\"].path = f\"./{relative_path}\"\n # 杩斿洖淇敼鍚庣殑鏍煎紡瀛楃涓?\n # 鎮ㄥ彲浠ユ牴鎹渶瑕佽皟鏁磋繖閲岀殑鏍煎紡\n record[\"message\"] = record[\"message\"].replace(root_dir, \".\")\n\n _format = (\n \"<green>{time:%Y-%m-%d %H:%M:%S}</> | \"\n + \"<level>{level}</> | \"\n + '\"{file.path}:{line}\":<blue> {function}</> '\n + \"- <level>{message}</>\"\n + \"\\n\"\n )\n return _format\n\n logger.add(\n sys.stdout,\n level=_lvl,\n format=format_record,\n colorize=True,\n )\n\n\ninit_log()\n\nlocales = utils.load_locales(i18n_dir)\n\n\ndef tr(key):\n loc = locales.get(st.session_state[\"ui_language\"], {})\n return loc.get(\"Translation\", {}).get(key, key)\n\n@st.cache_data(ttl=300, show_spinner=False)\ndef get_groq_model_ids(api_key: str, base_url: str) -> list[str]:\n if not api_key:\n return []\n\n normalized_base_url = (base_url or \"https://api.groq.com/openai/v1\").strip().rstrip(\"/\")\n models_url = f\"{normalized_base_url}/models\"\n\n try:\n response = requests.get(\n models_url,\n headers={\"Authorization\": f\"Bearer {api_key}\"},\n timeout=10,\n )\n response.raise_for_status()\n payload = response.json()\n data = payload.get(\"data\", [])\n\n model_ids = []\n for item in data:\n if isinstance(item, dict):\n model_id = item.get(\"id\")\n if isinstance(model_id, str) and model_id.strip():\n model_ids.append(model_id.strip())\n\n return sorted(set(model_ids))\n except Exception as e:\n logger.warning(f\"failed to fetch groq models: {e}\")\n return []\n\n# 鍒涘缓鍩虹璁剧疆鎶樺彔妗?\nif not config.app.get(\"hide_config\", False):\n with st.expander(tr(\"Basic Settings\"), expanded=False):\n config_panels = st.columns(3)\n left_config_panel = config_panels[0]\n middle_config_panel = config_panels[1]\n right_config_panel = config_panels[2]\n\n # 宸︿晶闈㈡澘 - 鏃ュ織璁剧疆\n with left_config_panel:\n # 鏄惁闅愯棌閰嶇疆闈㈡澘\n hide_config = st.checkbox(\n tr(\"Hide Basic Settings\"), value=config.app.get(\"hide_config\", False)\n )\n config.app[\"hide_config\"] = hide_config\n\n # 鏄惁绂佺敤鏃ュ織鏄剧ず\n hide_log = st.checkbox(\n tr(\"Hide Log\"), value=config.ui.get(\"hide_log\", False)\n )\n config.ui[\"hide_log\"] = hide_log\n\n # 涓棿闈㈡澘 - LLM 璁剧疆\n\n with middle_config_panel:\n st.write(tr(\"LLM Settings\"))\n # 涓嬫媺妗嗛渶瑕佸睍绀衡€淎IHubMix锛堟帹鑽愶級鈥濊繖绫婚潰鍚戠敤鎴风殑鏂囨锛?\n # 浣嗛厤缃枃浠跺拰鍚庣閫昏緫蹇呴』缁х画浣跨敤绋冲畾鐨勫皬鍐?provider id銆?\n # 鍥犳杩欓噷鏄惧紡缁存姢 display label 鍜?provider id 鐨勬槧灏勶紝閬垮厤\n # UI 鏂囨鍙樺寲姹℃煋 `config.app[\"llm_provider\"]`銆?\n aihubmix_label = f\"AIHubMix ({tr('Recommended')})\"\n if config.ui.get(\"language\") == \"zh\":\n aihubmix_label = \"AIHubMix锛堟帹鑽愶級\"\n llm_provider_options = [\n (\"OpenAI\", \"openai\"),\n (aihubmix_label, \"aihubmix\"),\n (\"Moonshot\", \"moonshot\"),\n (\"Azure\", \"azure\"),\n (\"Qwen\", \"qwen\"),\n (\"DeepSeek\", \"deepseek\"),\n (\"ModelScope\", \"modelscope\"),\n (\"Gemini\", \"gemini\"),\n (\"Grok\", \"grok\"),\n (\"Groq\", \"groq\"),\n (\"Ollama\", \"ollama\"),\n (\"G4f\", \"g4f\"),\n (\"OneAPI\", \"oneapi\"),\n (\"Cloudflare\", \"cloudflare\"),\n (\"ERNIE\", \"ernie\"),\n (\"MiniMax\", \"minimax\"),\n (\"MiMo\", \"mimo\"),\n (\"Pollinations\", \"pollinations\"),\n (\"LiteLLM\", \"litellm\"),\n ]\n llm_provider_labels = [label for label, _ in llm_provider_options]\n llm_provider_values = {\n label: provider_id for label, provider_id in llm_provider_options\n }\n saved_llm_provider = config.app.get(\"llm_provider\", \"openai\").lower()\n saved_llm_provider_index = 0\n for i, (_, provider_id) in enumerate(llm_provider_options):\n if provider_id == saved_llm_provider:\n saved_llm_provider_index = i\n break\n\n llm_provider_label = st.selectbox(\n tr(\"LLM Provider\"),\n options=llm_provider_labels,\n index=saved_llm_provider_index,\n )\n llm_helper = st.container()\n llm_provider = llm_provider_values[llm_provider_label]\n config.app[\"llm_provider\"] = llm_provider\n\n llm_api_key = config.app.get(f\"{llm_provider}_api_key\", \"\")\n llm_secret_key = config.app.get(\n f\"{llm_provider}_secret_key\", \"\"\n ) # only for baidu ernie\n llm_base_url = config.app.get(f\"{llm_provider}_base_url\", \"\")\n llm_model_name = config.app.get(f\"{llm_provider}_model_name\", \"\")\n llm_account_id = config.app.get(f\"{llm_provider}_account_id\", \"\")\n\n tips = \"\"\n if llm_provider == \"ollama\":\n if not llm_model_name:\n llm_model_name = \"qwen:7b\"\n if not llm_base_url:\n llm_base_url = config.get_default_ollama_base_url()\n\n with llm_helper:\n docker_hint = \"\"\n if config.is_running_in_container():\n docker_hint = \"\\n > 检测到容器环境,未配置 Base Url 时会默认使用 `http://host.docker.internal:11434/v1`\\n\"\n tips = f\"\"\"\n ##### Ollama 配置说明\n - **API Key**: 随便填写,比如 123\n - **Base Url**: 一般为 http://localhost:11434/v1\n - 如果 `白泽混剪` 和 `Ollama` 不在同一台机器上,需要填写 `Ollama` 机器的 IP 地址\n - 如果 `白泽混剪` 是 Docker 部署,建议填写 `http://host.docker.internal:11434/v1`{docker_hint}\n - **Model Name**: 使用 `ollama list` 查看,比如 `qwen:7b`\n \"\"\"\n\n if llm_provider == \"openai\":\n if not llm_model_name:\n llm_model_name = \"gpt-3.5-turbo\"\n with llm_helper:\n tips = \"\"\"\n ##### OpenAI 閰嶇疆璇存槑\n > 闇€瑕乂PN寮€鍚叏灞€娴侀噺妯″紡\n - **API Key**: [鐐瑰嚮鍒板畼缃戠敵璇穄(https://platform.openai.com/api-keys)\n - **Base Url**: 瀹樻柟 OpenAI 鍙暀绌猴紱濡傛灉浣跨敤 OpenAI 鍏煎渚涘簲鍟嗭紙渚嬪 OpenRouter锛夛紝璇峰~鍐欏搴旂殑鍏煎鎺ュ彛鍦板潃\n - **Model Name**: 濉啓**鏈夋潈闄?*鐨勬ā鍨嬶紱濡傛灉浣跨敤鍏煎渚涘簲鍟嗭紝璇峰~鍐欒骞冲彴鏀寔鐨勬ā鍨?ID\n \"\"\"\n\n if llm_provider == \"aihubmix\":\n if not llm_model_name:\n llm_model_name = \"gpt-5.4-mini\"\n if not llm_base_url:\n llm_base_url = \"https://aihubmix.com/v1\"\n with llm_helper:\n tips = \"\"\"\n ##### AIHubMix 閰嶇疆璇存槑\n - **娉ㄥ唽閾炬帴**: [鐐瑰嚮娉ㄥ唽 AIHubMix](https://aihubmix.com/)\n - **Base Url**: 棰勫~ https://aihubmix.com/v1\n - **鎺ㄨ崘妯″瀷**: 榛樿 gpt-5.4-mini锛屼篃鍙互濉啓 AIHubMix 鏀寔鐨勫厤璐规ā鍨嬫垨鍏跺畠妯″瀷 ID\n\n 鎺ㄨ崘鐞嗙敱锛?\n - **妯″瀷鍏?*: Claude銆丟PT銆丟emini銆丟rok銆丏eepSeek銆侀€氫箟绛?700+ 妯″瀷涓€绔欒鐩?\n - **绋冲畾**: 鏃犻檺骞跺彂锛屾案杩滃湪绾匡紝闆嗙兢閮ㄧ讲浜庤胺姝屼簯锛岄暱鏈熶负浼楀鐭ュ悕搴旂敤鎻愪緵楂樺苟鍙戞湇鍔?\n - **鑳藉姏瀹屾暣**: 鏂囨湰銆佸浘鐗囩敓鎴愩€佽棰戠敓鎴愩€乀TS銆丼TT銆佸悜閲忓祵鍏ャ€丷erank锛屽妯℃€佸満鏅叏鎼炲畾\n - **璁¤垂閫忔槑**: 鎸夐噺浠樿垂锛屾棤浼氬憳鏃犲寘鏈堬紝鍏嶈垂妯″瀷鍙娇鐢?\n \"\"\"\n\n if llm_provider == \"moonshot\":\n if not llm_model_name:\n llm_model_name = \"moonshot-v1-8k\"\n with llm_helper:\n tips = \"\"\"\n ##### Moonshot 閰嶇疆璇存槑\n - **API Key**: [鐐瑰嚮鍒板畼缃戠敵璇穄(https://platform.moonshot.cn/console/api-keys)\n - **Base Url**: 鍥哄畾涓?https://api.moonshot.cn/v1\n - **Model Name**: 姣斿 moonshot-v1-8k锛孾鐐瑰嚮鏌ョ湅妯″瀷鍒楄〃](https://platform.moonshot.cn/docs/intro#%E6%A8%A1%E5%9E%8B%E5%88%97%E8%A1%A8)\n \"\"\"\n if llm_provider == \"oneapi\":\n if not llm_model_name:\n llm_model_name = (\n \"claude-3-5-sonnet-20240620\" # 榛樿妯″瀷锛屽彲浠ユ牴鎹渶瑕佽皟鏁?\n )\n with llm_helper:\n tips = \"\"\"\n ##### OneAPI 閰嶇疆璇存槑\n - **API Key**: 濉啓鎮ㄧ殑 OneAPI 瀵嗛挜\n - **Base Url**: 濉啓 OneAPI 鐨勫熀纭€ URL\n - **Model Name**: 濉啓鎮ㄨ浣跨敤鐨勬ā鍨嬪悕绉帮紝渚嬪 claude-3-5-sonnet-20240620\n \"\"\"\n\n if llm_provider == \"qwen\":\n if not llm_model_name:\n llm_model_name = \"qwen-max\"\n with llm_helper:\n tips = \"\"\"\n ##### 閫氫箟鍗冮棶Qwen 閰嶇疆璇存槑\n - **API Key**: [鐐瑰嚮鍒板畼缃戠敵璇穄(https://dashscope.console.aliyun.com/apiKey)\n - **Base Url**: 鐣欑┖\n - **Model Name**: 姣斿 qwen-max锛孾鐐瑰嚮鏌ョ湅妯″瀷鍒楄〃](https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction#3ef6d0bcf91wy)\n \"\"\"\n\n if llm_provider == \"g4f\":\n if not llm_model_name:\n llm_model_name = \"gpt-3.5-turbo\"\n with llm_helper:\n tips = \"\"\"\n ##### gpt4free 閰嶇疆璇存槑\n > [GitHub寮€婧愰」鐩甝(https://github.com/xtekky/gpt4free)锛屽彲浠ュ厤璐逛娇鐢℅PT妯″瀷锛屼絾鏄?*绋冲畾鎬ц緝宸?*\n - **API Key**: 闅忎究濉啓锛屾瘮濡?123\n - **Base Url**: 鐣欑┖\n - **Model Name**: 姣斿 gpt-3.5-turbo锛孾鐐瑰嚮鏌ョ湅妯″瀷鍒楄〃](https://github.com/xtekky/gpt4free/blob/main/g4f/models.py#L308)\n \"\"\"\n if llm_provider == \"azure\":\n with llm_helper:\n tips = \"\"\"\n ##### Azure 閰嶇疆璇存槑\n > [鐐瑰嚮鏌ョ湅濡備綍閮ㄧ讲妯″瀷](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/how-to/create-resource)\n - **API Key**: [鐐瑰嚮鍒癆zure鍚庡彴鍒涘缓](https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/OpenAI)\n - **Base Url**: 鐣欑┖\n - **Model Name**: 濉啓浣犲疄闄呯殑閮ㄧ讲鍚?\n \"\"\"\n\n if llm_provider == \"gemini\":\n if not llm_model_name:\n llm_model_name = \"gemini-1.0-pro\"\n\n with llm_helper:\n tips = \"\"\"\n ##### Gemini 閰嶇疆璇存槑\n > 闇€瑕乂PN寮€鍚叏灞€娴侀噺妯″紡\n - **API Key**: [鐐瑰嚮鍒板畼缃戠敵璇穄(https://ai.google.dev/)\n - **Base Url**: 鐣欑┖\n - **Model Name**: 姣斿 gemini-1.0-pro\n \"\"\"\n\n if llm_provider == \"grok\":\n if not llm_model_name:\n llm_model_name = \"grok-4.3\"\n if not llm_base_url:\n llm_base_url = \"https://api.x.ai/v1\"\n\n with llm_helper:\n tips = \"\"\"\n ##### Grok 閰嶇疆璇存槑\n - **API Key**: 濉啓鎮ㄧ殑 GrokAPI 瀵嗛挜\n - **Base Url**: 濉啓 GrokAPI 鐨勫熀纭€ URL\n - **Model Name**: 姣斿 grok-4.3\n \"\"\"\n\n if llm_provider == \"groq\":\n if not llm_model_name:\n llm_model_name = \"llama-3.3-70b-versatile\"\n if not llm_base_url:\n llm_base_url = \"https://api.groq.com/openai/v1\"\n\n with llm_helper:\n tips = \"\"\"\n ##### Groq 閰嶇疆璇存槑\n - **API Key**: [鐐瑰嚮鍒板畼缃戠敵璇穄(https://console.groq.com/keys)\n - **Base Url**: 鍥哄畾涓?https://api.groq.com/openai/v1\n - **Model Name**: 姣斿 llama-3.3-70b-versatile\n \"\"\"\n\n if llm_provider == \"deepseek\":\n if not llm_model_name:\n llm_model_name = \"deepseek-chat\"\n if not llm_base_url:\n llm_base_url = \"https://api.deepseek.com\"\n with llm_helper:\n tips = \"\"\"\n ##### DeepSeek 閰嶇疆璇存槑\n - **API Key**: [鐐瑰嚮鍒板畼缃戠敵璇穄(https://platform.deepseek.com/api_keys)\n - **Base Url**: 鍥哄畾涓?https://api.deepseek.com\n - **Model Name**: 鍥哄畾涓?deepseek-chat\n \"\"\"\n\n if llm_provider == \"mimo\":\n if not llm_model_name:\n llm_model_name = \"mimo-v2.5-pro\"\n if not llm_base_url:\n llm_base_url = \"https://api.xiaomimimo.com/v1\"\n with llm_helper:\n tips = \"\"\"\n ##### Xiaomi MiMo 閰嶇疆璇存槑\n - **API Key**: [鐐瑰嚮鍒板畼缃戠敵璇穄(https://platform.xiaomimimo.com/docs/zh-CN/quick-start/first-api-call)\n - **Base Url**: 鍥哄畾涓?https://api.xiaomimimo.com/v1\n - **Model Name**: 榛樿 mimo-v2.5-pro锛屼篃鍙互鎸夊畼鏂规枃妗e~鍐欏叾瀹冨彲鐢ㄦā鍨?\n \"\"\"\n\n if llm_provider == \"modelscope\":\n if not llm_model_name:\n llm_model_name = \"Qwen/Qwen3-32B\"\n if not llm_base_url:\n llm_base_url = \"https://api-inference.modelscope.cn/v1/\"\n with llm_helper:\n tips = \"\"\"\n ##### ModelScope 閰嶇疆璇存槑\n - **API Key**: [鐐瑰嚮鍒板畼缃戠敵璇穄(https://modelscope.cn/docs/model-service/API-Inference/intro)\n - **Base Url**: 鍥哄畾涓?https://api-inference.modelscope.cn/v1/\n - **Model Name**: 姣斿 Qwen/Qwen3-32B锛孾鐐瑰嚮鏌ョ湅妯″瀷鍒楄〃](https://modelscope.cn/models?filter=inference_type&page=1)\n \"\"\"\n\n if llm_provider == \"ernie\":\n with llm_helper:\n tips = \"\"\"\n ##### 百度文心一言配置说明\n - **API Key**: [点击到官网申请](https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application)\n - **Secret Key**: [点击到官网申请](https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application)\n - **Base Url**: 填写 **请求地址** [点击查看文档](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/jlil56u11#%E8%AF%B7%E6%B1%82%E8%AF%B4%E6%98%8E)\n \"\"\"\n\n if llm_provider == \"pollinations\":\n if not llm_model_name:\n llm_model_name = \"default\"\n with llm_helper:\n tips = \"\"\"\n ##### Pollinations AI Configuration\n - **API Key**: Optional - Leave empty for public access\n - **Base Url**: Default is https://text.pollinations.ai/openai\n - **Model Name**: Use 'openai-fast' or specify a model name\n \"\"\"\n\n if llm_provider == \"litellm\":\n if not llm_model_name:\n llm_model_name = \"openai/gpt-4o-mini\"\n with llm_helper:\n tips = \"\"\"\n ##### LiteLLM Configuration\n > [LiteLLM](https://github.com/BerriAI/litellm) routes to 100+ LLM providers via a unified interface.\n > Set your provider's API key as an env var: `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GEMINI_API_KEY`, `AWS_ACCESS_KEY_ID`, etc.\n - **Model Name**: LiteLLM format 鈥?`openai/gpt-4o`, `anthropic/claude-sonnet-4-20250514`, `bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0`, `gemini/gemini-2.5-flash`. See [full provider list](https://docs.litellm.ai/docs/providers)\n \"\"\"\n\n if tips and config.ui[\"language\"] == \"zh\":\n # AIHubMix 鑷韩灏辨槸 OpenAI-compatible 鑱氬悎骞冲彴锛涚敤鎴蜂富鍔ㄩ€夋嫨\n # 璇?provider 鏃讹紝鍐嶆樉绀?DeepSeek/Moonshot 鐨勯€氱敤鎺ㄨ崘浼氶€犳垚\n # 淇℃伅骞叉壈锛屼篃涓嶅埄浜庝繚鎸佸悎浣滃叆鍙g殑杞婚噺銆佹竻鏅般€?\n if llm_provider != \"aihubmix\":\n st.warning(\n \"涓浗鐢ㄦ埛寤鸿浣跨敤 **DeepSeek** 鎴?**Moonshot** 浣滀负澶фā鍨嬫彁渚涘晢\\n- 鍥藉唴鍙洿鎺ヨ闂紝涓嶉渶瑕乂PN \\n- 娉ㄥ唽灏遍€侀搴︼紝鍩烘湰澶熺敤\"\n )\n st.info(tips)\n\n st_llm_api_key = st.text_input(\n tr(\"API Key\"), value=llm_api_key, type=\"password\"\n )\n st_llm_base_url = st.text_input(tr(\"Base Url\"), value=llm_base_url)\n st_llm_model_name = \"\"\n if llm_provider != \"ernie\":\n if llm_provider == \"groq\":\n effective_api_key = st_llm_api_key or llm_api_key\n effective_base_url = st_llm_base_url or llm_base_url\n groq_models = get_groq_model_ids(\n api_key=effective_api_key,\n base_url=effective_base_url,\n )\n\n if groq_models:\n selected_index = 0\n if llm_model_name in groq_models:\n selected_index = groq_models.index(llm_model_name)\n\n st_llm_model_name = st.selectbox(\n tr(\"Model Name\"),\n options=groq_models,\n index=selected_index,\n key=\"groq_model_name_select\",\n )\n else:\n st_llm_model_name = st.text_input(\n tr(\"Model Name\"),\n value=llm_model_name,\n key=\"groq_model_name_input\",\n )\n if effective_api_key:\n st.caption(\n \"Unable to load Groq model list right now. You can still enter a model name manually.\"\n )\n else:\n st.caption(\n \"Add a Groq API key to load available models automatically.\"\n )\n else:\n st_llm_model_name = st.text_input(\n tr(\"Model Name\"),\n value=llm_model_name,\n key=f\"{llm_provider}_model_name_input\",\n )\n if st_llm_model_name:\n config.app[f\"{llm_provider}_model_name\"] = st_llm_model_name\n else:\n st_llm_model_name = None\n\n if st_llm_api_key:\n config.app[f\"{llm_provider}_api_key\"] = st_llm_api_key\n if st_llm_base_url:\n config.app[f\"{llm_provider}_base_url\"] = st_llm_base_url\n if st_llm_model_name:\n config.app[f\"{llm_provider}_model_name\"] = st_llm_model_name\n if llm_provider == \"ernie\":\n st_llm_secret_key = st.text_input(\n tr(\"Secret Key\"), value=llm_secret_key, type=\"password\"\n )\n config.app[f\"{llm_provider}_secret_key\"] = st_llm_secret_key\n\n if llm_provider == \"cloudflare\":\n st_llm_account_id = st.text_input(\n tr(\"Account ID\"), value=llm_account_id\n )\n if st_llm_account_id:\n config.app[f\"{llm_provider}_account_id\"] = st_llm_account_id\n\n # 鍙充晶闈㈡澘 - API 瀵嗛挜璁剧疆\n with right_config_panel:\n\n def get_keys_from_config(cfg_key):\n api_keys = config.app.get(cfg_key, [])\n if isinstance(api_keys, str):\n api_keys = [api_keys]\n api_key = \", \".join(api_keys)\n return api_key\n\n def save_keys_to_config(cfg_key, value):\n value = value.replace(\" \", \"\")\n if value:\n config.app[cfg_key] = value.split(\",\")\n\n st.write(tr(\"Video Source Settings\"))\n\n pexels_api_key = get_keys_from_config(\"pexels_api_keys\")\n pexels_api_key = st.text_input(\n tr(\"Pexels API Key\"), value=pexels_api_key, type=\"password\"\n )\n save_keys_to_config(\"pexels_api_keys\", pexels_api_key)\n\n pixabay_api_key = get_keys_from_config(\"pixabay_api_keys\")\n pixabay_api_key = st.text_input(\n tr(\"Pixabay API Key\"), value=pixabay_api_key, type=\"password\"\n )\n save_keys_to_config(\"pixabay_api_keys\", pixabay_api_key)\n\nllm_provider = config.app.get(\"llm_provider\", \"\").lower()\npanel = st.columns(3)\nleft_panel = panel[0]\nmiddle_panel = panel[1]\nright_panel = panel[2]\n\nparams = VideoParams(video_subject=\"\")\nuploaded_files = []\nuploaded_audio_file = None\nuploaded_voice_reference_file = None\ncustom_audio_file_types = [\"mp3\", \"wav\", \"m4a\", \"aac\", \"flac\", \"ogg\"]\n\nwith left_panel:\n with st.container(border=True):\n st.write(tr(\"Video Script Settings\"))\n params.video_subject = st.text_input(\n tr(\"Video Subject\"),\n key=\"video_subject\",\n ).strip()\n\n video_languages = [\n (tr(\"Auto Detect\"), \"\"),\n ]\n for code in support_locales:\n video_languages.append((code, code))\n\n selected_index = st.selectbox(\n tr(\"Script Language\"),\n index=0,\n options=range(\n len(video_languages)\n ), # Use the index as the internal option value\n format_func=lambda x: video_languages[x][\n 0\n ], # The label is displayed to the user\n )\n params.video_language = video_languages[selected_index][1]\n\n with st.expander(tr(\"Advanced Script Settings\"), expanded=False):\n params.paragraph_number = st.slider(\n tr(\"Script Paragraph Number\"),\n min_value=llm.MIN_SCRIPT_PARAGRAPH_NUMBER,\n max_value=llm.MAX_SCRIPT_PARAGRAPH_NUMBER,\n value=st.session_state.get(\"paragraph_number_input\", 1),\n key=\"paragraph_number_input\",\n )\n params.video_script_prompt = st.text_area(\n tr(\"Custom Script Requirements\"),\n height=100,\n max_chars=llm.MAX_SCRIPT_PROMPT_LENGTH,\n placeholder=tr(\"Custom Script Requirements Placeholder\"),\n key=\"video_script_prompt\",\n ).strip()\n\n use_custom_system_prompt = st.checkbox(\n tr(\"Use Custom System Prompt\"),\n help=tr(\"Use Custom System Prompt Help\"),\n key=\"use_custom_system_prompt\",\n )\n\n if use_custom_system_prompt:\n custom_system_prompt = st.text_area(\n tr(\"Custom System Prompt\"),\n height=240,\n max_chars=llm.MAX_SCRIPT_SYSTEM_PROMPT_LENGTH,\n key=\"custom_system_prompt\",\n ).strip()\n params.custom_system_prompt = custom_system_prompt\n else:\n params.custom_system_prompt = \"\"\n\n if st.button(\n tr(\"Generate Video Script and Keywords\"), key=\"auto_generate_script\"\n ):\n with st.spinner(tr(\"Generating Video Script and Keywords\")):\n script = llm.generate_script(\n video_subject=params.video_subject,\n language=params.video_language,\n paragraph_number=params.paragraph_number,\n video_script_prompt=params.video_script_prompt,\n custom_system_prompt=params.custom_system_prompt,\n )\n terms = llm.generate_terms(params.video_subject, script)\n if \"Error: \" in script:\n st.error(tr(script))\n elif \"Error: \" in terms:\n st.error(tr(terms))\n else:\n st.session_state[\"video_script\"] = script\n st.session_state[\"video_terms\"] = \", \".join(terms)\n params.video_script = st.text_area(\n tr(\"Video Script\"), value=st.session_state[\"video_script\"], height=280\n )\n if st.button(tr(\"Generate Video Keywords\"), key=\"auto_generate_terms\"):\n if not params.video_script:\n st.error(tr(\"Please Enter the Video Subject\"))\n st.stop()\n\n with st.spinner(tr(\"Generating Video Keywords\")):\n terms = llm.generate_terms(params.video_subject, params.video_script)\n if \"Error: \" in terms:\n st.error(tr(terms))\n else:\n st.session_state[\"video_terms\"] = \", \".join(terms)\n\n params.video_terms = st.text_area(\n tr(\"Video Keywords\"), value=st.session_state[\"video_terms\"]\n )\n\nwith middle_panel:\n with st.container(border=True):\n st.write(tr(\"Video Settings\"))\n video_concat_modes = [\n (tr(\"Sequential\"), \"sequential\"),\n (tr(\"Random\"), \"random\"),\n ]\n video_sources = [\n (tr(\"Pexels\"), \"pexels\"),\n (tr(\"Pixabay\"), \"pixabay\"),\n (tr(\"Local file\"), \"local\"),\n (tr(\"TikTok\"), \"douyin\"),\n (tr(\"Bilibili\"), \"bilibili\"),\n (tr(\"Xiaohongshu\"), \"xiaohongshu\"),\n ]\n\n saved_video_source_name = config.app.get(\"video_source\", \"pexels\")\n saved_video_source_index = [v[1] for v in video_sources].index(\n saved_video_source_name\n )\n\n selected_index = st.selectbox(\n tr(\"Video Source\"),\n options=range(len(video_sources)),\n format_func=lambda x: video_sources[x][0],\n index=saved_video_source_index,\n )\n params.video_source = video_sources[selected_index][1]\n config.app[\"video_source\"] = params.video_source\n\n if params.video_source == \"local\":\n # Streamlit 鐨勬枃浠剁被鍨嬫牎楠屽鎵╁睍鍚嶅ぇ灏忓啓鏁忔劅锛岃繖閲屽悓鏃舵斁琛屽ぇ灏忓啓涓ょ褰㈠紡銆?\n local_file_types = [\"mp4\", \"mov\", \"avi\", \"flv\", \"mkv\", \"jpg\", \"jpeg\", \"png\"]\n uploaded_files = st.file_uploader(\n tr(\"Upload Local Files\"),\n type=local_file_types + [file_type.upper() for file_type in local_file_types],\n accept_multiple_files=True,\n )\n\n selected_index = st.selectbox(\n tr(\"Video Concat Mode\"),\n index=1,\n options=range(\n len(video_concat_modes)\n ), # Use the index as the internal option value\n format_func=lambda x: video_concat_modes[x][\n 0\n ], # The label is displayed to the user\n )\n params.video_concat_mode = VideoConcatMode(\n video_concat_modes[selected_index][1]\n )\n\n # 瑙嗛杞満妯″紡\n video_transition_modes = [\n (tr(\"None\"), VideoTransitionMode.none.value),\n (tr(\"Shuffle\"), VideoTransitionMode.shuffle.value),\n (tr(\"FadeIn\"), VideoTransitionMode.fade_in.value),\n (tr(\"FadeOut\"), VideoTransitionMode.fade_out.value),\n (tr(\"SlideIn\"), VideoTransitionMode.slide_in.value),\n (tr(\"SlideOut\"), VideoTransitionMode.slide_out.value),\n ]\n selected_index = st.selectbox(\n tr(\"Video Transition Mode\"),\n options=range(len(video_transition_modes)),\n format_func=lambda x: video_transition_modes[x][0],\n index=0,\n )\n params.video_transition_mode = VideoTransitionMode(\n video_transition_modes[selected_index][1]\n )\n\n video_aspect_ratios = [\n (tr(\"Portrait\"), VideoAspect.portrait.value),\n (tr(\"Landscape\"), VideoAspect.landscape.value),\n ]\n selected_index = st.selectbox(\n tr(\"Video Ratio\"),\n options=range(\n len(video_aspect_ratios)\n ), # Use the index as the internal option value\n format_func=lambda x: video_aspect_ratios[x][\n 0\n ], # The label is displayed to the user\n )\n params.video_aspect = VideoAspect(video_aspect_ratios[selected_index][1])\n\n params.video_clip_duration = st.selectbox(\n tr(\"Clip Duration\"), options=[2, 3, 4, 5, 6, 7, 8, 9, 10], index=1\n )\n params.video_count = st.selectbox(\n tr(\"Number of Videos Generated Simultaneously\"),\n options=[1, 2, 3, 4, 5],\n index=0,\n )\n\n with st.expander(tr(\"Advanced Video Settings\"), expanded=False):\n video_codec_options = [\n (\"libx264 (CPU)\", \"libx264\"),\n (\"NVIDIA NVENC (h264_nvenc)\", \"h264_nvenc\"),\n (\"AMD AMF (h264_amf)\", \"h264_amf\"),\n (\"Intel QSV (h264_qsv)\", \"h264_qsv\"),\n (\"Windows MediaFoundation (h264_mf)\", \"h264_mf\"),\n (\"macOS VideoToolbox (h264_videotoolbox)\", \"h264_videotoolbox\"),\n ]\n saved_video_codec = config.app.get(\"video_codec\", \"libx264\")\n saved_video_codec_values = [item[1] for item in video_codec_options]\n if saved_video_codec not in saved_video_codec_values:\n saved_video_codec = \"libx264\"\n selected_codec_index = saved_video_codec_values.index(saved_video_codec)\n selected_codec_index = st.selectbox(\n tr(\"Video Encoder\"),\n options=range(len(video_codec_options)),\n index=selected_codec_index,\n format_func=lambda x: video_codec_options[x][0],\n help=tr(\"Video Encoder Help\"),\n )\n config.app[\"video_codec\"] = video_codec_options[selected_codec_index][1]\n with st.container(border=True):\n st.write(tr(\"Audio Settings\"))\n\n # 娣诲姞TTS鏈嶅姟鍣ㄩ€夋嫨涓嬫媺妗?\n tts_servers = [\n (\"voxcpm-tts\", \"VoxCPM 声音克隆\"),\n ]\n\n # 鑾峰彇淇濆瓨鐨凾TS鏈嶅姟鍣紝榛樿涓簐1\n saved_tts_server = config.ui.get(\"tts_server\", \"voxcpm-tts\")\n saved_tts_server_index = 0\n for i, (server_value, _) in enumerate(tts_servers):\n if server_value == saved_tts_server:\n saved_tts_server_index = i\n break\n\n selected_tts_server_index = st.selectbox(\n tr(\"TTS Servers\"),\n options=range(len(tts_servers)),\n format_func=lambda x: tts_servers[x][1],\n index=saved_tts_server_index,\n )\n\n selected_tts_server = tts_servers[selected_tts_server_index][0]\n config.ui[\"tts_server\"] = selected_tts_server\n\n friendly_names = {\n voice_name: voice.get_voxcpm_voice_label(voice_name)\n for voice_name in voice.get_voxcpm_voices()\n }\n saved_voice_name = config.ui.get(\"voice_name\", voice.VOXCPM_VOICE_NAME)\n if saved_voice_name not in friendly_names:\n saved_voice_name = voice.VOXCPM_VOICE_NAME\n voice_options = list(friendly_names.keys())\n selected_voice_index = st.selectbox(\n tr(\"Speech Synthesis\"),\n options=range(len(voice_options)),\n index=voice_options.index(saved_voice_name),\n format_func=lambda x: friendly_names[voice_options[x]],\n )\n voice_name = voice_options[selected_voice_index]\n params.voice_name = voice_name\n config.ui[\"voice_name\"] = voice_name\n\n uploaded_voice_reference_file = st.file_uploader(\n \"声音克隆参考音频\",\n type=custom_audio_file_types\n + [file_type.upper() for file_type in custom_audio_file_types],\n accept_multiple_files=False,\n key=\"voxcpm_reference_audio_uploader\",\n help=\"这里上传的是克隆参考音频,不会替代最终旁白。\",\n )\n if uploaded_voice_reference_file:\n st.audio(uploaded_voice_reference_file, format=\"audio/mp3\")\n if voice_name == voice.VOXCPM_VOICE_NAME:\n st.caption(\"VoxCPM 已作为内置语音克隆引擎使用。上传参考音频后会按该音色克隆,不依赖本地网址服务。\")\n else:\n st.caption(\"VoxCPM 已作为内置语音克隆引擎使用。当前音色会通过内置风格指令生成,也可以上传参考音频进一步克隆。\")\n\n params.voice_volume = st.selectbox(\n tr(\"Speech Volume\"),\n options=[0.6, 0.8, 1.0, 1.2, 1.5, 2.0, 3.0, 4.0, 5.0],\n index=2,\n )\n\n params.voice_rate = st.selectbox(\n tr(\"Speech Rate\"),\n options=[0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.5, 1.8, 2.0],\n index=2,\n )\n\n uploaded_audio_file = st.file_uploader(\n tr(\"Custom Audio File\"),\n type=custom_audio_file_types\n + [file_type.upper() for file_type in custom_audio_file_types],\n accept_multiple_files=False,\n key=\"custom_audio_file_uploader\",\n )\n if uploaded_audio_file:\n st.audio(uploaded_audio_file, format=\"audio/mp3\")\n st.info(\n tr(\n \"Custom audio will be used directly. TTS synthesis will be skipped for this task.\"\n )\n )\n\n bgm_options = [\n (tr(\"No Background Music\"), \"\"),\n (tr(\"Random Background Music\"), \"random\"),\n (tr(\"Custom Background Music\"), \"custom\"),\n ]\n selected_index = st.selectbox(\n tr(\"Background Music\"),\n index=1,\n options=range(\n len(bgm_options)\n ), # Use the index as the internal option value\n format_func=lambda x: bgm_options[x][\n 0\n ], # The label is displayed to the user\n )\n # Get the selected background music type\n params.bgm_type = bgm_options[selected_index][1]\n\n # Show or hide components based on the selection\n if params.bgm_type == \"custom\":\n custom_bgm_file = st.text_input(\n tr(\"Custom Background Music File\"), key=\"custom_bgm_file_input\"\n )\n if custom_bgm_file:\n # 杩欓噷涓嶇洿鎺ョ敤 os.path.exists 鍒ゆ柇锛屽洜涓虹敤鎴峰父瑙佽緭鍏ユ槸\n # output000.mp3锛岃繖涓枃浠跺悕闇€瑕佺敱鏈嶅姟灞傛槧灏勫埌 resource/songs\n # 鐩綍鍚庡啀鏍¢獙銆傛湇鍔″眰浼氱粺涓€闄愬埗鐩綍鍜屾枃浠剁被鍨嬶紝閬垮厤浠绘剰璺緞璇诲彇銆?\n params.bgm_file = custom_bgm_file.strip()\n # st.write(f\":red[宸查€夋嫨鑷畾涔夎儗鏅煶涔怾锛?*{custom_bgm_file}**\")\n params.bgm_volume = st.selectbox(\n tr(\"Background Music Volume\"),\n options=[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0],\n index=2,\n )\n\nwith right_panel:\n with st.container(border=True):\n st.write(tr(\"Subtitle Settings\"))\n params.subtitle_enabled = st.checkbox(tr(\"Enable Subtitles\"), value=True)\n font_names = get_all_fonts()\n saved_font_name = config.ui.get(\"font_name\", \"MicrosoftYaHeiBold.ttc\")\n saved_font_name_index = 0\n if saved_font_name in font_names:\n saved_font_name_index = font_names.index(saved_font_name)\n params.font_name = st.selectbox(\n tr(\"Font\"), font_names, index=saved_font_name_index\n )\n config.ui[\"font_name\"] = params.font_name\n\n subtitle_positions = [\n (tr(\"Top\"), \"top\"),\n (tr(\"Center\"), \"center\"),\n (tr(\"Bottom\"), \"bottom\"),\n (tr(\"Custom\"), \"custom\"),\n ]\n saved_subtitle_position = config.ui.get(\"subtitle_position\", \"custom\")\n saved_position_index = 3\n for i, (_, pos_value) in enumerate(subtitle_positions):\n if pos_value == saved_subtitle_position:\n saved_position_index = i\n break\n selected_index = st.selectbox(\n tr(\"Position\"),\n index=saved_position_index,\n options=range(len(subtitle_positions)),\n format_func=lambda x: subtitle_positions[x][0],\n )\n params.subtitle_position = subtitle_positions[selected_index][1]\n config.ui[\"subtitle_position\"] = params.subtitle_position\n\n if params.subtitle_position == \"custom\":\n saved_custom_position = config.ui.get(\"custom_position\", 75.0)\n custom_position = st.text_input(\n tr(\"Custom Position (% from top)\"),\n value=str(saved_custom_position),\n key=\"custom_position_input\",\n )\n try:\n params.custom_position = float(custom_position)\n if params.custom_position < 0 or params.custom_position > 100:\n st.error(tr(\"Please enter a value between 0 and 100\"))\n else:\n config.ui[\"custom_position\"] = params.custom_position\n except ValueError:\n st.error(tr(\"Please enter a valid number\"))\n\n font_cols = st.columns([0.3, 0.7])\n with font_cols[0]:\n saved_text_fore_color = config.ui.get(\"text_fore_color\", \"#FFFFFF\")\n params.text_fore_color = st.color_picker(\n tr(\"Font Color\"), saved_text_fore_color\n )\n config.ui[\"text_fore_color\"] = params.text_fore_color\n\n with font_cols[1]:\n saved_font_size = config.ui.get(\"font_size\", 60)\n params.font_size = st.slider(tr(\"Font Size\"), 30, 100, saved_font_size)\n config.ui[\"font_size\"] = params.font_size\n\n stroke_cols = st.columns([0.3, 0.7])\n with stroke_cols[0]:\n params.stroke_color = st.color_picker(tr(\"Stroke Color\"), \"#000000\")\n with stroke_cols[1]:\n params.stroke_width = st.slider(tr(\"Stroke Width\"), 0.0, 10.0, 1.5)\n\n subtitle_bg_cols = st.columns([0.4, 0.6])\n saved_subtitle_background_enabled = config.ui.get(\n \"subtitle_background_enabled\", True\n )\n with subtitle_bg_cols[0]:\n subtitle_background_enabled = st.checkbox(\n tr(\"Enable Subtitle Background\"),\n value=saved_subtitle_background_enabled,\n )\n config.ui[\"subtitle_background_enabled\"] = subtitle_background_enabled\n if subtitle_background_enabled:\n with subtitle_bg_cols[1]:\n saved_subtitle_background_color = config.ui.get(\n \"subtitle_background_color\", \"#000000\"\n )\n params.text_background_color = st.color_picker(\n tr(\"Subtitle Background Color\"),\n saved_subtitle_background_color,\n )\n config.ui[\"subtitle_background_color\"] = params.text_background_color\n else:\n params.text_background_color = False\n\n saved_rounded_subtitle_background = config.ui.get(\n \"rounded_subtitle_background\", False\n )\n # 鑳屾櫙鍏抽棴鏃讹紝鍦嗚鑳屾櫙娌℃湁鍙覆鏌撶殑搴曡壊銆傝繖閲岀鐢ㄦ帶浠跺苟淇濈暀鍘熼厤缃紝\n # 鐢ㄦ埛涓嬫閲嶆柊寮€鍚瓧骞曡儗鏅悗锛屽彲浠ョ户缁娇鐢ㄤ箣鍓嶄繚瀛樼殑鍦嗚鍋忓ソ銆?\n params.rounded_subtitle_background = st.checkbox(\n tr(\"Rounded Subtitle Background\"),\n value=(\n saved_rounded_subtitle_background\n if subtitle_background_enabled\n else False\n ),\n help=tr(\"Rounded Subtitle Background Help\"),\n disabled=not subtitle_background_enabled,\n )\n if subtitle_background_enabled:\n config.ui[\"rounded_subtitle_background\"] = (\n params.rounded_subtitle_background\n )\n with st.expander(tr(\"Click to show API Key management\"), expanded=False):\n st.subheader(tr(\"Manage Pexels and Pixabay API Keys\"))\n\n col1, col2 = st.tabs([tr(\"Pexels API Keys\"), tr(\"Pixabay API Keys\")])\n\n with col1:\n st.subheader(tr(\"Pexels API Keys\"))\n if config.app[\"pexels_api_keys\"]:\n st.write(tr(\"Current Keys:\"))\n for key in config.app[\"pexels_api_keys\"]:\n st.code(key)\n else:\n st.info(tr(\"No Pexels API Keys currently\"))\n\n new_key = st.text_input(tr(\"Add Pexels API Key\"), key=\"pexels_new_key\")\n if st.button(tr(\"Add Pexels API Key\")):\n if new_key and new_key not in config.app[\"pexels_api_keys\"]:\n config.app[\"pexels_api_keys\"].append(new_key)\n save_config_if_changed(force=True)\n st.success(tr(\"Pexels API Key added successfully\"))\n elif new_key in config.app[\"pexels_api_keys\"]:\n st.warning(tr(\"This API Key already exists\"))\n else:\n st.error(tr(\"Please enter a valid API Key\"))\n\n if config.app[\"pexels_api_keys\"]:\n delete_key = st.selectbox(\n tr(\"Select Pexels API Key to delete\"), config.app[\"pexels_api_keys\"], key=\"pexels_delete_key\"\n )\n if st.button(tr(\"Delete Selected Pexels API Key\")):\n config.app[\"pexels_api_keys\"].remove(delete_key)\n save_config_if_changed(force=True)\n st.success(tr(\"Pexels API Key deleted successfully\"))\n\n with col2:\n st.subheader(tr(\"Pixabay API Keys\"))\n\n if config.app[\"pixabay_api_keys\"]:\n st.write(tr(\"Current Keys:\"))\n for key in config.app[\"pixabay_api_keys\"]:\n st.code(key)\n else:\n st.info(tr(\"No Pixabay API Keys currently\"))\n\n new_key = st.text_input(tr(\"Add Pixabay API Key\"), key=\"pixabay_new_key\")\n if st.button(tr(\"Add Pixabay API Key\")):\n if new_key and new_key not in config.app[\"pixabay_api_keys\"]:\n config.app[\"pixabay_api_keys\"].append(new_key)\n save_config_if_changed(force=True)\n st.success(tr(\"Pixabay API Key added successfully\"))\n elif new_key in config.app[\"pixabay_api_keys\"]:\n st.warning(tr(\"This API Key already exists\"))\n else:\n st.error(tr(\"Please enter a valid API Key\"))\n\n if config.app[\"pixabay_api_keys\"]:\n delete_key = st.selectbox(\n tr(\"Select Pixabay API Key to delete\"), config.app[\"pixabay_api_keys\"], key=\"pixabay_delete_key\"\n )\n if st.button(tr(\"Delete Selected Pixabay API Key\")):\n config.app[\"pixabay_api_keys\"].remove(delete_key)\n save_config_if_changed(force=True)\n st.success(tr(\"Pixabay API Key deleted successfully\"))\n\nstart_button = st.button(\n tr(\"Generate Video\"),\n use_container_width=True,\n type=\"primary\",\n disabled=st.session_state[\"generation_in_progress\"],\n)\nif start_button:\n st.session_state[\"generation_in_progress\"] = True\n save_config_if_changed(force=True)\n task_id = str(uuid4())\n if not params.video_subject and not params.video_script:\n st.error(tr(\"Video Script and Subject Cannot Both Be Empty\"))\n st.session_state[\"generation_in_progress\"] = False\n scroll_to_bottom()\n st.stop()\n\n if params.video_source not in [\"pexels\", \"pixabay\", \"local\"]:\n st.error(tr(\"Please Select a Valid Video Source\"))\n st.session_state[\"generation_in_progress\"] = False\n scroll_to_bottom()\n st.stop()\n\n if params.video_source == \"pexels\" and not config.app.get(\"pexels_api_keys\", \"\"):\n st.error(tr(\"Please Enter the Pexels API Key\"))\n st.session_state[\"generation_in_progress\"] = False\n scroll_to_bottom()\n st.stop()\n\n if params.video_source == \"pixabay\" and not config.app.get(\"pixabay_api_keys\", \"\"):\n st.error(tr(\"Please Enter the Pixabay API Key\"))\n st.session_state[\"generation_in_progress\"] = False\n scroll_to_bottom()\n st.stop()\n\n if uploaded_audio_file:\n task_dir = utils.task_dir(task_id)\n # 涓婁紶鏂囦欢鍚嶆潵鑷祻瑙堝櫒锛屼笉鑳界洿鎺ユ嫾鍒扮鐩樿矾寰勯噷锛涜繖閲屽彧淇濈暀鎵╁睍鍚嶏紝\n # 骞朵娇鐢ㄥ浐瀹氭枃浠跺悕淇濆瓨鍒板綋鍓嶄换鍔$洰褰曪紝閬垮厤璺緞绌胯秺鎴栫壒娈婂瓧绗﹂棶棰樸€?\n _, audio_ext = os.path.splitext(os.path.basename(uploaded_audio_file.name))\n audio_ext = audio_ext.lower() or \".mp3\"\n custom_audio_path = os.path.join(task_dir, f\"custom-audio{audio_ext}\")\n with open(custom_audio_path, \"wb\") as f:\n f.write(uploaded_audio_file.getbuffer())\n params.custom_audio_file = custom_audio_path\n\n if uploaded_voice_reference_file:\n task_dir = utils.task_dir(task_id)\n _, audio_ext = os.path.splitext(\n os.path.basename(uploaded_voice_reference_file.name)\n )\n audio_ext = audio_ext.lower() or \".wav\"\n reference_audio_path = os.path.join(task_dir, f\"voice-reference{audio_ext}\")\n with open(reference_audio_path, \"wb\") as f:\n f.write(uploaded_voice_reference_file.getbuffer())\n params.voice_reference_audio_file = reference_audio_path\n\n if uploaded_files:\n local_videos_dir = utils.storage_dir(\"local_videos\", create=True)\n # 姣忔閲嶆柊涓婁紶鏃堕兘浠ユ湰娆¢€夋嫨鐨勭礌鏉愪负鍑嗭紝閬垮厤鏃х礌鏉愪笉鏂噸澶嶈拷鍔犮€?\n params.video_materials = []\n persisted_local_materials = []\n for file in uploaded_files:\n file_path = os.path.join(local_videos_dir, f\"{file.file_id}_{file.name}\")\n with open(file_path, \"wb\") as f:\n f.write(file.getbuffer())\n m = MaterialInfo()\n m.provider = \"local\"\n m.url = file_path\n params.video_materials.append(m)\n persisted_local_materials.append(\n {\n \"provider\": m.provider,\n \"url\": m.url,\n \"duration\": m.duration,\n }\n )\n # 灏嗗凡涓婁紶骞朵繚瀛樺埌鏈湴鐨勮棰戠礌鏉愬啓鍏ヤ細璇濓紝渚涘悗缁彧鏀规枃妗堟椂鐩存帴澶嶇敤銆?\n st.session_state[\"local_video_materials\"] = persisted_local_materials\n elif params.video_source == \"local\" and st.session_state[\"local_video_materials\"]:\n # 褰撶敤鎴锋病鏈夐噸鏂颁笂浼犳枃浠舵椂锛屽鐢ㄦ渶杩戜竴娆″凡缁忎繚瀛樺埌纾佺洏鐨勬湰鍦扮礌鏉愬垪琛ㄣ€?\n params.video_materials = []\n for material in st.session_state[\"local_video_materials\"]:\n m = MaterialInfo()\n m.provider = material.get(\"provider\", \"local\")\n m.url = material.get(\"url\", \"\")\n m.duration = material.get(\"duration\", 0)\n if m.url:\n params.video_materials.append(m)\n\n log_container = st.empty()\n log_records = []\n\n def log_received(msg):\n if config.ui[\"hide_log\"]:\n return\n with log_container:\n log_records.append(msg)\n st.caption(\"鐢熸垚杩涘害\")\n st.code(\"\\n\".join(log_records[-6:]))\n with st.expander(\"瀹屾暣鏃ュ織\", expanded=False):\n st.code(\"\\n\".join(log_records[-400:]))\n\n log_handler_id = logger.add(log_received)\n\n st.toast(tr(\"Generating Video\"))\n logger.info(tr(\"Start Generating Video\"))\n logger.info(\n \"generation params: \"\n f\"subject={params.video_subject!r}, \"\n f\"aspect={params.video_aspect}, \"\n f\"source={params.video_source}, \"\n f\"tts={params.voice_name}, \"\n f\"clip_duration={params.video_clip_duration}, \"\n f\"count={params.video_count}\"\n )\n scroll_to_bottom()\n\n try:\n with st.status(tr(\"Generating Video\"), expanded=False):\n from app.services import task as tm\n\n result = tm.start(task_id=task_id, params=params)\n except Exception as e:\n logger.exception(f\"video generation crashed: {str(e)}\")\n result = None\n finally:\n try:\n logger.remove(log_handler_id)\n except Exception:\n pass\n\n if not result or \"videos\" not in result:\n st.error(tr(\"Video Generation Failed\"))\n logger.error(tr(\"Video Generation Failed\"))\n st.session_state[\"generation_in_progress\"] = False\n scroll_to_bottom()\n st.stop()\n\n video_files = result.get(\"videos\", [])\n st.success(tr(\"Video Generation Completed\"))\n try:\n if video_files:\n player_cols = st.columns(len(video_files) * 2 + 1)\n for i, url in enumerate(video_files):\n player_cols[i * 2 + 1].video(url)\n except Exception:\n pass\n\n open_task_folder(task_id)\n logger.info(tr(\"Video Generation Completed\"))\n st.session_state[\"generation_in_progress\"] = False\n scroll_to_bottom()\n\nsave_config_if_changed()\n"}}, "config.example.toml": {"39fd46106e09f4c3de66282a378fdf61ac9d5e53": {"t": 1785745345.9601748, "n": 13034, "h": "98a0b899f0e18d23", "c": "project_name = \"白泽混剪\"\nproject_description = \"白泽混剪桌面工具\"\n\n[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 鏄惁闅愯棌閰嶇疆闈㈡澘\nhide_config = false\n\n# 鏄惁鏍¢獙澶栭儴 API 鍜岀礌鏉愪笅杞界殑 TLS 璇佷功銆?\n# 榛樿蹇呴』寮€鍚紝閬垮厤 Pexels/Pixabay API key 鍜屼笅杞界礌鏉愯涓棿浜烘敾鍑荤鏀广€?\n# 鍙湁鍦ㄤ紒涓氫唬鐞嗘垨鑷璇佷功鐜鏄庣‘闇€瑕佹椂锛屾墠涓存椂鏀逛负 false銆?\ntls_verify = true\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 鐗瑰埆娉ㄦ剰鏍煎紡锛孠ey 鐢ㄨ嫳鏂囧弻寮曞彿鎷捣鏉ワ紝澶氫釜Key鐢ㄩ€楀彿闅斿紑\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 鐗瑰埆娉ㄦ剰鏍煎紡锛孠ey 鐢ㄨ嫳鏂囧弻寮曞彿鎷捣鏉ワ紝澶氫釜Key鐢ㄩ€楀彿闅斿紑\npixabay_api_keys = []\n\n# 鏀寔鐨勬彁渚涘晢 (Supported providers):\n# openai\n# aihubmix (OpenAI-compatible AI model gateway)\n# moonshot (鏈堜箣鏆楅潰)\n# azure\n# qwen (閫氫箟鍗冮棶)\n# deepseek\n# gemini\n# ollama\n# g4f (disabled by default; set enable_g4f=true only after accepting its risks)\n# oneapi\n# cloudflare\n# minimax\n# mimo (Xiaomi MiMo)\n# ernie (鏂囧績涓€瑷€)\n# modelscope (榄旀惌绀惧尯)\n# litellm (100+ providers via LiteLLM gateway)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\n# 涔熷彲浠ュ~鍐欏吋瀹?OpenAI Chat Completions 鍗忚鐨勪緵搴斿晢瀵嗛挜锛?\n# 渚嬪 OpenRouter 杩欑被鎻愪緵鑷畾涔?base_url 鐨勫钩鍙般€?\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\n# 濡傛灉浣跨敤鍏煎 OpenAI 鎺ュ彛鐨勫钩鍙帮紝璇峰湪杩欓噷濉啓瀵瑰簲鐨?base_url銆?\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\n# 濡傛灉浣跨敤鍏煎渚涘簲鍟嗭紝璇峰~鍐欒骞冲彴瑕佹眰鐨勬ā鍨?ID銆?\nopenai_model_name = \"gpt-4o-mini\"\n\n########## AIHubMix API Key\n# AIHubMix is OpenAI-compatible and can use one API key to access multiple models.\n# Visit https://aihubmix.com/ to register and get your API key.\naihubmix_api_key = \"\"\naihubmix_base_url = \"https://aihubmix.com/v1\"\naihubmix_model_name = \"gpt-5.4-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# g4f relies on reverse-engineered third-party endpoints and is not recommended\n# for production. Prefer official APIs, OpenAI-compatible providers, LiteLLM,\n# Ollama, or local inference.\n# If you still need it, install the optional dependency with:\n# uv sync --extra g4f\nenable_g4f = false\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-2.5-flash\"\n\n########## Grok API Key\ngrok_api_key = \"\"\ngrok_model_name = \"grok-4.3\"\ngrok_base_url = \"https://api.x.ai/v1\"\n\n########## Groq API Key\n# Visit https://console.groq.com/keys to get your api keys\n# API documentation: https://console.groq.com/docs/api-reference\n# Available models: https://console.groq.com/docs/api-reference#models-list\ngroq_api_key = \"\"\ngroq_model_name = \"llama-3.3-70b-versatile\"\ngroq_base_url = \"https://api.groq.com/openai/v1\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io or https://platform.minimaxi.com to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M3 (default), MiniMax-M2.7, MiniMax-M2.7-highspeed\n# If your API key returns 401 on api.minimax.io, try the China endpoint: https://api.minimaxi.com/v1\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M3\"\n\n########## Xiaomi MiMo API Key\n# Xiaomi MiMo API is OpenAI-compatible.\n# Visit https://platform.xiaomimimo.com/docs/zh-CN/quick-start/first-api-call to get more details.\nmimo_api_key = \"\"\nmimo_base_url = \"https://api.xiaomimimo.com/v1\"\nmimo_model_name = \"mimo-v2.5-pro\"\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n########## LiteLLM (AI Gateway 鈥?100+ providers)\n# LiteLLM routes to any LLM provider via a unified interface.\n# Use this for providers not directly supported above: Anthropic (native API),\n# AWS Bedrock, Google Vertex AI, Cohere, Mistral, Together AI, etc.\n# Visit https://docs.litellm.ai/docs/providers for the full list.\n#\n# LiteLLM reads provider API keys from environment variables automatically:\n# OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, AWS_ACCESS_KEY_ID, etc.\n# Set the appropriate env var for your chosen provider before running.\n#\n# Model name in LiteLLM format: \"provider/model-name\"\n# Examples: \"openai/gpt-4o\", \"anthropic/claude-sonnet-4-20250514\",\n# \"bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n# \"gemini/gemini-2.5-flash\", \"ollama/llama3\"\nlitellm_model_name = \"openai/gpt-4o-mini\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 閫氬父鎯呭喌涓嬶紝ffmpeg 浼氳鑷姩涓嬭浇锛屽苟涓斾細琚嚜鍔ㄦ娴嬪埌銆?\n# 浣嗘槸濡傛灉浣犵殑鐜鏈夐棶棰橈紝鏃犳硶鑷姩涓嬭浇锛屽彲鑳戒細閬囧埌濡備笅閿欒锛?\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 姝ゆ椂浣犲彲浠ユ墜鍔ㄤ笅杞?ffmpeg 骞惰缃?ffmpeg_path锛屼笅杞藉湴鍧€锛歨ttps://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n\n# 瑙嗛缂栫爜鍣ㄣ€傞粯璁?libx264 鏈€绋冲畾锛涢珮绾х敤鎴峰彲浠ュ皾璇曠‖浠剁紪鐮佸櫒鎻愬崌閫熷害銆?\n# 濡傛灉褰撳墠 FFmpeg 鎴栫‖浠堕┍鍔ㄤ笉鏀寔鎵€閫夌紪鐮佸櫒锛岀▼搴忎細鑷姩鍥為€€鍒?libx264銆?\n# 鍙€夊€? \"libx264\", \"h264_nvenc\", \"h264_amf\", \"h264_qsv\", \"h264_mf\", \"h264_videotoolbox\"\n# video_codec = \"libx264\"\n\n# Video encoder. libx264 is the safest default; advanced users can try hardware encoders.\n# If the selected encoder is not supported by the current FFmpeg or driver, the app falls back to libx264.\n# Available values: \"libx264\", \"h264_nvenc\", \"h264_amf\", \"h264_qsv\", \"h264_mf\", \"h264_videotoolbox\"\n# video_codec = \"libx264\"\n\n# CPU 缂栫爜閫熷害棰勮銆傞粯璁?veryfast 浼氭槑鏄惧揩浜庨粯璁?preset锛屼綋绉暐澶т絾鏇撮€傚悎妗岄潰绔揩閫熸垚鐗囥€?video_encode_preset = \"veryfast\"\n\n# 蹇€熺礌鏉愭ā寮忥細Pexels 浼樺厛閫夋嫨 720p 绾у埆绱犳潗锛屽噺灏戜笅杞藉拰閲嶇紪鐮佽€楁椂銆?fast_video_materials = true\nmaterial_preferred_short_side = 720\nmaterial_search_per_page = 12\n\n# OpenBMB VoxCPM 澹伴煶鍏嬮殕鐢辨闈㈢鍐呯疆 Python 鍖呯洿鎺ュ姞杞斤紝涓嶄緷璧栨湰鍦扮綉鍧€鏈嶅姟銆?#########################################################################################\n\n# 褰撹棰戠敓鎴愭垚鍔熷悗锛孉PI鏈嶅姟鎻愪緵鐨勮棰戜笅杞芥帴鍏ョ偣锛岄粯璁や负褰撳墠鏈嶅姟鐨勫湴鍧€鍜岀洃鍚鍙?\n# 姣斿 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 濡傛灉浣犻渶瑕佷娇鐢ㄥ煙鍚嶅澶栨彁渚涙湇鍔★紙涓€鑸細鐢╪ginx鍋氫唬鐞嗭級锛屽垯鍙互璁剧疆涓轰綘鐨勫煙鍚?\n# 姣斿 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 瑙嗛绱犳潗瀛樻斁浣嶇疆\n# material_directory = \"\" #琛ㄧず灏嗚棰戠礌鏉愪笅杞藉埌榛樿鐨勬枃浠跺す锛岄粯璁ゆ枃浠跺す涓哄綋鍓嶉」鐩笅鐨?./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #琛ㄧず灏嗚棰戠礌鏉愪笅杞藉埌鎸囧畾鐨勬枃浠跺す涓?\n# material_directory = \"task\" #琛ㄧず灏嗚棰戠礌鏉愪笅杞藉埌褰撳墠浠诲姟鐨勬枃浠跺す涓紝杩欑鏂瑰紡鏃犳硶鍏变韩宸茬粡涓嬭浇鐨勮棰戠礌鏉?\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 鏂囩敓瑙嗛鏃剁殑鏈€澶у苟鍙戜换鍔℃暟\nmax_concurrent_tasks = 5\n\n# 骞跺彂浠诲姟宸叉弧鍚庣殑鏈€澶ф帓闃熶换鍔℃暟锛岃秴杩囧悗鎺ュ彛杩斿洖 429锛岄伩鍏嶅尶鍚嶈姹傛棤闄愬爢绉?\nmax_queued_tasks = 100\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[ui]\n# UI related settings\n# 鏄惁闅愯棌鏃ュ織淇℃伅\n# Whether to hide logs in the UI\nhide_log = false\n\n# 瀛楀箷浣嶇疆璁剧疆 (Subtitle position settings)\n# 鍙€夊€?(Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 鑷畾涔変綅缃紝琛ㄧず绂婚《閮ㄧ殑鐧惧垎姣?(0-100)锛屼粎褰?subtitle_position = \"custom\" 鏃剁敓鏁?\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\ncustom_position = 75.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "bee2b4c18e499a1daffd1f15bc33f37968da072b": {"t": 1785750529.8082223, "n": 12689, "h": "e425f6c6c2025319", "c": "project_name = \"白泽快速混剪视频\"\nproject_description = \"白泽快速混剪视频桌面工具\"\n\n[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# 是否校验外部 API 和素材下载的 TLS 证书。\n# 默认必须开启,避免 Pexels/Pixabay API key 和下载素材被中间人攻击篡改。\n# 只有在企业代理或自签证书环境明确需要时,才临时改为 false。\ntls_verify = true\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# aihubmix (OpenAI-compatible AI model gateway)\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f (disabled by default; set enable_g4f=true only after accepting its risks)\n# oneapi\n# cloudflare\n# minimax\n# mimo (Xiaomi MiMo)\n# ernie (文心一言)\n# modelscope (魔搭社区)\n# litellm (100+ providers via LiteLLM gateway)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\n# 也可以填写兼容 OpenAI Chat Completions 协议的供应商密钥,\n# 例如 OpenRouter 这类提供自定义 base_url 的平台。\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\n# 如果使用兼容 OpenAI 接口的平台,请在这里填写对应的 base_url。\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\n# 如果使用兼容供应商,请填写该平台要求的模型 ID。\nopenai_model_name = \"gpt-4o-mini\"\n\n########## AIHubMix API Key\n# AIHubMix is OpenAI-compatible and can use one API key to access multiple models.\n# Visit https://aihubmix.com/ to register and get your API key.\naihubmix_api_key = \"\"\naihubmix_base_url = \"https://aihubmix.com/v1\"\naihubmix_model_name = \"gpt-5.4-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# g4f relies on reverse-engineered third-party endpoints and is not recommended\n# for production. Prefer official APIs, OpenAI-compatible providers, LiteLLM,\n# Ollama, or local inference.\n# If you still need it, install the optional dependency with:\n# uv sync --extra g4f\nenable_g4f = false\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-2.5-flash\"\n\n########## Grok API Key\ngrok_api_key = \"\"\ngrok_model_name = \"grok-4.3\"\ngrok_base_url = \"https://api.x.ai/v1\"\n\n########## Groq API Key\n# Visit https://console.groq.com/keys to get your api keys\n# API documentation: https://console.groq.com/docs/api-reference\n# Available models: https://console.groq.com/docs/api-reference#models-list\ngroq_api_key = \"\"\ngroq_model_name = \"llama-3.3-70b-versatile\"\ngroq_base_url = \"https://api.groq.com/openai/v1\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io or https://platform.minimaxi.com to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M3 (default), MiniMax-M2.7, MiniMax-M2.7-highspeed\n# If your API key returns 401 on api.minimax.io, try the China endpoint: https://api.minimaxi.com/v1\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M3\"\n\n########## Xiaomi MiMo API Key\n# Xiaomi MiMo API is OpenAI-compatible.\n# Visit https://platform.xiaomimimo.com/docs/zh-CN/quick-start/first-api-call to get more details.\nmimo_api_key = \"\"\nmimo_base_url = \"https://api.xiaomimimo.com/v1\"\nmimo_model_name = \"mimo-v2.5-pro\"\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n########## LiteLLM (AI Gateway — 100+ providers)\n# LiteLLM routes to any LLM provider via a unified interface.\n# Use this for providers not directly supported above: Anthropic (native API),\n# AWS Bedrock, Google Vertex AI, Cohere, Mistral, Together AI, etc.\n# Visit https://docs.litellm.ai/docs/providers for the full list.\n#\n# LiteLLM reads provider API keys from environment variables automatically:\n# OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, AWS_ACCESS_KEY_ID, etc.\n# Set the appropriate env var for your chosen provider before running.\n#\n# Model name in LiteLLM format: \"provider/model-name\"\n# Examples: \"openai/gpt-4o\", \"anthropic/claude-sonnet-4-20250514\",\n# \"bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n# \"gemini/gemini-2.5-flash\", \"ollama/llama3\"\nlitellm_model_name = \"openai/gpt-4o-mini\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n\n# 视频编码器。默认 libx264 最稳定;高级用户可以尝试硬件编码器提升速度。\n# 如果当前 FFmpeg 或硬件驱动不支持所选编码器,程序会自动回退到 libx264。\n# 可选值: \"libx264\", \"h264_nvenc\", \"h264_amf\", \"h264_qsv\", \"h264_mf\", \"h264_videotoolbox\"\n# video_codec = \"libx264\"\n\n# Video encoder. libx264 is the safest default; advanced users can try hardware encoders.\n# If the selected encoder is not supported by the current FFmpeg or driver, the app falls back to libx264.\n# Available values: \"libx264\", \"h264_nvenc\", \"h264_amf\", \"h264_qsv\", \"h264_mf\", \"h264_videotoolbox\"\n# video_codec = \"libx264\"\n\n# CPU 编码速度预设。默认 veryfast 会明显快于默认 preset,体积略大但更适合桌面端快速成片。\nvideo_encode_preset = \"veryfast\"\n\n# 快速素材模式:Pexels 优先选择 720p 级别素材,减少下载和重编码耗时。\nfast_video_materials = true\nmaterial_preferred_short_side = 720\nmaterial_search_per_page = 12\n\n# OpenBMB VoxCPM 声音克隆由桌面端内置 Python 包直接加载,不依赖本地网址服务。\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n# 并发任务已满后的最大排队任务数,超过后接口返回 429,避免匿名请求无限堆积\nmax_queued_tasks = 100\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\ncustom_position = 75.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "ed1dc678d5c05cf8b265a34d3e590a17e32b7ecf": {"t": 1785750531.2983947, "n": 13012, "h": "f63697798f76c54c", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Azure TTS V1(edge_tts) 单次流式请求超时时间,单位秒。\n# 网络异常、服务端限流或 voice 与文本语言不匹配时,edge_tts 可能长期卡住。\n# 默认 30 秒可避免 WebUI 任务无反馈;慢网络或代理环境可适当调大。\n# 设置为 0 表示禁用超时。\nedge_tts_timeout = 30\n\n# 是否校验外部 API 和素材下载的 TLS 证书。\n# 默认必须开启,避免 Pexels/Pixabay API key 和下载素材被中间人攻击篡改。\n# 只有在企业代理或自签证书环境明确需要时,才临时改为 false。\ntls_verify = true\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# aihubmix (OpenAI-compatible AI model gateway)\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f (disabled by default; set enable_g4f=true only after accepting its risks)\n# oneapi\n# cloudflare\n# minimax\n# mimo (Xiaomi MiMo)\n# ernie (文心一言)\n# modelscope (魔搭社区)\n# litellm (100+ providers via LiteLLM gateway)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\n# 也可以填写兼容 OpenAI Chat Completions 协议的供应商密钥,\n# 例如 OpenRouter 这类提供自定义 base_url 的平台。\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\n# 如果使用兼容 OpenAI 接口的平台,请在这里填写对应的 base_url。\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\n# 如果使用兼容供应商,请填写该平台要求的模型 ID。\nopenai_model_name = \"gpt-4o-mini\"\n\n########## AIHubMix API Key\n# AIHubMix is OpenAI-compatible and can use one API key to access multiple models.\n# Visit https://aihubmix.com/?aff=CEve to register and get your API key.\naihubmix_api_key = \"\"\naihubmix_base_url = \"https://aihubmix.com/v1\"\naihubmix_model_name = \"gpt-5.4-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# g4f relies on reverse-engineered third-party endpoints and is not recommended\n# for production. Prefer official APIs, OpenAI-compatible providers, LiteLLM,\n# Ollama, or local inference.\n# If you still need it, install the optional dependency with:\n# uv sync --extra g4f\nenable_g4f = false\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-2.5-flash\"\n\n########## Grok API Key\ngrok_api_key = \"\"\ngrok_model_name = \"grok-4.3\"\ngrok_base_url = \"https://api.x.ai/v1\"\n\n########## Groq API Key\n# Visit https://console.groq.com/keys to get your api keys\n# API documentation: https://console.groq.com/docs/api-reference\n# Available models: https://console.groq.com/docs/api-reference#models-list\ngroq_api_key = \"\"\ngroq_model_name = \"llama-3.3-70b-versatile\"\ngroq_base_url = \"https://api.groq.com/openai/v1\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io or https://platform.minimaxi.com to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M3 (default), MiniMax-M2.7, MiniMax-M2.7-highspeed\n# If your API key returns 401 on api.minimax.io, try the China endpoint: https://api.minimaxi.com/v1\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M3\"\n\n########## Xiaomi MiMo API Key\n# Xiaomi MiMo API is OpenAI-compatible.\n# Visit https://platform.xiaomimimo.com/docs/zh-CN/quick-start/first-api-call to get more details.\nmimo_api_key = \"\"\nmimo_base_url = \"https://api.xiaomimimo.com/v1\"\nmimo_model_name = \"mimo-v2.5-pro\"\n# Xiaomi MiMo TTS uses the same API key and base_url as MiMo LLM.\nmimo_tts_model_name = \"mimo-v2.5-tts\"\n# Optional natural language style prompt for MiMo TTS.\nmimo_tts_style_prompt = \"请用自然、清晰、适合短视频旁白的语气朗读。\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n########## LiteLLM (AI Gateway — 100+ providers)\n# LiteLLM routes to any LLM provider via a unified interface.\n# Use this for providers not directly supported above: Anthropic (native API),\n# AWS Bedrock, Google Vertex AI, Cohere, Mistral, Together AI, etc.\n# Visit https://docs.litellm.ai/docs/providers for the full list.\n#\n# LiteLLM reads provider API keys from environment variables automatically:\n# OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, AWS_ACCESS_KEY_ID, etc.\n# Set the appropriate env var for your chosen provider before running.\n#\n# Model name in LiteLLM format: \"provider/model-name\"\n# Examples: \"openai/gpt-4o\", \"anthropic/claude-sonnet-4-20250514\",\n# \"bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n# \"gemini/gemini-2.5-flash\", \"ollama/llama3\"\nlitellm_model_name = \"openai/gpt-4o-mini\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n\n# 视频编码器。默认 libx264 最稳定;高级用户可以尝试硬件编码器提升速度。\n# 如果当前 FFmpeg 或硬件驱动不支持所选编码器,程序会自动回退到 libx264。\n# 可选值: \"libx264\", \"h264_nvenc\", \"h264_amf\", \"h264_qsv\", \"h264_mf\", \"h264_videotoolbox\"\n# video_codec = \"libx264\"\n\n# Video encoder. libx264 is the safest default; advanced users can try hardware encoders.\n# If the selected encoder is not supported by the current FFmpeg or driver, the app falls back to libx264.\n# Available values: \"libx264\", \"h264_nvenc\", \"h264_amf\", \"h264_qsv\", \"h264_mf\", \"h264_videotoolbox\"\n# video_codec = \"libx264\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n# 并发任务已满后的最大排队任务数,超过后接口返回 429,避免匿名请求无限堆积\nmax_queued_tasks = 100\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "dd36f6f029f0e3f3798ff91f8d9e02a25d327356": {"t": 1785750532.9605608, "n": 12676, "h": "57c1d2d6110e0006", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Azure TTS V1(edge_tts) 单次流式请求超时时间,单位秒。\n# 网络异常、服务端限流或 voice 与文本语言不匹配时,edge_tts 可能长期卡住。\n# 默认 30 秒可避免 WebUI 任务无反馈;慢网络或代理环境可适当调大。\n# 设置为 0 表示禁用超时。\nedge_tts_timeout = 30\n\n# 是否校验外部 API 和素材下载的 TLS 证书。\n# 默认必须开启,避免 Pexels/Pixabay API key 和下载素材被中间人攻击篡改。\n# 只有在企业代理或自签证书环境明确需要时,才临时改为 false。\ntls_verify = true\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# aihubmix (OpenAI-compatible AI model gateway)\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f (disabled by default; set enable_g4f=true only after accepting its risks)\n# oneapi\n# cloudflare\n# minimax\n# mimo (Xiaomi MiMo)\n# ernie (文心一言)\n# modelscope (魔搭社区)\n# litellm (100+ providers via LiteLLM gateway)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\n# 也可以填写兼容 OpenAI Chat Completions 协议的供应商密钥,\n# 例如 OpenRouter 这类提供自定义 base_url 的平台。\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\n# 如果使用兼容 OpenAI 接口的平台,请在这里填写对应的 base_url。\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\n# 如果使用兼容供应商,请填写该平台要求的模型 ID。\nopenai_model_name = \"gpt-4o-mini\"\n\n########## AIHubMix API Key\n# AIHubMix is OpenAI-compatible and can use one API key to access multiple models.\n# Visit https://aihubmix.com/?aff=CEve to register and get your API key.\naihubmix_api_key = \"\"\naihubmix_base_url = \"https://aihubmix.com/v1\"\naihubmix_model_name = \"gpt-5.4-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# g4f relies on reverse-engineered third-party endpoints and is not recommended\n# for production. Prefer official APIs, OpenAI-compatible providers, LiteLLM,\n# Ollama, or local inference.\n# If you still need it, install the optional dependency with:\n# uv sync --extra g4f\nenable_g4f = false\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-2.5-flash\"\n\n########## Grok API Key\ngrok_api_key = \"\"\ngrok_model_name = \"grok-4.3\"\ngrok_base_url = \"https://api.x.ai/v1\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io or https://platform.minimaxi.com to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M3 (default), MiniMax-M2.7, MiniMax-M2.7-highspeed\n# If your API key returns 401 on api.minimax.io, try the China endpoint: https://api.minimaxi.com/v1\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M3\"\n\n########## Xiaomi MiMo API Key\n# Xiaomi MiMo API is OpenAI-compatible.\n# Visit https://platform.xiaomimimo.com/docs/zh-CN/quick-start/first-api-call to get more details.\nmimo_api_key = \"\"\nmimo_base_url = \"https://api.xiaomimimo.com/v1\"\nmimo_model_name = \"mimo-v2.5-pro\"\n# Xiaomi MiMo TTS uses the same API key and base_url as MiMo LLM.\nmimo_tts_model_name = \"mimo-v2.5-tts\"\n# Optional natural language style prompt for MiMo TTS.\nmimo_tts_style_prompt = \"请用自然、清晰、适合短视频旁白的语气朗读。\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n########## LiteLLM (AI Gateway — 100+ providers)\n# LiteLLM routes to any LLM provider via a unified interface.\n# Use this for providers not directly supported above: Anthropic (native API),\n# AWS Bedrock, Google Vertex AI, Cohere, Mistral, Together AI, etc.\n# Visit https://docs.litellm.ai/docs/providers for the full list.\n#\n# LiteLLM reads provider API keys from environment variables automatically:\n# OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, AWS_ACCESS_KEY_ID, etc.\n# Set the appropriate env var for your chosen provider before running.\n#\n# Model name in LiteLLM format: \"provider/model-name\"\n# Examples: \"openai/gpt-4o\", \"anthropic/claude-sonnet-4-20250514\",\n# \"bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n# \"gemini/gemini-2.5-flash\", \"ollama/llama3\"\nlitellm_model_name = \"openai/gpt-4o-mini\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n\n# 视频编码器。默认 libx264 最稳定;高级用户可以尝试硬件编码器提升速度。\n# 如果当前 FFmpeg 或硬件驱动不支持所选编码器,程序会自动回退到 libx264。\n# 可选值: \"libx264\", \"h264_nvenc\", \"h264_amf\", \"h264_qsv\", \"h264_mf\", \"h264_videotoolbox\"\n# video_codec = \"libx264\"\n\n# Video encoder. libx264 is the safest default; advanced users can try hardware encoders.\n# If the selected encoder is not supported by the current FFmpeg or driver, the app falls back to libx264.\n# Available values: \"libx264\", \"h264_nvenc\", \"h264_amf\", \"h264_qsv\", \"h264_mf\", \"h264_videotoolbox\"\n# video_codec = \"libx264\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n# 并发任务已满后的最大排队任务数,超过后接口返回 429,避免匿名请求无限堆积\nmax_queued_tasks = 100\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "7f612312c66a6b28ff3fa9c12290593b9ddf3cb9": {"t": 1785750534.5008333, "n": 12532, "h": "9c1bd81a7380ca69", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Azure TTS V1(edge_tts) 单次流式请求超时时间,单位秒。\n# 网络异常、服务端限流或 voice 与文本语言不匹配时,edge_tts 可能长期卡住。\n# 默认 30 秒可避免 WebUI 任务无反馈;慢网络或代理环境可适当调大。\n# 设置为 0 表示禁用超时。\nedge_tts_timeout = 30\n\n# 是否校验外部 API 和素材下载的 TLS 证书。\n# 默认必须开启,避免 Pexels/Pixabay API key 和下载素材被中间人攻击篡改。\n# 只有在企业代理或自签证书环境明确需要时,才临时改为 false。\ntls_verify = true\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# aihubmix (OpenAI-compatible AI model gateway)\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f (disabled by default; set enable_g4f=true only after accepting its risks)\n# oneapi\n# cloudflare\n# minimax\n# mimo (Xiaomi MiMo)\n# ernie (文心一言)\n# modelscope (魔搭社区)\n# litellm (100+ providers via LiteLLM gateway)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\n# 也可以填写兼容 OpenAI Chat Completions 协议的供应商密钥,\n# 例如 OpenRouter 这类提供自定义 base_url 的平台。\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\n# 如果使用兼容 OpenAI 接口的平台,请在这里填写对应的 base_url。\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\n# 如果使用兼容供应商,请填写该平台要求的模型 ID。\nopenai_model_name = \"gpt-4o-mini\"\n\n########## AIHubMix API Key\n# AIHubMix is OpenAI-compatible and can use one API key to access multiple models.\n# Visit https://aihubmix.com/?aff=CEve to register and get your API key.\naihubmix_api_key = \"\"\naihubmix_base_url = \"https://aihubmix.com/v1\"\naihubmix_model_name = \"gpt-5.4-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# g4f relies on reverse-engineered third-party endpoints and is not recommended\n# for production. Prefer official APIs, OpenAI-compatible providers, LiteLLM,\n# Ollama, or local inference.\n# If you still need it, install the optional dependency with:\n# uv sync --extra g4f\nenable_g4f = false\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-2.5-flash\"\n\n########## Grok API Key\ngrok_api_key = \"\"\ngrok_model_name = \"grok-4.3\"\ngrok_base_url = \"https://api.x.ai/v1\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M2.7 (default), MiniMax-M2.7-highspeed\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M2.7\"\n\n########## Xiaomi MiMo API Key\n# Xiaomi MiMo API is OpenAI-compatible.\n# Visit https://platform.xiaomimimo.com/docs/zh-CN/quick-start/first-api-call to get more details.\nmimo_api_key = \"\"\nmimo_base_url = \"https://api.xiaomimimo.com/v1\"\nmimo_model_name = \"mimo-v2.5-pro\"\n# Xiaomi MiMo TTS uses the same API key and base_url as MiMo LLM.\nmimo_tts_model_name = \"mimo-v2.5-tts\"\n# Optional natural language style prompt for MiMo TTS.\nmimo_tts_style_prompt = \"请用自然、清晰、适合短视频旁白的语气朗读。\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n########## LiteLLM (AI Gateway — 100+ providers)\n# LiteLLM routes to any LLM provider via a unified interface.\n# Use this for providers not directly supported above: Anthropic (native API),\n# AWS Bedrock, Google Vertex AI, Cohere, Mistral, Together AI, etc.\n# Visit https://docs.litellm.ai/docs/providers for the full list.\n#\n# LiteLLM reads provider API keys from environment variables automatically:\n# OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, AWS_ACCESS_KEY_ID, etc.\n# Set the appropriate env var for your chosen provider before running.\n#\n# Model name in LiteLLM format: \"provider/model-name\"\n# Examples: \"openai/gpt-4o\", \"anthropic/claude-sonnet-4-20250514\",\n# \"bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n# \"gemini/gemini-2.5-flash\", \"ollama/llama3\"\nlitellm_model_name = \"openai/gpt-4o-mini\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n\n# 视频编码器。默认 libx264 最稳定;高级用户可以尝试硬件编码器提升速度。\n# 如果当前 FFmpeg 或硬件驱动不支持所选编码器,程序会自动回退到 libx264。\n# 可选值: \"libx264\", \"h264_nvenc\", \"h264_amf\", \"h264_qsv\", \"h264_mf\", \"h264_videotoolbox\"\n# video_codec = \"libx264\"\n\n# Video encoder. libx264 is the safest default; advanced users can try hardware encoders.\n# If the selected encoder is not supported by the current FFmpeg or driver, the app falls back to libx264.\n# Available values: \"libx264\", \"h264_nvenc\", \"h264_amf\", \"h264_qsv\", \"h264_mf\", \"h264_videotoolbox\"\n# video_codec = \"libx264\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n# 并发任务已满后的最大排队任务数,超过后接口返回 429,避免匿名请求无限堆积\nmax_queued_tasks = 100\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "f29a56e4cef48f259438debb91e8f27a78b3e1cf": {"t": 1785750535.5988595, "n": 12006, "h": "300b40697400a172", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Azure TTS V1(edge_tts) 单次流式请求超时时间,单位秒。\n# 网络异常、服务端限流或 voice 与文本语言不匹配时,edge_tts 可能长期卡住。\n# 默认 30 秒可避免 WebUI 任务无反馈;慢网络或代理环境可适当调大。\n# 设置为 0 表示禁用超时。\nedge_tts_timeout = 30\n\n# 是否校验外部 API 和素材下载的 TLS 证书。\n# 默认必须开启,避免 Pexels/Pixabay API key 和下载素材被中间人攻击篡改。\n# 只有在企业代理或自签证书环境明确需要时,才临时改为 false。\ntls_verify = true\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# aihubmix (OpenAI-compatible AI model gateway)\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f (disabled by default; set enable_g4f=true only after accepting its risks)\n# oneapi\n# cloudflare\n# minimax\n# mimo (Xiaomi MiMo)\n# ernie (文心一言)\n# modelscope (魔搭社区)\n# litellm (100+ providers via LiteLLM gateway)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\n# 也可以填写兼容 OpenAI Chat Completions 协议的供应商密钥,\n# 例如 OpenRouter 这类提供自定义 base_url 的平台。\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\n# 如果使用兼容 OpenAI 接口的平台,请在这里填写对应的 base_url。\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\n# 如果使用兼容供应商,请填写该平台要求的模型 ID。\nopenai_model_name = \"gpt-4o-mini\"\n\n########## AIHubMix API Key\n# AIHubMix is OpenAI-compatible and can use one API key to access multiple models.\n# Visit https://aihubmix.com/?aff=CEve to register and get your API key.\naihubmix_api_key = \"\"\naihubmix_base_url = \"https://aihubmix.com/v1\"\naihubmix_model_name = \"gpt-5.4-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# g4f relies on reverse-engineered third-party endpoints and is not recommended\n# for production. Prefer official APIs, OpenAI-compatible providers, LiteLLM,\n# Ollama, or local inference.\n# If you still need it, install the optional dependency with:\n# uv sync --extra g4f\nenable_g4f = false\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-2.5-flash\"\n\n########## Grok API Key\ngrok_api_key = \"\"\ngrok_model_name = \"grok-4.3\"\ngrok_base_url = \"https://api.x.ai/v1\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M2.7 (default), MiniMax-M2.7-highspeed\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M2.7\"\n\n########## Xiaomi MiMo API Key\n# Xiaomi MiMo API is OpenAI-compatible.\n# Visit https://platform.xiaomimimo.com/docs/zh-CN/quick-start/first-api-call to get more details.\nmimo_api_key = \"\"\nmimo_base_url = \"https://api.xiaomimimo.com/v1\"\nmimo_model_name = \"mimo-v2.5-pro\"\n# Xiaomi MiMo TTS uses the same API key and base_url as MiMo LLM.\nmimo_tts_model_name = \"mimo-v2.5-tts\"\n# Optional natural language style prompt for MiMo TTS.\nmimo_tts_style_prompt = \"请用自然、清晰、适合短视频旁白的语气朗读。\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n########## LiteLLM (AI Gateway — 100+ providers)\n# LiteLLM routes to any LLM provider via a unified interface.\n# Use this for providers not directly supported above: Anthropic (native API),\n# AWS Bedrock, Google Vertex AI, Cohere, Mistral, Together AI, etc.\n# Visit https://docs.litellm.ai/docs/providers for the full list.\n#\n# LiteLLM reads provider API keys from environment variables automatically:\n# OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, AWS_ACCESS_KEY_ID, etc.\n# Set the appropriate env var for your chosen provider before running.\n#\n# Model name in LiteLLM format: \"provider/model-name\"\n# Examples: \"openai/gpt-4o\", \"anthropic/claude-sonnet-4-20250514\",\n# \"bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n# \"gemini/gemini-2.5-flash\", \"ollama/llama3\"\nlitellm_model_name = \"openai/gpt-4o-mini\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n# 并发任务已满后的最大排队任务数,超过后接口返回 429,避免匿名请求无限堆积\nmax_queued_tasks = 100\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "be2c8e270f119879df2c530a48b413a8f0373bcf": {"t": 1785750537.1983147, "n": 11664, "h": "c743a9f92641e87a", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Azure TTS V1(edge_tts) 单次流式请求超时时间,单位秒。\n# 网络异常、服务端限流或 voice 与文本语言不匹配时,edge_tts 可能长期卡住。\n# 默认 30 秒可避免 WebUI 任务无反馈;慢网络或代理环境可适当调大。\n# 设置为 0 表示禁用超时。\nedge_tts_timeout = 30\n\n# 是否校验外部 API 和素材下载的 TLS 证书。\n# 默认必须开启,避免 Pexels/Pixabay API key 和下载素材被中间人攻击篡改。\n# 只有在企业代理或自签证书环境明确需要时,才临时改为 false。\ntls_verify = true\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f (disabled by default; set enable_g4f=true only after accepting its risks)\n# oneapi\n# cloudflare\n# minimax\n# mimo (Xiaomi MiMo)\n# ernie (文心一言)\n# modelscope (魔搭社区)\n# litellm (100+ providers via LiteLLM gateway)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\n# 也可以填写兼容 OpenAI Chat Completions 协议的供应商密钥,\n# 例如 OpenRouter 这类提供自定义 base_url 的平台。\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\n# 如果使用兼容 OpenAI 接口的平台,请在这里填写对应的 base_url。\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\n# 如果使用兼容供应商,请填写该平台要求的模型 ID。\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# g4f relies on reverse-engineered third-party endpoints and is not recommended\n# for production. Prefer official APIs, OpenAI-compatible providers, LiteLLM,\n# Ollama, or local inference.\n# If you still need it, install the optional dependency with:\n# uv sync --extra g4f\nenable_g4f = false\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-2.5-flash\"\n\n########## Grok API Key\ngrok_api_key = \"\"\ngrok_model_name = \"grok-4.3\"\ngrok_base_url = \"https://api.x.ai/v1\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M2.7 (default), MiniMax-M2.7-highspeed\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M2.7\"\n\n########## Xiaomi MiMo API Key\n# Xiaomi MiMo API is OpenAI-compatible.\n# Visit https://platform.xiaomimimo.com/docs/zh-CN/quick-start/first-api-call to get more details.\nmimo_api_key = \"\"\nmimo_base_url = \"https://api.xiaomimimo.com/v1\"\nmimo_model_name = \"mimo-v2.5-pro\"\n# Xiaomi MiMo TTS uses the same API key and base_url as MiMo LLM.\nmimo_tts_model_name = \"mimo-v2.5-tts\"\n# Optional natural language style prompt for MiMo TTS.\nmimo_tts_style_prompt = \"请用自然、清晰、适合短视频旁白的语气朗读。\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n########## LiteLLM (AI Gateway — 100+ providers)\n# LiteLLM routes to any LLM provider via a unified interface.\n# Use this for providers not directly supported above: Anthropic (native API),\n# AWS Bedrock, Google Vertex AI, Cohere, Mistral, Together AI, etc.\n# Visit https://docs.litellm.ai/docs/providers for the full list.\n#\n# LiteLLM reads provider API keys from environment variables automatically:\n# OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, AWS_ACCESS_KEY_ID, etc.\n# Set the appropriate env var for your chosen provider before running.\n#\n# Model name in LiteLLM format: \"provider/model-name\"\n# Examples: \"openai/gpt-4o\", \"anthropic/claude-sonnet-4-20250514\",\n# \"bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n# \"gemini/gemini-2.5-flash\", \"ollama/llama3\"\nlitellm_model_name = \"openai/gpt-4o-mini\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n# 并发任务已满后的最大排队任务数,超过后接口返回 429,避免匿名请求无限堆积\nmax_queued_tasks = 100\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "1e715303c63705a2ca280aff0d82a30518cf565c": {"t": 1785750538.8293314, "n": 11457, "h": "6e5cde5b1acd469c", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Azure TTS V1(edge_tts) 单次流式请求超时时间,单位秒。\n# 网络异常、服务端限流或 voice 与文本语言不匹配时,edge_tts 可能长期卡住。\n# 默认 30 秒可避免 WebUI 任务无反馈;慢网络或代理环境可适当调大。\n# 设置为 0 表示禁用超时。\nedge_tts_timeout = 30\n\n# 是否校验外部 API 和素材下载的 TLS 证书。\n# 默认必须开启,避免 Pexels/Pixabay API key 和下载素材被中间人攻击篡改。\n# 只有在企业代理或自签证书环境明确需要时,才临时改为 false。\ntls_verify = true\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f (disabled by default; set enable_g4f=true only after accepting its risks)\n# oneapi\n# cloudflare\n# minimax\n# mimo (Xiaomi MiMo)\n# ernie (文心一言)\n# modelscope (魔搭社区)\n# litellm (100+ providers via LiteLLM gateway)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\n# 也可以填写兼容 OpenAI Chat Completions 协议的供应商密钥,\n# 例如 OpenRouter 这类提供自定义 base_url 的平台。\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\n# 如果使用兼容 OpenAI 接口的平台,请在这里填写对应的 base_url。\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\n# 如果使用兼容供应商,请填写该平台要求的模型 ID。\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# g4f relies on reverse-engineered third-party endpoints and is not recommended\n# for production. Prefer official APIs, OpenAI-compatible providers, LiteLLM,\n# Ollama, or local inference.\n# If you still need it, install the optional dependency with:\n# uv sync --extra g4f\nenable_g4f = false\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-2.5-flash\"\n\n########## Grok API Key\ngrok_api_key = \"\"\ngrok_model_name = \"grok-4.3\"\ngrok_base_url = \"https://api.x.ai/v1\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M2.7 (default), MiniMax-M2.7-highspeed\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M2.7\"\n\n########## Xiaomi MiMo API Key\n# Xiaomi MiMo API is OpenAI-compatible.\n# Visit https://platform.xiaomimimo.com/docs/zh-CN/quick-start/first-api-call to get more details.\nmimo_api_key = \"\"\nmimo_base_url = \"https://api.xiaomimimo.com/v1\"\nmimo_model_name = \"mimo-v2.5-pro\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n########## LiteLLM (AI Gateway — 100+ providers)\n# LiteLLM routes to any LLM provider via a unified interface.\n# Use this for providers not directly supported above: Anthropic (native API),\n# AWS Bedrock, Google Vertex AI, Cohere, Mistral, Together AI, etc.\n# Visit https://docs.litellm.ai/docs/providers for the full list.\n#\n# LiteLLM reads provider API keys from environment variables automatically:\n# OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, AWS_ACCESS_KEY_ID, etc.\n# Set the appropriate env var for your chosen provider before running.\n#\n# Model name in LiteLLM format: \"provider/model-name\"\n# Examples: \"openai/gpt-4o\", \"anthropic/claude-sonnet-4-20250514\",\n# \"bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n# \"gemini/gemini-2.5-flash\", \"ollama/llama3\"\nlitellm_model_name = \"openai/gpt-4o-mini\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n# 并发任务已满后的最大排队任务数,超过后接口返回 429,避免匿名请求无限堆积\nmax_queued_tasks = 100\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "65fd333a8cf82742fac0643e7222cd9346e5d5b3": {"t": 1785750543.1748297, "n": 11157, "h": "58856d0a23d6c2a8", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Azure TTS V1(edge_tts) 单次流式请求超时时间,单位秒。\n# 网络异常、服务端限流或 voice 与文本语言不匹配时,edge_tts 可能长期卡住。\n# 默认 30 秒可避免 WebUI 任务无反馈;慢网络或代理环境可适当调大。\n# 设置为 0 表示禁用超时。\nedge_tts_timeout = 30\n\n# 是否校验外部 API 和素材下载的 TLS 证书。\n# 默认必须开启,避免 Pexels/Pixabay API key 和下载素材被中间人攻击篡改。\n# 只有在企业代理或自签证书环境明确需要时,才临时改为 false。\ntls_verify = true\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f (disabled by default; set enable_g4f=true only after accepting its risks)\n# oneapi\n# cloudflare\n# minimax\n# ernie (文心一言)\n# modelscope (魔搭社区)\n# litellm (100+ providers via LiteLLM gateway)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\n# 也可以填写兼容 OpenAI Chat Completions 协议的供应商密钥,\n# 例如 OpenRouter 这类提供自定义 base_url 的平台。\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\n# 如果使用兼容 OpenAI 接口的平台,请在这里填写对应的 base_url。\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\n# 如果使用兼容供应商,请填写该平台要求的模型 ID。\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# g4f relies on reverse-engineered third-party endpoints and is not recommended\n# for production. Prefer official APIs, OpenAI-compatible providers, LiteLLM,\n# Ollama, or local inference.\n# If you still need it, install the optional dependency with:\n# uv sync --extra g4f\nenable_g4f = false\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-2.5-flash\"\n\n########## Grok API Key\ngrok_api_key = \"\"\ngrok_model_name = \"grok-4.3\"\ngrok_base_url = \"https://api.x.ai/v1\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M2.7 (default), MiniMax-M2.7-highspeed\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M2.7\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n########## LiteLLM (AI Gateway — 100+ providers)\n# LiteLLM routes to any LLM provider via a unified interface.\n# Use this for providers not directly supported above: Anthropic (native API),\n# AWS Bedrock, Google Vertex AI, Cohere, Mistral, Together AI, etc.\n# Visit https://docs.litellm.ai/docs/providers for the full list.\n#\n# LiteLLM reads provider API keys from environment variables automatically:\n# OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, AWS_ACCESS_KEY_ID, etc.\n# Set the appropriate env var for your chosen provider before running.\n#\n# Model name in LiteLLM format: \"provider/model-name\"\n# Examples: \"openai/gpt-4o\", \"anthropic/claude-sonnet-4-20250514\",\n# \"bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n# \"gemini/gemini-2.5-flash\", \"ollama/llama3\"\nlitellm_model_name = \"openai/gpt-4o-mini\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n# 并发任务已满后的最大排队任务数,超过后接口返回 429,避免匿名请求无限堆积\nmax_queued_tasks = 100\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "ef9877a31da26f20b5263b7bf4e35042e708211c": {"t": 1785750544.681936, "n": 11047, "h": "56f3f8f983c2d8c8", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Azure TTS V1(edge_tts) 单次流式请求超时时间,单位秒。\n# 网络异常、服务端限流或 voice 与文本语言不匹配时,edge_tts 可能长期卡住。\n# 默认 30 秒可避免 WebUI 任务无反馈;慢网络或代理环境可适当调大。\n# 设置为 0 表示禁用超时。\nedge_tts_timeout = 30\n\n# 是否校验外部 API 和素材下载的 TLS 证书。\n# 默认必须开启,避免 Pexels/Pixabay API key 和下载素材被中间人攻击篡改。\n# 只有在企业代理或自签证书环境明确需要时,才临时改为 false。\ntls_verify = true\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f (disabled by default; set enable_g4f=true only after accepting its risks)\n# oneapi\n# cloudflare\n# minimax\n# ernie (文心一言)\n# modelscope (魔搭社区)\n# litellm (100+ providers via LiteLLM gateway)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\n# 也可以填写兼容 OpenAI Chat Completions 协议的供应商密钥,\n# 例如 OpenRouter 这类提供自定义 base_url 的平台。\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\n# 如果使用兼容 OpenAI 接口的平台,请在这里填写对应的 base_url。\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\n# 如果使用兼容供应商,请填写该平台要求的模型 ID。\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# g4f relies on reverse-engineered third-party endpoints and is not recommended\n# for production. Prefer official APIs, OpenAI-compatible providers, LiteLLM,\n# Ollama, or local inference.\n# If you still need it, install the optional dependency with:\n# uv sync --extra g4f\nenable_g4f = false\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-2.5-flash\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M2.7 (default), MiniMax-M2.7-highspeed\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M2.7\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n########## LiteLLM (AI Gateway — 100+ providers)\n# LiteLLM routes to any LLM provider via a unified interface.\n# Use this for providers not directly supported above: Anthropic (native API),\n# AWS Bedrock, Google Vertex AI, Cohere, Mistral, Together AI, etc.\n# Visit https://docs.litellm.ai/docs/providers for the full list.\n#\n# LiteLLM reads provider API keys from environment variables automatically:\n# OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, AWS_ACCESS_KEY_ID, etc.\n# Set the appropriate env var for your chosen provider before running.\n#\n# Model name in LiteLLM format: \"provider/model-name\"\n# Examples: \"openai/gpt-4o\", \"anthropic/claude-sonnet-4-20250514\",\n# \"bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n# \"gemini/gemini-2.5-flash\", \"ollama/llama3\"\nlitellm_model_name = \"openai/gpt-4o-mini\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n# 并发任务已满后的最大排队任务数,超过后接口返回 429,避免匿名请求无限堆积\nmax_queued_tasks = 100\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "d5e0701e45058bf54115ae7634bcd5cacfbb0a91": {"t": 1785750545.9326403, "n": 10982, "h": "d430da93a3d5ed2b", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Azure TTS V1(edge_tts) 单次流式请求超时时间,单位秒。\n# 网络异常、服务端限流或 voice 与文本语言不匹配时,edge_tts 可能长期卡住。\n# 默认 30 秒可避免 WebUI 任务无反馈;慢网络或代理环境可适当调大。\n# 设置为 0 表示禁用超时。\nedge_tts_timeout = 30\n\n# 是否校验外部 API 和素材下载的 TLS 证书。\n# 默认必须开启,避免 Pexels/Pixabay API key 和下载素材被中间人攻击篡改。\n# 只有在企业代理或自签证书环境明确需要时,才临时改为 false。\ntls_verify = true\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f (disabled by default; set enable_g4f=true only after accepting its risks)\n# oneapi\n# cloudflare\n# minimax\n# ernie (文心一言)\n# modelscope (魔搭社区)\n# litellm (100+ providers via LiteLLM gateway)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\n# 也可以填写兼容 OpenAI Chat Completions 协议的供应商密钥,\n# 例如 OpenRouter 这类提供自定义 base_url 的平台。\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\n# 如果使用兼容 OpenAI 接口的平台,请在这里填写对应的 base_url。\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\n# 如果使用兼容供应商,请填写该平台要求的模型 ID。\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# g4f relies on reverse-engineered third-party endpoints and is not recommended\n# for production. Prefer official APIs, OpenAI-compatible providers, LiteLLM,\n# Ollama, or local inference.\n# If you still need it, install the optional dependency with:\n# uv sync --extra g4f\nenable_g4f = false\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-2.5-flash\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M2.7 (default), MiniMax-M2.7-highspeed\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M2.7\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n########## LiteLLM (AI Gateway — 100+ providers)\n# LiteLLM routes to any LLM provider via a unified interface.\n# Use this for providers not directly supported above: Anthropic (native API),\n# AWS Bedrock, Google Vertex AI, Cohere, Mistral, Together AI, etc.\n# Visit https://docs.litellm.ai/docs/providers for the full list.\n#\n# LiteLLM reads provider API keys from environment variables automatically:\n# OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, AWS_ACCESS_KEY_ID, etc.\n# Set the appropriate env var for your chosen provider before running.\n#\n# Model name in LiteLLM format: \"provider/model-name\"\n# Examples: \"openai/gpt-4o\", \"anthropic/claude-sonnet-4-20250514\",\n# \"bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n# \"gemini/gemini-2.5-flash\", \"ollama/llama3\"\nlitellm_model_name = \"openai/gpt-4o-mini\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "0eb267c527e2c46a7485d9f5c7e36401f8e12920": {"t": 1785750547.0802062, "n": 10815, "h": "1b44438af692bc10", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# 是否校验外部 API 和素材下载的 TLS 证书。\n# 默认必须开启,避免 Pexels/Pixabay API key 和下载素材被中间人攻击篡改。\n# 只有在企业代理或自签证书环境明确需要时,才临时改为 false。\ntls_verify = true\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f (disabled by default; set enable_g4f=true only after accepting its risks)\n# oneapi\n# cloudflare\n# minimax\n# ernie (文心一言)\n# modelscope (魔搭社区)\n# litellm (100+ providers via LiteLLM gateway)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\n# 也可以填写兼容 OpenAI Chat Completions 协议的供应商密钥,\n# 例如 OpenRouter 这类提供自定义 base_url 的平台。\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\n# 如果使用兼容 OpenAI 接口的平台,请在这里填写对应的 base_url。\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\n# 如果使用兼容供应商,请填写该平台要求的模型 ID。\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# g4f relies on reverse-engineered third-party endpoints and is not recommended\n# for production. Prefer official APIs, OpenAI-compatible providers, LiteLLM,\n# Ollama, or local inference.\n# If you still need it, install the optional dependency with:\n# uv sync --extra g4f\nenable_g4f = false\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-2.5-flash\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M2.7 (default), MiniMax-M2.7-highspeed\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M2.7\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n########## LiteLLM (AI Gateway — 100+ providers)\n# LiteLLM routes to any LLM provider via a unified interface.\n# Use this for providers not directly supported above: Anthropic (native API),\n# AWS Bedrock, Google Vertex AI, Cohere, Mistral, Together AI, etc.\n# Visit https://docs.litellm.ai/docs/providers for the full list.\n#\n# LiteLLM reads provider API keys from environment variables automatically:\n# OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, AWS_ACCESS_KEY_ID, etc.\n# Set the appropriate env var for your chosen provider before running.\n#\n# Model name in LiteLLM format: \"provider/model-name\"\n# Examples: \"openai/gpt-4o\", \"anthropic/claude-sonnet-4-20250514\",\n# \"bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n# \"gemini/gemini-2.5-flash\", \"ollama/llama3\"\nlitellm_model_name = \"openai/gpt-4o-mini\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "35fb1d05d2f50c12664c55b6ab29451d5246190b": {"t": 1785750548.1887808, "n": 10309, "h": "7e5e219ef49efa01", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f\n# oneapi\n# cloudflare\n# minimax\n# ernie (文心一言)\n# modelscope (魔搭社区)\n# litellm (100+ providers via LiteLLM gateway)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\n# 也可以填写兼容 OpenAI Chat Completions 协议的供应商密钥,\n# 例如 OpenRouter 这类提供自定义 base_url 的平台。\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\n# 如果使用兼容 OpenAI 接口的平台,请在这里填写对应的 base_url。\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\n# 如果使用兼容供应商,请填写该平台要求的模型 ID。\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-2.5-flash\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M2.7 (default), MiniMax-M2.7-highspeed\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M2.7\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n########## LiteLLM (AI Gateway — 100+ providers)\n# LiteLLM routes to any LLM provider via a unified interface.\n# Use this for providers not directly supported above: Anthropic (native API),\n# AWS Bedrock, Google Vertex AI, Cohere, Mistral, Together AI, etc.\n# Visit https://docs.litellm.ai/docs/providers for the full list.\n#\n# LiteLLM reads provider API keys from environment variables automatically:\n# OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, AWS_ACCESS_KEY_ID, etc.\n# Set the appropriate env var for your chosen provider before running.\n#\n# Model name in LiteLLM format: \"provider/model-name\"\n# Examples: \"openai/gpt-4o\", \"anthropic/claude-sonnet-4-20250514\",\n# \"bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n# \"gemini/gemini-2.5-flash\", \"ollama/llama3\"\nlitellm_model_name = \"openai/gpt-4o-mini\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "520a127157ec44b25a861cb3af3cee343c5ec2b0": {"t": 1785750549.804546, "n": 9418, "h": "3e96371a988b044b", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f\n# oneapi\n# cloudflare\n# minimax\n# ernie (文心一言)\n# modelscope (魔搭社区)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\n# 也可以填写兼容 OpenAI Chat Completions 协议的供应商密钥,\n# 例如 OpenRouter 这类提供自定义 base_url 的平台。\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\n# 如果使用兼容 OpenAI 接口的平台,请在这里填写对应的 base_url。\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\n# 如果使用兼容供应商,请填写该平台要求的模型 ID。\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-2.5-flash\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M2.7 (default), MiniMax-M2.7-highspeed\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M2.7\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "6bfbc282ae6a9dc59608d6a46ccd8846f257090c": {"t": 1785750551.2042787, "n": 9266, "h": "f1f290ff9ae6f95f", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f\n# oneapi\n# cloudflare\n# minimax\n# ernie (文心一言)\n# modelscope (魔搭社区)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-2.5-flash\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M2.7 (default), MiniMax-M2.7-highspeed\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M2.7\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "cf788ef5ff4371c32f132a39f75d5866ee8e327b": {"t": 1785750552.8191311, "n": 9264, "h": "4b7171852af8bef8", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f\n# oneapi\n# cloudflare\n# minimax\n# ernie (文心一言)\n# modelscope (魔搭社区)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-1.0-pro\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M2.7 (default), MiniMax-M2.7-highspeed\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M2.7\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "6a345a9c8d31a797603126cbb3a99ea33df94d42": {"t": 1785750554.691562, "n": 8565, "h": "5eacb0e8d9549b5b", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f\n# oneapi\n# cloudflare\n# minimax\n# ernie (文心一言)\n# modelscope (魔搭社区)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-1.0-pro\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M2.7 (default), MiniMax-M2.7-highspeed\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M2.7\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n"}, "3be3c4a98f1687fa2c69cab38a19560dfd6d4a53": {"t": 1785750555.9789896, "n": 8263, "h": "f55159e525762fee", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f\n# oneapi\n# cloudflare\n# ernie (文心一言)\n# modelscope (魔搭社区)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-1.0-pro\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n# 字幕位置设置 (Subtitle position settings)\n# 可选值 (Available values): \"top\", \"center\", \"bottom\", \"custom\"\n# subtitle_position = \"custom\"\n# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = \"custom\" 时生效\n# Custom position as percentage from top (0-100), only effective when subtitle_position = \"custom\"\n# custom_position = 70.0\n"}, "f2dfcfcd96c91483f2b69eac08ee57a6161a143a": {"t": 1785750557.5092766, "n": 8644, "h": "5ed7899d6680f0e0", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f\n# oneapi\n# cloudflare\n# ernie (文心一言)\n# modelscope (魔搭社区)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-1.0-pro\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n\n########## Upload-Post (Cross-post to TikTok/Instagram)\n# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.\n# Visit https://upload-post.com to create an account and get your API key.\n# API Documentation: https://docs.upload-post.com\n\n# Enable/disable Upload-Post integration\nupload_post_enabled = false\n\n# Your Upload-Post API key\nupload_post_api_key = \"\"\n\n# Your Upload-Post username\nupload_post_username = \"\"\n\n# Platforms to cross-post to (options: \"tiktok\", \"instagram\")\nupload_post_platforms = [\"tiktok\", \"instagram\"]\n\n# Automatically cross-post videos after generation (if false, you'll need to call the API manually)\nupload_post_auto_upload = false\n"}, "9744c69ed4be6c4902fb6661c41bd3ebb08dc07f": {"t": 1785750559.0709426, "n": 8247, "h": "9fc052d0e8b10f72", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f\n# oneapi\n# cloudflare\n# minimax\n# ernie (文心一言)\n# modelscope (魔搭社区)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-1.0-pro\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimax.io to get your API key\n# MiniMax API is OpenAI-compatible\n# Available models: MiniMax-M2.7 (default), MiniMax-M2.7-highspeed\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M2.7\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n"}, "3fe9dc59ed259d8f48f461df1f5cee657c74384c": {"t": 1785750561.5661569, "n": 8180, "h": "7a06ac9683391d00", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f\n# oneapi\n# cloudflare\n# minimax\n# ernie (文心一言)\n# modelscope (魔搭社区)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-1.0-pro\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## MiniMax API Key\n# Visit https://platform.minimaxi.com to get your API key\n# MiniMax API is OpenAI-compatible\nminimax_api_key = \"\"\nminimax_base_url = \"https://api.minimax.io/v1\"\nminimax_model_name = \"MiniMax-M1\"\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n"}, "18be15f4461ccb8d2ec17be89faefa40f25a7c04": {"t": 1785750562.8359694, "n": 7945, "h": "f0b9b750eee3c899", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f\n# oneapi\n# cloudflare\n# ernie (文心一言)\n# modelscope (魔搭社区)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-1.0-pro\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n"}, "10f177adacceb3b553d1e1d0ff5096afe58fab78": {"t": 1785750563.9436433, "n": 7922, "h": "42e5433af2eb9613", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f\n# oneapi\n# cloudflare\n# ernie (文心一言)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-1.0-pro\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n\n########## ModelScope API Key\n# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key\n# And note that you need to bind your Alibaba Cloud account before using the API.\nmodelscope_api_key = \"\"\nmodelscope_base_url = \"https://api-inference.modelscope.cn/v1/\"\nmodelscope_model_name = \"Qwen/Qwen3-32B\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n"}, "95922908cec8c80497cc9e22fd79b6f3798379c4": {"t": 1785750565.0247638, "n": 7590, "h": "204d40bfbc32a3bf", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f\n# oneapi\n# cloudflare\n# ernie (文心一言)\nllm_provider = \"openai\"\n\n########## Pollinations AI Settings\n# Visit https://pollinations.ai/ to learn more\n# API Key is optional - leave empty for public access\npollinations_api_key = \"\"\n# Default base URL for Pollinations API\npollinations_base_url = \"https://pollinations.ai/api/v1\"\n# Default model for text generation\npollinations_model_name = \"openai-fast\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-1.0-pro\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n"}, "45f32756a3c43f6d5d92bde4c5f5b50375a11a7e": {"t": 1785750567.1191833, "n": 7253, "h": "2cf81f3b84358e83", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f\n# oneapi\n# cloudflare\n# ernie (文心一言)\nllm_provider = \"openai\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-1.0-pro\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[siliconflow]\n# SiliconFlow API Key\n# Get your API key at https://siliconflow.cn\napi_key = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n"}, "6a19e2bb2953d0cecc65400fe1debc941d6b373d": {"t": 1785750568.3703601, "n": 7158, "h": "223c9b3f4ae5098d", "c": "[app]\nvideo_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n# 是否隐藏配置面板\nhide_config = false\n\n# Pexels API Key\n# Register at https://www.pexels.com/api/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npexels_api_keys = []\n\n# Pixabay API Key\n# Register at https://pixabay.com/api/docs/ to get your API key.\n# You can use multiple keys to avoid rate limits.\n# For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n# 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\npixabay_api_keys = []\n\n# 支持的提供商 (Supported providers):\n# openai\n# moonshot (月之暗面)\n# azure\n# qwen (通义千问)\n# deepseek\n# gemini\n# ollama\n# g4f\n# oneapi\n# cloudflare\n# ernie (文心一言)\nllm_provider = \"openai\"\n\n########## Ollama Settings\n# No need to set it unless you want to use your own proxy\nollama_base_url = \"\"\n# Check your available models at https://ollama.com/library\nollama_model_name = \"\"\n\n########## OpenAI API Key\n# Get your API key at https://platform.openai.com/api-keys\nopenai_api_key = \"\"\n# No need to set it unless you want to use your own proxy\nopenai_base_url = \"\"\n# Check your available models at https://platform.openai.com/account/limits\nopenai_model_name = \"gpt-4o-mini\"\n\n########## Moonshot API Key\n# Visit https://platform.moonshot.cn/console/api-keys to get your API key.\nmoonshot_api_key = \"\"\nmoonshot_base_url = \"https://api.moonshot.cn/v1\"\nmoonshot_model_name = \"moonshot-v1-8k\"\n\n########## OneAPI API Key\n# Visit https://github.com/songquanpeng/one-api to get your API key\noneapi_api_key = \"\"\noneapi_base_url = \"\"\noneapi_model_name = \"\"\n\n########## G4F\n# Visit https://github.com/xtekky/gpt4free to get more details\n# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\ng4f_model_name = \"gpt-3.5-turbo\"\n\n########## Azure API Key\n# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\nazure_api_key = \"\"\nazure_base_url = \"\"\nazure_model_name = \"gpt-35-turbo\" # replace with your model deployment name\nazure_api_version = \"2024-02-15-preview\"\n\n########## Gemini API Key\ngemini_api_key = \"\"\ngemini_model_name = \"gemini-1.0-pro\"\n\n########## Qwen API Key\n# Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n# Visit below links to get more details\n# https://tongyi.aliyun.com/qianwen/\n# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\nqwen_api_key = \"\"\nqwen_model_name = \"qwen-max\"\n\n\n########## DeepSeek API Key\n# Visit https://platform.deepseek.com/api_keys to get your API key\ndeepseek_api_key = \"\"\ndeepseek_base_url = \"https://api.deepseek.com\"\ndeepseek_model_name = \"deepseek-chat\"\n\n# Subtitle Provider, \"edge\" or \"whisper\"\n# If empty, the subtitle will not be generated\nsubtitle_provider = \"edge\"\n\n#\n# ImageMagick\n#\n# Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n# On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n# imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n#\n# FFMPEG\n#\n# 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n# RuntimeError: No ffmpeg exe could be found.\n# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n# ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n#########################################################################################\n\n# 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\n\n# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n# endpoint=\"https://xxxx.com\"\nendpoint = \"\"\n\n\n# Video material storage location\n# material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n# material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n# material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n# 视频素材存放位置\n# material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n# material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n# material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\nmaterial_directory = \"\"\n\n# Used for state management of the task\nenable_redis = false\nredis_host = \"localhost\"\nredis_port = 6379\nredis_db = 0\nredis_password = \"\"\n\n# 文生视频时的最大并发任务数\nmax_concurrent_tasks = 5\n\n\n[whisper]\n# Only effective when subtitle_provider is \"whisper\"\n\n# Run on GPU with FP16\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n# Run on GPU with INT8\n# model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n# Run on CPU with INT8\n# model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n# recommended model_size: \"large-v3\"\nmodel_size = \"large-v3\"\n# if you want to use GPU, set device=\"cuda\"\ndevice = \"CPU\"\ncompute_type = \"int8\"\n\n\n[proxy]\n### Use a proxy to access the Pexels API\n### Format: \"http://<username>:<password>@<proxy>:<port>\"\n### Example: \"http://user:pass@proxy:1234\"\n### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n# http = \"http://10.10.1.10:3128\"\n# https = \"http://10.10.1.10:1080\"\n\n[azure]\n# Azure Speech API Key\n# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\nspeech_key = \"\"\nspeech_region = \"\"\n\n[ui]\n# UI related settings\n# 是否隐藏日志信息\n# Whether to hide logs in the UI\nhide_log = false\n"}, "47e4cff75808133bed8751be206681abf7816bfa": {"t": 1785750569.4726965, "n": 7893, "h": "cb537e0beb450e19", "c": "[app]\n\n video_source = \"pexels\" # \"pexels\" or \"pixabay\"\n\n # 是否隐藏配置面板\n # hide_config = false\n\n[user]\n # 管理员用户名和密码,用于访问基础设置\n username = \"admin\"\n password = \"admin\"\n email = \"admin@example.com\" # 添加email字段,用于身份验证\n # Pexels API Key\n # Register at https://www.pexels.com/api/ to get your API key.\n # You can use multiple keys to avoid rate limits.\n # For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n # 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\n pexels_api_keys = []\n\n # Pixabay API Key\n # Register at https://pixabay.com/api/docs/ to get your API key.\n # You can use multiple keys to avoid rate limits.\n # For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n # 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\n pixabay_api_keys = []\n\n # 如果你没有 OPENAI API Key,可以使用 g4f 代替,或者使用国内的 Moonshot API\n # If you don't have an OPENAI API Key, you can use g4f instead\n\n # 支持的提供商 (Supported providers):\n # openai\n # moonshot (月之暗面)\n # oneapi\n # g4f\n # azure\n # qwen (通义千问)\n # gemini\n llm_provider=\"openai\"\n\n ########## Ollama Settings\n # No need to set it unless you want to use your own proxy\n ollama_base_url = \"\"\n # Check your available models at https://ollama.com/library\n ollama_model_name = \"\"\n\n ########## OpenAI API Key\n # Get your API key at https://platform.openai.com/api-keys\n openai_api_key = \"\"\n # No need to set it unless you want to use your own proxy\n openai_base_url = \"\"\n # Check your available models at https://platform.openai.com/account/limits\n openai_model_name = \"gpt-4-turbo\"\n\n ########## Moonshot API Key\n # Visit https://platform.moonshot.cn/console/api-keys to get your API key.\n moonshot_api_key=\"\"\n moonshot_base_url = \"https://api.moonshot.cn/v1\"\n moonshot_model_name = \"moonshot-v1-8k\"\n\n ########## OneAPI API Key\n # Visit https://github.com/songquanpeng/one-api to get your API key\n oneapi_api_key=\"\"\n oneapi_base_url=\"\"\n oneapi_model_name=\"\"\n\n ########## G4F\n # Visit https://github.com/xtekky/gpt4free to get more details\n # Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\n g4f_model_name = \"gpt-3.5-turbo\"\n\n ########## Azure API Key\n # Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n # API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\n azure_api_key = \"\"\n azure_base_url=\"\"\n azure_model_name=\"gpt-35-turbo\" # replace with your model deployment name\n azure_api_version = \"2024-02-15-preview\"\n\n ########## Gemini API Key\n gemini_api_key=\"\"\n gemini_model_name = \"gemini-1.0-pro\"\n\n ########## Qwen API Key\n # Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n # Visit below links to get more details\n # https://tongyi.aliyun.com/qianwen/\n # https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\n qwen_api_key = \"\"\n qwen_model_name = \"qwen-max\"\n\n\n ########## DeepSeek API Key\n # Visit https://platform.deepseek.com/api_keys to get your API key\n deepseek_api_key = \"\"\n deepseek_base_url = \"https://api.deepseek.com\"\n deepseek_model_name = \"deepseek-chat\"\n\n # Subtitle Provider, \"edge\" or \"whisper\"\n # If empty, the subtitle will not be generated\n subtitle_provider = \"edge\"\n\n #\n # ImageMagick\n #\n # Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n # On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n # Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n # imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n #\n # FFMPEG\n #\n # 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n # 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n # RuntimeError: No ffmpeg exe could be found.\n # Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n # 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n # Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n # However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n # RuntimeError: No ffmpeg exe could be found.\n # Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n # In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n # ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n #########################################################################################\n\n # 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n # 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n # 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # endpoint=\"https://xxxx.com\"\n\n # When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n # For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n # For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # endpoint=\"https://xxxx.com\"\n endpoint=\"\"\n\n\n # Video material storage location\n # material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n # material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n # material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n # 视频素材存放位置\n # material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n # material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n # material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\n material_directory = \"\"\n\n # Used for state management of the task\n enable_redis = false\n redis_host = \"localhost\"\n redis_port = 6379\n redis_db = 0\n redis_password = \"\"\n\n # 文生视频时的最大并发任务数\n max_concurrent_tasks = 5\n\n # webui界面是否显示配置项\n # webui hide baisc config panel\n hide_config = false\n\n\n[whisper]\n # Only effective when subtitle_provider is \"whisper\"\n\n # Run on GPU with FP16\n # model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n # Run on GPU with INT8\n # model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n # Run on CPU with INT8\n # model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n # recommended model_size: \"large-v3\"\n model_size=\"large-v3\"\n # if you want to use GPU, set device=\"cuda\"\n device=\"CPU\"\n compute_type=\"int8\"\n\n\n[proxy]\n ### Use a proxy to access the Pexels API\n ### Format: \"http://<username>:<password>@<proxy>:<port>\"\n ### Example: \"http://user:pass@proxy:1234\"\n ### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n # http = \"http://10.10.1.10:3128\"\n # https = \"http://10.10.1.10:1080\"\n\n[azure]\n # Azure Speech API Key\n # Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\n speech_key=\"\"\n speech_region=\"\""}, "afb4eff3e5307345f243546675525ec896c3e222": {"t": 1785750570.5870323, "n": 7720, "h": "0f8c1b32f76a159f", "c": "[app]\n\n video_source = \"pexels\" # \"pexels\" or \"pixabay\"\n # Pexels API Key\n # Register at https://www.pexels.com/api/ to get your API key.\n # You can use multiple keys to avoid rate limits.\n # For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n # 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\n pexels_api_keys = []\n\n # Pixabay API Key\n # Register at https://pixabay.com/api/docs/ to get your API key.\n # You can use multiple keys to avoid rate limits.\n # For example: pixabay_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n # 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\n pixabay_api_keys = []\n\n # 如果你没有 OPENAI API Key,可以使用 g4f 代替,或者使用国内的 Moonshot API\n # If you don't have an OPENAI API Key, you can use g4f instead\n\n # 支持的提供商 (Supported providers):\n # openai\n # moonshot (月之暗面)\n # oneapi\n # g4f\n # azure\n # qwen (通义千问)\n # gemini\n llm_provider=\"openai\"\n\n ########## Ollama Settings\n # No need to set it unless you want to use your own proxy\n ollama_base_url = \"\"\n # Check your available models at https://ollama.com/library\n ollama_model_name = \"\"\n\n ########## OpenAI API Key\n # Get your API key at https://platform.openai.com/api-keys\n openai_api_key = \"\"\n # No need to set it unless you want to use your own proxy\n openai_base_url = \"\"\n # Check your available models at https://platform.openai.com/account/limits\n openai_model_name = \"gpt-4-turbo\"\n\n ########## Moonshot API Key\n # Visit https://platform.moonshot.cn/console/api-keys to get your API key.\n moonshot_api_key=\"\"\n moonshot_base_url = \"https://api.moonshot.cn/v1\"\n moonshot_model_name = \"moonshot-v1-8k\"\n\n ########## OneAPI API Key\n # Visit https://github.com/songquanpeng/one-api to get your API key\n oneapi_api_key=\"\"\n oneapi_base_url=\"\"\n oneapi_model_name=\"\"\n\n ########## G4F\n # Visit https://github.com/xtekky/gpt4free to get more details\n # Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\n g4f_model_name = \"gpt-3.5-turbo\"\n\n ########## Azure API Key\n # Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n # API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\n azure_api_key = \"\"\n azure_base_url=\"\"\n azure_model_name=\"gpt-35-turbo\" # replace with your model deployment name\n azure_api_version = \"2024-02-15-preview\"\n\n ########## Gemini API Key\n gemini_api_key=\"\"\n gemini_model_name = \"gemini-1.0-pro\"\n\n ########## Qwen API Key\n # Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n # Visit below links to get more details\n # https://tongyi.aliyun.com/qianwen/\n # https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\n qwen_api_key = \"\"\n qwen_model_name = \"qwen-max\"\n\n\n ########## DeepSeek API Key\n # Visit https://platform.deepseek.com/api_keys to get your API key\n deepseek_api_key = \"\"\n deepseek_base_url = \"https://api.deepseek.com\"\n deepseek_model_name = \"deepseek-chat\"\n\n # Subtitle Provider, \"edge\" or \"whisper\"\n # If empty, the subtitle will not be generated\n subtitle_provider = \"edge\"\n\n #\n # ImageMagick\n #\n # Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n # On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n # Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n # imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n #\n # FFMPEG\n #\n # 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n # 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n # RuntimeError: No ffmpeg exe could be found.\n # Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n # 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n # Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n # However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n # RuntimeError: No ffmpeg exe could be found.\n # Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n # In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n # ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n #########################################################################################\n\n # 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n # 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n # 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # endpoint=\"https://xxxx.com\"\n\n # When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n # For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n # For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # endpoint=\"https://xxxx.com\"\n endpoint=\"\"\n\n\n # Video material storage location\n # material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n # material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n # material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n # 视频素材存放位置\n # material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n # material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n # material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\n material_directory = \"\"\n\n # Used for state management of the task\n enable_redis = false\n redis_host = \"localhost\"\n redis_port = 6379\n redis_db = 0\n redis_password = \"\"\n\n # 文生视频时的最大并发任务数\n max_concurrent_tasks = 5\n\n # webui界面是否显示配置项\n # webui hide baisc config panel\n hide_config = false\n\n\n[whisper]\n # Only effective when subtitle_provider is \"whisper\"\n\n # Run on GPU with FP16\n # model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n # Run on GPU with INT8\n # model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n # Run on CPU with INT8\n # model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n # recommended model_size: \"large-v3\"\n model_size=\"large-v3\"\n # if you want to use GPU, set device=\"cuda\"\n device=\"CPU\"\n compute_type=\"int8\"\n\n\n[proxy]\n ### Use a proxy to access the Pexels API\n ### Format: \"http://<username>:<password>@<proxy>:<port>\"\n ### Example: \"http://user:pass@proxy:1234\"\n ### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n\n # http = \"http://10.10.1.10:3128\"\n # https = \"http://10.10.1.10:1080\"\n\n[azure]\n # Azure Speech API Key\n # Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\n speech_key=\"\"\n speech_region=\"\""}, "fee226a14943e49db55e68d0e6caf57b8ed571d6": {"t": 1785750571.6745026, "n": 7482, "h": "da8c97ee75bc6221", "c": "[app]\n # Pexels API Key\n # Register at https://www.pexels.com/api/ to get your API key.\n # You can use multiple keys to avoid rate limits.\n # For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n # 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\n pexels_api_keys = []\n\n # 如果你没有 OPENAI API Key,可以使用 g4f 代替,或者使用国内的 Moonshot API\n # If you don't have an OPENAI API Key, you can use g4f instead\n\n # 支持的提供商 (Supported providers):\n # openai\n # moonshot (月之暗面)\n # oneapi\n # g4f\n # azure\n # qwen (通义千问)\n # gemini\n llm_provider=\"openai\"\n\n ########## Ollama Settings\n # No need to set it unless you want to use your own proxy\n ollama_base_url = \"\"\n # Check your available models at https://ollama.com/library\n ollama_model_name = \"\"\n\n ########## OpenAI API Key\n # Get your API key at https://platform.openai.com/api-keys\n openai_api_key = \"\"\n # No need to set it unless you want to use your own proxy\n openai_base_url = \"\"\n # Check your available models at https://platform.openai.com/account/limits\n openai_model_name = \"gpt-4-turbo\"\n\n ########## Moonshot API Key\n # Visit https://platform.moonshot.cn/console/api-keys to get your API key.\n moonshot_api_key=\"\"\n moonshot_base_url = \"https://api.moonshot.cn/v1\"\n moonshot_model_name = \"moonshot-v1-8k\"\n\n ########## OneAPI API Key\n # Visit https://github.com/songquanpeng/one-api to get your API key\n oneapi_api_key=\"\"\n oneapi_base_url=\"\"\n oneapi_model_name=\"\"\n\n ########## G4F\n # Visit https://github.com/xtekky/gpt4free to get more details\n # Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\n g4f_model_name = \"gpt-3.5-turbo\"\n\n ########## Azure API Key\n # Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n # API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\n azure_api_key = \"\"\n azure_base_url=\"\"\n azure_model_name=\"gpt-35-turbo\" # replace with your model deployment name\n azure_api_version = \"2024-02-15-preview\"\n\n ########## Gemini API Key\n gemini_api_key=\"\"\n gemini_model_name = \"gemini-1.0-pro\"\n\n ########## Qwen API Key\n # Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n # Visit below links to get more details\n # https://tongyi.aliyun.com/qianwen/\n # https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\n qwen_api_key = \"\"\n qwen_model_name = \"qwen-max\" \n\n\n ########## DeepSeek API Key\n # Visit https://platform.deepseek.com/api_keys to get your API key\n deepseek_api_key = \"\"\n deepseek_base_url = \"https://api.deepseek.com\"\n deepseek_model_name = \"deepseek-chat\"\n\n # Subtitle Provider, \"edge\" or \"whisper\"\n # If empty, the subtitle will not be generated\n subtitle_provider = \"edge\"\n\n #\n # ImageMagick\n #\n # Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n # On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n # Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n # imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n #\n # FFMPEG\n #\n # 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n # 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n # RuntimeError: No ffmpeg exe could be found.\n # Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n # 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n # Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n # However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n # RuntimeError: No ffmpeg exe could be found.\n # Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n # In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n # ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n #########################################################################################\n\n # 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n # 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n # 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # endpoint=\"https://xxxx.com\"\n\n # When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n # For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n # For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # endpoint=\"https://xxxx.com\"\n endpoint=\"\"\n\n\n # Video material storage location\n # material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n # material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n # material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n # 视频素材存放位置\n # material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n # material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n # material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\n material_directory = \"\"\n\n # Used for state management of the task\n enable_redis = false\n redis_host = \"localhost\"\n redis_port = 6379\n redis_db = 0\n redis_password = \"\"\n\n # 文生视频时的最大并发任务数\n max_concurrent_tasks = 5\n\n # webui界面是否显示配置项\n # webui hide baisc config panel\n hide_config = false\n\n\n[whisper]\n # Only effective when subtitle_provider is \"whisper\"\n\n # Run on GPU with FP16\n # model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n # Run on GPU with INT8\n # model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n # Run on CPU with INT8\n # model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n # recommended model_size: \"large-v3\"\n model_size=\"large-v3\"\n # if you want to use GPU, set device=\"cuda\"\n device=\"CPU\"\n compute_type=\"int8\"\n\n[pexels]\n video_concat_mode=\"sequential\" # \"random\" or \"sequential\"\n [pexels.proxies]\n ### Use a proxy to access the Pexels API\n ### Format: \"http://<username>:<password>@<proxy>:<port>\"\n ### Example: \"http://user:pass@proxy:1234\"\n ### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n # http = \"http://10.10.1.10:3128\"\n # https = \"http://10.10.1.10:1080\"\n\n[azure]\n # Azure Speech API Key\n # Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\n speech_key=\"\"\n speech_region=\"\""}, "fb3aadeccc7522c5bec53b4fa2a610e350a1cdf8": {"t": 1785750572.7565289, "n": 7259, "h": "7e8c64d3357be167", "c": "[app]\n # Pexels API Key\n # Register at https://www.pexels.com/api/ to get your API key.\n # You can use multiple keys to avoid rate limits.\n # For example: pexels_api_keys = [\"123adsf4567adf89\",\"abd1321cd13efgfdfhi\"]\n # 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开\n pexels_api_keys = []\n\n # 如果你没有 OPENAI API Key,可以使用 g4f 代替,或者使用国内的 Moonshot API\n # If you don't have an OPENAI API Key, you can use g4f instead\n\n # 支持的提供商 (Supported providers):\n # openai\n # moonshot (月之暗面)\n # oneapi\n # g4f\n # azure\n # qwen (通义千问)\n # gemini\n llm_provider=\"openai\"\n\n ########## Ollama Settings\n # No need to set it unless you want to use your own proxy\n ollama_base_url = \"\"\n # Check your available models at https://ollama.com/library\n ollama_model_name = \"\"\n\n ########## OpenAI API Key\n # Get your API key at https://platform.openai.com/api-keys\n openai_api_key = \"\"\n # No need to set it unless you want to use your own proxy\n openai_base_url = \"\"\n # Check your available models at https://platform.openai.com/account/limits\n openai_model_name = \"gpt-4-turbo\"\n\n ########## Moonshot API Key\n # Visit https://platform.moonshot.cn/console/api-keys to get your API key.\n moonshot_api_key=\"\"\n moonshot_base_url = \"https://api.moonshot.cn/v1\"\n moonshot_model_name = \"moonshot-v1-8k\"\n\n ########## OneAPI API Key\n # Visit https://github.com/songquanpeng/one-api to get your API key\n oneapi_api_key=\"\"\n oneapi_base_url=\"\"\n oneapi_model_name=\"\"\n\n ########## G4F\n # Visit https://github.com/xtekky/gpt4free to get more details\n # Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py\n g4f_model_name = \"gpt-3.5-turbo\"\n\n ########## Azure API Key\n # Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details\n # API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference\n azure_api_key = \"\"\n azure_base_url=\"\"\n azure_model_name=\"gpt-35-turbo\" # replace with your model deployment name\n azure_api_version = \"2024-02-15-preview\"\n\n ########## Gemini API Key\n gemini_api_key=\"\"\n gemini_model_name = \"gemini-1.0-pro\"\n\n ########## Qwen API Key\n # Visit https://dashscope.console.aliyun.com/apiKey to get your API key\n # Visit below links to get more details\n # https://tongyi.aliyun.com/qianwen/\n # https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction\n qwen_api_key = \"\"\n qwen_model_name = \"qwen-max\" \n\n\n # Subtitle Provider, \"edge\" or \"whisper\"\n # If empty, the subtitle will not be generated\n subtitle_provider = \"edge\"\n\n #\n # ImageMagick\n #\n # Once you have installed it, ImageMagick will be automatically detected, except on Windows!\n # On Windows, for example \"C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe\"\n # Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe\n\n # imagemagick_path = \"C:\\\\Program Files (x86)\\\\ImageMagick-7.1.1-Q16\\\\magick.exe\"\n\n\n #\n # FFMPEG\n #\n # 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。\n # 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:\n # RuntimeError: No ffmpeg exe could be found.\n # Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n # 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/\n\n # Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.\n # However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:\n # RuntimeError: No ffmpeg exe could be found.\n # Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.\n # In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/\n\n # ffmpeg_path = \"C:\\\\Users\\\\harry\\\\Downloads\\\\ffmpeg.exe\"\n #########################################################################################\n\n # 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口\n # 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名\n # 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # endpoint=\"https://xxxx.com\"\n\n # When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.\n # For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.\n # For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4\n # endpoint=\"https://xxxx.com\"\n endpoint=\"\"\n\n\n # Video material storage location\n # material_directory = \"\" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project\n # material_directory = \"/user/harry/videos\" # Indicates that video materials will be downloaded to a specified folder\n # material_directory = \"task\" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials\n\n # 视频素材存放位置\n # material_directory = \"\" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos\n # material_directory = \"/user/harry/videos\" #表示将视频素材下载到指定的文件夹中\n # material_directory = \"task\" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材\n\n material_directory = \"\"\n\n # Used for state management of the task\n enable_redis = false\n redis_host = \"localhost\"\n redis_port = 6379\n redis_db = 0\n redis_password = \"\"\n\n # 文生视频时的最大并发任务数\n max_concurrent_tasks = 5\n\n # webui界面是否显示配置项\n # webui hide baisc config panel\n hide_config = false\n\n\n[whisper]\n # Only effective when subtitle_provider is \"whisper\"\n\n # Run on GPU with FP16\n # model = WhisperModel(model_size, device=\"cuda\", compute_type=\"float16\")\n\n # Run on GPU with INT8\n # model = WhisperModel(model_size, device=\"cuda\", compute_type=\"int8_float16\")\n\n # Run on CPU with INT8\n # model = WhisperModel(model_size, device=\"cpu\", compute_type=\"int8\")\n\n # recommended model_size: \"large-v3\"\n model_size=\"large-v3\"\n # if you want to use GPU, set device=\"cuda\"\n device=\"CPU\"\n compute_type=\"int8\"\n\n[pexels]\n video_concat_mode=\"sequential\" # \"random\" or \"sequential\"\n [pexels.proxies]\n ### Use a proxy to access the Pexels API\n ### Format: \"http://<username>:<password>@<proxy>:<port>\"\n ### Example: \"http://user:pass@proxy:1234\"\n ### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies\n # http = \"http://10.10.1.10:3128\"\n # https = \"http://10.10.1.10:1080\"\n\n[azure]\n # Azure Speech API Key\n # Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices\n speech_key=\"\"\n speech_region=\"\""}}}} |