FastMovieAI AI短剧创作平台 二开基线

- 源码: xhadmincn/FastMovieAI (Apache 2.0)
- 二开: Docker部署, Swoole改Select, route.php修复, 补update/VERSION
- vendor/示例资源已gitignore
This commit is contained in:
李建琦
2026-08-26 18:37:36 +08:00
commit eae151fd57
888 changed files with 105571 additions and 0 deletions
+12
View File
@@ -0,0 +1,12 @@
<html>
<head>
<title>404 Not Found - webman</title>
</head>
<body>
<center>
<h1>404 Not Found</h1>
</center>
<hr>
<center>webman</center>
</body>
</html>
@@ -0,0 +1,2 @@
*
!.gitignore
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="256" height="256" viewBox="0 0 256 256"><defs><clipPath id="master_svg0_8_3947"><rect x="0" y="0" width="256" height="256" rx="50"/></clipPath></defs><g clip-path="url(#master_svg0_8_3947)"><rect x="0" y="0" width="256" height="256" rx="50" fill="#000000" fill-opacity="1"/><ellipse cx="75.03030395507812" cy="183.04131317138672" rx="23.030303955078125" ry="22.95867919921875" fill="#FE6056" fill-opacity="1" style="mix-blend-mode:passthrough"/><path d="M52,97.91735800000001L158.08264,97.91735800000001C183.44211,97.91735800000001,204,77.359459,204,52L77.584738,52C63.454677000000004,52,52,63.454675,52,77.58473599999999L52,97.91735800000001Z" fill="#0DF283" fill-opacity="1"/><g><path d="M72.266665,81.18941307067871L52,81.18941307067871L52,109.47000307067871Q52.37587196,108.81541207067872,52.79403096,108.18682507067871Q53.2121899,107.55823707067871,53.6708326,106.95836607067871Q54.1294756,106.35849607067871,54.6266241,105.78992607067872Q55.1237726,105.2213570706787,55.6572828,104.6865440706787Q56.1907935,104.15173107067871,56.7583656,103.65297907067871Q57.3259373,103.15422407067871,57.9251223,102.6936820706787Q58.5243077,102.23314107067871,59.152523,101.81279907067871Q59.7807374,101.39245407067871,60.4352722,101.01412007067871Q61.0898075,100.6357860706787,61.7678394,100.30109607067871Q62.445872,99.96640607067872,63.144478,99.67679807067871Q63.843084,99.3871940706787,64.559252,99.14392107067872Q65.275419,98.90064807067871,66.00606,98.7047600706787Q66.7367,98.50887107067871,67.478662,98.3612120706787Q68.220623,98.21355207067872,68.970707,98.11475607067871Q69.72079099999999,98.01596307067871,70.475761,97.96645707067871Q71.230732,97.91695207067872,71.987335,97.91695207067872Q72.127005,97.91695207067872,72.266665,97.91864007067872L72.266665,81.18941307067871Z" fill-rule="evenodd" fill="#0DF283" fill-opacity="1"/></g><path d="M52,152.5578494855957L158.08264,152.5578494855957C183.44211,152.5578494855957,204,131.99995048559572,204,106.6404914855957L77.584738,106.6404914855957C63.454677000000004,106.6404914855957,52,118.0951664855957,52,132.2252274855957L52,152.5578494855957Z" fill="#FEBC2F" fill-opacity="1" style="mix-blend-mode:passthrough"/><g><path d="M72.266665,134.53646850585938L52,134.53646850585938L52,164.11246850585937Q52.37587196,163.45787850585938,52.79403096,162.82929050585938Q53.2121899,162.20070450585936,53.6708326,161.6008315058594Q54.1294756,161.00096150585938,54.6266241,160.43239250585938Q55.1237726,159.8638225058594,55.6572828,159.32901050585937Q56.1907935,158.7941975058594,56.7583656,158.29544250585937Q57.3259373,157.79669150585937,57.9251223,157.33614950585937Q58.5243077,156.87560850585936,59.152523,156.4552655058594Q59.7807374,156.03491950585936,60.4352722,155.65658550585937Q61.0898075,155.27825150585937,61.7678394,154.94356150585938Q62.445872,154.60887150585938,63.144478,154.31926350585937Q63.843084,154.02965950585937,64.559252,153.78638650585938Q65.275419,153.54311350585937,66.00606,153.34722550585937Q66.7367,153.15133650585938,67.478662,153.00367750585937Q68.220623,152.85601850585937,68.970707,152.75722150585938Q69.72079099999999,152.65842850585938,70.475761,152.60892250585937Q71.230732,152.5594175058594,71.987335,152.5594175058594Q72.127005,152.5594175058594,72.266665,152.56110550585936L72.266665,134.53646850585938Z" fill-rule="evenodd" fill="#FEBC2F" fill-opacity="1" style="mix-blend-mode:passthrough"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

