Просмотр исходного кода

更新视频菜单数据,使用固定菜单替代API调用,优化标签展示逻辑,提升用户体验

wuyi 3 месяцев назад
Родитель
Сommit
a35f68c9a7
4 измененных файлов с 192 добавлено и 37 удалено
  1. 5 5
      .env.production
  2. 149 0
      src/data/videoMenus.ts
  3. 10 10
      src/services/api.ts
  4. 28 22
      src/views/Home.vue

+ 5 - 5
.env.production

@@ -1,7 +1,7 @@
 VITE_API_URL=https://9g15.vip/api
 
-VITE_VIDEO_API_URL=https://qa3-api.69mediatest.com/api
-VITE_VIDEO_PLAT_ID=30017
-VITE_VIDEO_CHANNEL_ID=30017001
-VITE_VIDEO_USER_ID=30005476
-VITE_VIDEO_TOKEN=ITM1cDO3gTN3EzImlTNllDOjJDNjJmNykTO0EmYyMWY2EWM5ETOxYDZlhzI2cDN1ADMwMzIzQmM5YGZwYjNlFTMwgzY1I2MkRWN5QGOmJTMjJGN4MzI2MjO0AjO2EDI1ITL5ATL1IDMyMCN
+VITE_VIDEO_API_URL=https://api.xmqspco.com/api
+VITE_VIDEO_PLAT_ID=60005
+VITE_VIDEO_CHANNEL_ID=60005001
+VITE_VIDEO_USER_ID=605500911
+VITE_VIDEO_TOKEN=ykDO5UTMwYzNxMCZiRGN0M2YzEjYiF2YjVWMlV2M2M2N0QTO1UGOhhjZ4MSMxkDMwUTNwYzIxMTNllTYkdDMklDOjlzNyUGMkNTY0czM1kDN0QTY4M2I3IjO1EjOzEDIxETLwETL1IDMyMCN

+ 149 - 0
src/data/videoMenus.ts

