diff --git a/scripts/generate-manifest.js b/scripts/generate-manifest.js
index be26710..fa476f7 100644
--- a/scripts/generate-manifest.js
+++ b/scripts/generate-manifest.js
@@ -11,7 +11,7 @@ const publicDir = path.join(projectRoot, 'public');
const manifestPath = path.join(publicDir, 'manifest.json');
// 从环境变量获取站点名称
-const siteName = process.env.SITE_NAME || 'MoonTV';
+const siteName = process.env.SITE_NAME || 'KatelyaTV';
// manifest.json 模板
const manifestTemplate = {
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 3cd211d..9c4e141 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -66,7 +66,7 @@ const BottomKatelyaLogo = () => {
KatelyaTV
- Powered by MoonTV Core
+ Powered by KatelyaTV Core
diff --git a/src/app/warning/page.tsx b/src/app/warning/page.tsx
index b3dfa95..18ade67 100644
--- a/src/app/warning/page.tsx
+++ b/src/app/warning/page.tsx
@@ -1,7 +1,7 @@
import { Metadata } from 'next';
export const metadata: Metadata = {
- title: '安全警告 - MoonTV',
+ title: '安全警告 - KatelyaTV',
description: '站点安全配置警告',
};
diff --git a/src/lib/config.ts b/src/lib/config.ts
index f800258..7c976d6 100644
--- a/src/lib/config.ts
+++ b/src/lib/config.ts
@@ -151,7 +151,7 @@ async function initConfig() {
}
adminConfig = {
SiteConfig: {
- SiteName: process.env.SITE_NAME || 'MoonTV',
+ SiteName: process.env.SITE_NAME || 'KatelyaTV',
Announcement:
process.env.ANNOUNCEMENT ||
'本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。',
@@ -190,7 +190,7 @@ async function initConfig() {
// 本地存储直接使用文件配置
cachedConfig = {
SiteConfig: {
- SiteName: process.env.SITE_NAME || 'MoonTV',
+ SiteName: process.env.SITE_NAME || 'KatelyaTV',
Announcement:
process.env.ANNOUNCEMENT ||
'本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。',
@@ -230,7 +230,7 @@ export async function getConfig(): Promise {
}
if (adminConfig) {
// 合并一些环境变量配置
- adminConfig.SiteConfig.SiteName = process.env.SITE_NAME || 'MoonTV';
+ adminConfig.SiteConfig.SiteName = process.env.SITE_NAME || 'KatelyaTV';
adminConfig.SiteConfig.Announcement =
process.env.ANNOUNCEMENT ||
'本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。';
@@ -337,7 +337,7 @@ export async function resetConfig() {
}
const adminConfig = {
SiteConfig: {
- SiteName: process.env.SITE_NAME || 'MoonTV',
+ SiteName: process.env.SITE_NAME || 'KatelyaTV',
Announcement:
process.env.ANNOUNCEMENT ||
'本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。',
diff --git a/src/lib/db.client.ts b/src/lib/db.client.ts
index 2c42f9e..04fe729 100644
--- a/src/lib/db.client.ts
+++ b/src/lib/db.client.ts
@@ -55,12 +55,17 @@ interface UserCacheStore {
}
// ---- 常量 ----
-const PLAY_RECORDS_KEY = 'moontv_play_records';
-const FAVORITES_KEY = 'moontv_favorites';
-const SEARCH_HISTORY_KEY = 'moontv_search_history';
+// 新的键名(KatelyaTV)与旧键名(MoonTV)保持向后兼容
+const PLAY_RECORDS_KEY = 'katelyatv_play_records';
+const FAVORITES_KEY = 'katelyatv_favorites';
+const SEARCH_HISTORY_KEY = 'katelyatv_search_history';
+const LEGACY_PLAY_RECORDS_KEY = 'moontv_play_records';
+const LEGACY_FAVORITES_KEY = 'moontv_favorites';
+const LEGACY_SEARCH_HISTORY_KEY = 'moontv_search_history';
// 缓存相关常量
-const CACHE_PREFIX = 'moontv_cache_';
+const CACHE_PREFIX = 'katelyatv_cache_';
+const LEGACY_CACHE_PREFIX = 'moontv_cache_';
const CACHE_VERSION = '1.0.0';
const CACHE_EXPIRE_TIME = 60 * 60 * 1000; // 一小时缓存过期
@@ -426,7 +431,9 @@ export async function getAllPlayRecords(): Promise> {
// localstorage 模式
try {
- const raw = localStorage.getItem(PLAY_RECORDS_KEY);
+ const primary = localStorage.getItem(PLAY_RECORDS_KEY);
+ const fallback = localStorage.getItem(LEGACY_PLAY_RECORDS_KEY);
+ const raw = primary ?? fallback;
if (!raw) return {};
return JSON.parse(raw) as Record;
} catch (err) {
@@ -614,7 +621,9 @@ export async function getSearchHistory(): Promise {
// localStorage 模式
try {
- const raw = localStorage.getItem(SEARCH_HISTORY_KEY);
+ const primary = localStorage.getItem(SEARCH_HISTORY_KEY);
+ const fallback = localStorage.getItem(LEGACY_SEARCH_HISTORY_KEY);
+ const raw = primary ?? fallback;
if (!raw) return [];
const arr = JSON.parse(raw) as string[];
// 仅返回字符串数组
@@ -835,7 +844,9 @@ export async function getAllFavorites(): Promise> {
// localStorage 模式
try {
- const raw = localStorage.getItem(FAVORITES_KEY);
+ const primary = localStorage.getItem(FAVORITES_KEY);
+ const fallback = localStorage.getItem(LEGACY_FAVORITES_KEY);
+ const raw = primary ?? fallback;
if (!raw) return {};
return JSON.parse(raw) as Record;
} catch (err) {
@@ -1053,6 +1064,7 @@ export async function clearAllPlayRecords(): Promise {
// localStorage 模式
if (typeof window === 'undefined') return;
localStorage.removeItem(PLAY_RECORDS_KEY);
+ localStorage.removeItem(LEGACY_PLAY_RECORDS_KEY);
window.dispatchEvent(
new CustomEvent('playRecordsUpdated', {
detail: {},
@@ -1094,6 +1106,7 @@ export async function clearAllFavorites(): Promise {
// localStorage 模式
if (typeof window === 'undefined') return;
localStorage.removeItem(FAVORITES_KEY);
+ localStorage.removeItem(LEGACY_FAVORITES_KEY);
window.dispatchEvent(
new CustomEvent('favoritesUpdated', {
detail: {},
diff --git a/src/lib/upstash.db.ts b/src/lib/upstash.db.ts
index 3832bd3..bf2a457 100644
--- a/src/lib/upstash.db.ts
+++ b/src/lib/upstash.db.ts
@@ -271,8 +271,9 @@ export class UpstashRedisStorage implements IStorage {
// 单例 Upstash Redis 客户端
function getUpstashRedisClient(): Redis {
- const globalKey = Symbol.for('__MOONTV_UPSTASH_REDIS_CLIENT__');
- let client: Redis | undefined = (global as any)[globalKey];
+ const legacyKey = Symbol.for('__MOONTV_UPSTASH_REDIS_CLIENT__');
+ const globalKey = Symbol.for('__KATELYATV_UPSTASH_REDIS_CLIENT__');
+ let client: Redis | undefined = (global as any)[globalKey] || (global as any)[legacyKey];
if (!client) {
const upstashUrl = process.env.UPSTASH_URL;
@@ -299,6 +300,8 @@ function getUpstashRedisClient(): Redis {
console.log('Upstash Redis client created successfully');
(global as any)[globalKey] = client;
+ // 同步设置旧的全局键,保持向后兼容
+ (global as any)[legacyKey] = client;
}
return client;
diff --git a/src/lib/version.ts b/src/lib/version.ts
index 687eba4..c1a0e0d 100644
--- a/src/lib/version.ts
+++ b/src/lib/version.ts
@@ -11,11 +11,15 @@ export enum UpdateStatus {
FETCH_FAILED = 'fetch_failed', // 获取失败
}
-// 远程版本检查URL配置
+// 远程版本检查URL配置(支持环境变量覆盖,并保留 MoonTV 上游作为后备)
+const ENV_PRIMARY = process.env.NEXT_PUBLIC_VERSION_URL_PRIMARY;
+const ENV_BACKUP = process.env.NEXT_PUBLIC_VERSION_URL_BACKUP;
const VERSION_CHECK_URLS = [
+ ENV_PRIMARY,
+ ENV_BACKUP,
'https://ghfast.top/raw.githubusercontent.com/senshinya/MoonTV/main/VERSION.txt',
'https://raw.githubusercontent.com/senshinya/MoonTV/main/VERSION.txt',
-];
+].filter(Boolean) as string[];
/**
* 检查是否有新版本可用