+25
View File
@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=10,chrome=1">
<meta name="renderer" content="webkit">
<meta name="viewport" content="maximum-scale=1.0, user-scalable=0">
<meta name="aplus-xplug" content="NONE">
<link rel="icon" type="image/svg+xml" href="/icon.svg" />
<meta name="theme-color" content="#317EFB"/>
<meta name="version" content="0.1.3">
<title>Loading...</title>
<script src="/static/icode.js"></script>
<script type="module" crossorigin src="/assets/index-IDh59bmd.js"></script>
<link rel="modulepreload" crossorigin href="/assets/vendor-Bir9qRZM.js">
<link rel="stylesheet" crossorigin href="/assets/vendor-DfLO3TL3.css">
<link rel="stylesheet" crossorigin href="/assets/index-vODxA-Q3.css">
</head>
<body>
<div id="app"></div>
</body>
</html>
+22
View File
@@ -0,0 +1,22 @@
<?php
/**
* FastMovie Admin 入口文件
* 检测系统是否已安装,未安装则跳转到安装页面
*/
// 检查是否已安装
$lockFile = dirname(__DIR__) . '/install.lock';
// 获取当前请求路径
$requestUri = $_SERVER['REQUEST_URI'] ?? '/';
$path = parse_url($requestUri, PHP_URL_PATH);
// 如果不在安装页面且未安装,则跳转到安装页面
if (strpos($path, '/install') !== 0 && !file_exists($lockFile)) {
// 重定向到安装页面
header('Location: /install');
exit;
}
// 如果已安装或在安装页面,继续正常流程
// 这里可以添加其他初始化逻辑
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

+57
View File
@@ -0,0 +1,57 @@
const useStorage = () => {
/**
* 设置储存数据
* @param key 键
* @param data 值
* @param expire 过期时间(秒)
* @returns Promise
*/
const set = (key, data, expire) => {
return new Promise((resolve, reject) => {
const obj = {
expire: 0,
data: data,
}
if (expire !== undefined) {
obj.expire = Date.now() + expire * 1000
}
globalThis.localStorage.setItem(key, JSON.stringify(obj));
if (get(key) === null) {
reject();
} else {
resolve(true);
}
})
}
/**
* 获取储存数据
* @param key 键
* @returns StorageInterface
*/
const get = (key) => {
const data = globalThis.localStorage.getItem(key);
if (data === null) {
return null;
}
const ret = JSON.parse(data);
if (ret?.expire > 0 && ret?.expire < Date.now()) {
return null;
}
return ret?.data;
}
return { set, get };
}
function icodeRun(){
// 获取地址栏参数
const url = new URL(globalThis.location.href);
const icode = url.searchParams.get('icode');
const storage = useStorage();
// 保存到本地存储
if (icode&&!storage.get('CONTROL.ICODE')) {
storage.set('CONTROL.ICODE', icode);
console.log('icode.js loaded')
}
}
icodeRun()
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

@@ -0,0 +1,3 @@
{
"version": "0.1.3"
}
@@ -0,0 +1,18 @@
<!doctype html>
<html lang="en" data-theme="dark">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/fastmovie/icon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>loading...</title>
<meta name="version" content="0.0.55">
<!-- <meta name="base-url" content="https://fastmovie.ai"> -->
<script type="module" crossorigin src="/fastmovie/assets/index-CDeu_ufp.js"></script>
<link rel="modulepreload" crossorigin href="/fastmovie/assets/vendor-xfcqOUcS.js">
<link rel="stylesheet" crossorigin href="/fastmovie/assets/vendor-Dq_vcvXQ.css">
<link rel="stylesheet" crossorigin href="/fastmovie/assets/index-5DbkJtIF.css">
</head>
<body>
<div id="app"></div>
</body>
</html>