@@ -0,0 +1,149 @@
+/**
+ * 固定的视频菜单数据
+ * 包含 hash 和 name 字段,用于首页标签栏显示
+ */
+
+export interface VideoMenu {
+  hash: string;
+  name: string;
+}
+
+// 固定的视频菜单数据
+export const videoMenus: VideoMenu[] = [
+  { hash: "F2i7", name: "日本AV" },
+  { hash: "-BZu", name: "COSPLAY" },
+  { hash: "-Bht", name: "猫爪影像" },
+  { hash: "-FPI", name: "AI换脸" },
+  { hash: "3U_i", name: "糖心传媒" },
+  { hash: "4K3f", name: "OL" },
+  { hash: "5f9C", name: "OnlyFans" },
+  { hash: "7Xmb", name: "乌鸦传媒1080P" },
+  { hash: "7bjK", name: "每日一片" },
+  { hash: "9Oi0", name: "卡通动漫" },
+  { hash: "9PaW", name: "av版鱿鱼游戏" },
+  { hash: "9ybW", name: "小飞探花" },
+  { hash: "B3Lo", name: "阿飞鉴黄" },
+  { hash: "C3m9", name: "爱豆1080P" },
+  { hash: "C479", name: "星空传媒1080P" },
+  { hash: "CaoM", name: "草莓视频" },
+  { hash: "CoW1", name: "第一人稱視角(POV)" },
+  { hash: "D2BB", name: "精东传媒" },
+  { hash: "D6gP", name: "薇傲的性趣" },
+  { hash: "Fpt6", name: "美丽诊疗间" },
+  { hash: "G44w", name: "学生制服" },
+  { hash: "Gu50", name: "日本JAV-1080P" },
+  { hash: "HJSQ", name: "海角社区" },
+  { hash: "IVSB", name: "SA国际传媒" },
+  { hash: "IbHK", name: "深夜保健室" },
+  { hash: "Ix8P", name: "SM" },
+  { hash: "JJ16", name: "爱吃西瓜的鉴黄师" },
+  { hash: "JVID", name: "JVID" },
+  { hash: "L6Nf", name: "扣扣传媒" },
+  { hash: "LSsv", name: "叮叮传媒" },
+  { hash: "LV6g", name: "乐播传媒" },
+  { hash: "MDSQ", name: "萌堆色情" },
+  { hash: "MhYf", name: "玩偶姐姐" },
+  { hash: "Mj5y", name: "搭讪大师" },
+  { hash: "Nl1f", name: "乳液,精油" },
+  { hash: "OCr-", name: "果冻传媒" },
+  { hash: "PsTW", name: "PsychopornTW" },
+  { hash: "Q0rA", name: "百名女优的故事" },
+  { hash: "QDOT", name: "起点传媒" },
+  { hash: "SWAG", name: "SWAG" },
+  { hash: "StU2", name: "SA国际传媒1080P" },
+  { hash: "T72i", name: "杏吧阿柒" },
+  { hash: "VWFG", name: "蜜桃传媒" },
+  { hash: "W2uY", name: "男闺蜜KZ" },
+  { hash: "WU8d", name: "马克搭讪" },
+  { hash: "XPUj", name: "麻豆传媒1080P" },
+  { hash: "YcRd", name: "小严探花" },
+  { hash: "Z7cZ", name: "杏吧李寻欢" },
+  { hash: "_2OO", name: "短视频精选推荐" },
+  { hash: "aNmv", name: "吃瓜传媒" },
+  { hash: "acis", name: "乙白沙也加" },
+  { hash: "cD2Z", name: "麻豆系列" },
+  { hash: "c_8D", name: "精东1080P" },
+  { hash: "doll", name: "玩具娃娃" },
+  { hash: "dxth", name: "大熊探花" },
+  { hash: "eLDg", name: "夏目彩春" },
+  { hash: "else", name: "其他国家" },
+  { hash: "erqx", name: "汝工作室" },
+  { hash: "evNR", name: "天美传媒1080P" },
+  { hash: "hF-0", name: "性学小教室" },
+  { hash: "hjoq", name: "喷泉主义" },
+  { hash: "itvI", name: "91制片厂" },
+  { hash: "jw_v", name: "皇家华人" },
+  { hash: "kq2k", name: "3D动画" },
+  { hash: "kqBU", name: "天美传媒" },
+  { hash: "m0it", name: "女孩请上床" },
+  { hash: "mRdD", name: "KTV" },
+  { hash: "mSAs", name: "1G老湿" },
+  { hash: "mZQK", name: "约会诊疗室" },
+  { hash: "mddy", name: "麻豆导演系列" },
+  { hash: "mo69", name: "69" },
+  { hash: "oey0", name: "小鹏奇啪行" },
+  { hash: "okjw", name: "乌鸦传媒" },
+  { hash: "p0K7", name: "晨哥真有料" },
+  { hash: "pKZd", name: "天马传媒" },
+  { hash: "px5V", name: "努力矜持的喵鸣" },
+  { hash: "qFo5", name: "抖音风短剧" },
+  { hash: "thep", name: "写真" },
+  { hash: "uSyh", name: "吹情Show" },
+  { hash: "uvra", name: "无码破解" },
+  { hash: "voDB", name: "群P" },
+  { hash: "w8QE", name: "91制片厂1080P" },
+  { hash: "wfNZ", name: "蜜桃传媒1080P" },
+  { hash: "xjQ9", name: "星空传媒" },
+  { hash: "6Gpo", name: "91大神" },
+  { hash: "yFB4", name: "AIKA" },
+  { hash: "Q7eL", name: "电影" },
+  { hash: "fXbC", name: "每日一片-水果派" },
+  { hash: "J8xp", name: "糖心传媒1080P" },
+  { hash: "HBQZ", name: "欧美女同" },
+  { hash: "5iDs", name: "原神同⼈" },
+  { hash: "XqBi", name: "⼥⾼中⽣" },
+  { hash: "F6lV", name: "乌托邦传媒" },
+  { hash: "O6nL", name: "Luxury Girl" },
+  { hash: "pqE9", name: "不见星空 ( 三月樱花 )" },
+  { hash: "oMAa", name: "扣扣传媒1080P" },
+  { hash: "cBPv", name: "果冻传媒1080P" },
+  { hash: "CpJg", name: " JVID 1080P" },
+  { hash: "jaUr", name: "粉色情人" },
+  { hash: "3IBT", name: "韩国AV" },
+  { hash: "H2Ns", name: "韩国KOR-1080P" },
+  { hash: "oMJC", name: "乌托邦传媒1080P" },
+  { hash: "4E9J", name: "天声可射、撸管必备" },
+  { hash: "My1H", name: "小鲜肉、老少配" },
+  { hash: "IISH", name: "91茄子传媒" },
+  { hash: "5xGf", name: "淫乳女神" },
+  { hash: "4NTs", name: "起点传媒1080P (性视界)" },
+  { hash: "QTnE", name: "红斯灯影像1080P" },
+  { hash: "GvYr", name: "狂点映像传媒 1080P" },
+  { hash: "hd0a", name: "冠希传媒 1080P" },
+  { hash: "jMiH", name: "渡边传媒 1080P" },
+  { hash: "KNbI", name: "千禧传媒 1080P" },
+  { hash: "LKZ9", name: "长治传媒 1080P" },
+  { hash: "61G6", name: "哔哩传媒 1080P" },
+  { hash: "6xdY", name: "麻麻传媒1080p" },
+  { hash: "hgeq", name: "微密圈1080p" },
+  { hash: "Ycb1", name: "国产剧情改编" },
+  { hash: "V1YT", name: "二代CC" },
+  { hash: "ZYVS", name: "巨象传媒 (巨鹿传媒)" },
+  { hash: "rkT2", name: "Apple (苹果)" },
+  { hash: "1GG8", name: "大槻百合香" },
+  { hash: "KLXI", name: "业余素人女孩约炮狩猎" },
+  { hash: "zb3B", name: "真约炮PornGirl" },
+  { hash: "UJcB", name: "真软派、初拍摄" },
+  { hash: "QBNs", name: "奢华TV" },
+  { hash: "tiZJ", name: "捆绑装扮俱乐部" },
+  { hash: "C8vJ", name: "一般男女大调查AV" },
+  { hash: "BJhd", name: "出租女友" },
+  { hash: "FAIR", name: "圣地巡礼×高端hunter" },
+  { hash: "PuWU", name: "在场男性只有我" },
+  { hash: "GapH", name: "昕漾传媒" },
+  { hash: "QcOa", name: "【首拍】在线申请AV→AV体验拍" },
+  { hash: "XhhW", name: "烧酒映画" },
+];
+
+// 默认导出
+export default videoMenus;

+ 10 - 10
src/services/api.ts

@@ -250,16 +250,16 @@ export const getVideoDetail = async (
   return videoRequest(`/media/${user_id}/movie/play`, formData);
 };
 
-// 视频顶部标签 查询接口
-export const getVideoMenu = async (
-  device: string,
-  type: "1" | "2",
-  page_count = 1,
-  page_size = 20
-): Promise<any> => {
-  const formData = createVideoFormData(device, page_count, page_size, { type });
-  return videoRequest(`/media/${plat_id}/menu`, formData);
-};
+// 视频顶部标签 查询接口 - 已废弃,现在使用固定的菜单数据
+// export const getVideoMenu = async (
+//   device: string,
+//   type: "1" | "2",
+//   page_count = 1,
+//   page_size = 20
+// ): Promise<any> => {
+//   const formData = createVideoFormData(device, page_count, page_size, { type });
+//   return videoRequest(`/media/${plat_id}/menu`, formData);
+// };
 
 // 点播集 查询接口
 export const getVodList = async (

+ 28 - 22
src/views/Home.vue

@@ -101,12 +101,12 @@
       </div>
 
       <!-- 展开/收起按钮 -->
-      <div v-if="videoMenus.length > 6" class="mt-2 text-center">
+      <div v-if="allVideoMenus.length > 6" class="mt-2 text-center">
         <button
           @click="toggleTags"
           class="text-xs text-white/60 hover:text-white/80 transition-colors"
         >
-          {{ showAllTags ? "收起" : `展开更多 (${videoMenus.length - 6})` }}
+          {{ showAllTags ? "收起" : `展开更多 (${allVideoMenus.length - 6})` }}
         </button>
       </div>
     </div>
@@ -449,11 +449,8 @@
 <script setup lang="ts">
 import { ref, onMounted } from "vue";
 import { useRouter } from "vue-router";
-import {
-  getVideoMenu,
-  searchVideoByTags,
-  searchVideoByKeyword,
-} from "@/services/api";
+import { searchVideoByTags, searchVideoByKeyword } from "@/services/api";
+import { videoMenus as fixedVideoMenus } from "@/data/videoMenus";
 import VideoProcessor from "@/components/VideoProcessor.vue";
 import { useUserStore } from "@/store/user";
 import { VipLevel } from "@/types/vip";
@@ -476,8 +473,9 @@ const generateMacAddress = (): string => {
   return mac;
 };
 
-// 视频菜单数据
-const videoMenus = ref<any[]>([]);
+// 视频菜单数据 - 使用固定的菜单数据
+const allVideoMenus = fixedVideoMenus;
+const videoMenus = ref<typeof fixedVideoMenus>([]);
 const selectedMenu = ref<string>("");
 const device = generateMacAddress();
 
@@ -601,9 +599,23 @@ const selectSort = async (sort: string) => {
   }
 };
 
+// 随机获取指定数量的菜单项
+const getRandomMenus = (count: number) => {
+  const shuffled = [...allVideoMenus].sort(() => 0.5 - Math.random());
+  return shuffled.slice(0, count);
+};
+
 // 切换标签展开状态
 const toggleTags = () => {
   showAllTags.value = !showAllTags.value;
+
+  if (showAllTags.value) {
+    // 展开时显示所有标签
+    videoMenus.value = allVideoMenus;
+  } else {
+    // 收起时显示随机选择的6个标签
+    videoMenus.value = getRandomMenus(6);
+  }
 };
 
 // 搜索功能
@@ -718,22 +730,16 @@ const loadVideosByTag = async (tagHash: string, page = 1) => {
   }
 };
 
-// 获取视频菜单
-const fetchVideoMenus = async () => {
-  try {
-    const response = await getVideoMenu(device, "1", 1, 20); // 获取长视频菜单
-    if (response.status === 0 && response.data) {
-      videoMenus.value = response.data;
-      // 默认不选择任何菜单,加载所有视频
-      await loadVideosByTag("");
-    }
-  } catch (error) {
-    console.error("获取视频菜单失败:", error);
-  }
+// 初始化视频菜单和加载默认视频
+const initializeVideoMenus = async () => {
+  // 初始化时显示随机选择的6个标签
+  videoMenus.value = getRandomMenus(6);
+  // 默认不选择任何菜单,加载所有视频
+  await loadVideosByTag("");
 };
 
 onMounted(() => {
-  fetchVideoMenus();
+  initializeVideoMenus();
 });
 </script>