Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
{
"name": "vod-hub",
"version": "0.1.0",
"keywords": [
"电影", "视频", "电视剧", "综艺", "动漫"
],
"type": "module",
"scripts": {
"dev": "tsx watch --clear-screen=false src/index.ts",
Expand Down
4 changes: 4 additions & 0 deletions src/types/cms.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ export interface CMSHomeData {
}>;
}

export interface CMSDetailData {
list: CMSDetailList[];
}

export interface CMSDetailList {
group_id: number;
type_id: number;
Expand Down
11 changes: 7 additions & 4 deletions src/utils/cms/category/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ import request from '../request';

import { ERROR_CODE, SUCCESS_CODE, SYSTEM_ERROR_CODE } from '@/constant/code';
import { CATEGORY_MESSAGE } from '@/constant/message';
import { USER_AGENT_CHROME } from '@/constant/userAgent';
import { CategoryVodData } from '@/types';
import { CMSDetailList } from '@/types/cms';
import { CMSDetailData } from '@/types/cms';
import logger from '@/utils/logger';

export const handler = async (ctx: Context, namespace) => {
Expand All @@ -15,15 +16,17 @@ export const handler = async (ctx: Context, namespace) => {
const { id, page, filters } = body;
// filters: { class, area, lang, year }

let res = await request.post<{
list: CMSDetailList[];
}>(`${namespace.url}/api.php/provide/vod`, {
let res = await request.post<CMSDetailData>(`${namespace.url}/api.php/provide/vod`, {
params: {
ac: 'detail',
t: id,
pg: page,
pagesize: 50,
...filters
},
headers: {
'User-Agent': USER_AGENT_CHROME,
Referer: `${namespace.url}/`
Comment on lines +27 to +29
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

建议统一处理请求头配置

与 home/index.ts 文件类似,这里也添加了相同的请求头。建议将这些重复的请求头配置统一管理。

建议创建一个请求拦截器统一处理请求头:

// src/utils/cms/request.ts
import { USER_AGENT_CHROME } from '@/constant/userAgent';

request.interceptors.request.use((config) => {
  config.headers = {
    ...config.headers,
    'User-Agent': USER_AGENT_CHROME,
    'Referer': `${config.baseURL}/`
  };
  return config;
});

}
});

Expand Down
11 changes: 7 additions & 4 deletions src/utils/cms/detail/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ import request from '../request';

import { ERROR_CODE, SUCCESS_CODE, SYSTEM_ERROR_CODE } from '@/constant/code';
import { DETAIL_MESSAGE } from '@/constant/message';
import { USER_AGENT_CHROME } from '@/constant/userAgent';
import { DetailData, VodPlayList } from '@/types';
import { CMSDetailList } from '@/types/cms';
import { CMSDetailData } from '@/types/cms';
import { formatVodContent } from '@/utils/format';
import logger from '@/utils/logger';

Expand All @@ -28,12 +29,14 @@ export const handler = async (ctx: Context, namespace) => {

const { id } = body;

const res = await request.get<{
list: CMSDetailList[];
}>(`${namespace.url}/api.php/provide/vod`, {
const res = await request.get<CMSDetailData>(`${namespace.url}/api.php/provide/vod`, {
params: {
ac: 'detail',
ids: id
},
headers: {
'User-Agent': USER_AGENT_CHROME,
Referer: `${namespace.url}/`
}
});

Expand Down
5 changes: 5 additions & 0 deletions src/utils/cms/home/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import request from '../request';

import { ERROR_CODE, SUCCESS_CODE, SYSTEM_ERROR_CODE } from '@/constant/code';
import { HOME_MESSAGE } from '@/constant/message';
import { USER_AGENT_CHROME } from '@/constant/userAgent';
import { HomeData } from '@/types';
import { CMSHomeData } from '@/types/cms';
import { filterHomeData } from '@/utils/filters';
Expand All @@ -15,6 +16,10 @@ export const handler = async (ctx: Context, namespace) => {
let res = await request.get<CMSHomeData>(`${namespace.url}/api.php/provide/vod`, {
params: {
ac: 'list'
},
headers: {
'User-Agent': USER_AGENT_CHROME,
Referer: `${namespace.url}/`
}
});
const { code } = res;
Expand Down
11 changes: 7 additions & 4 deletions src/utils/cms/homeVod/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,24 @@ import request from '../request';

import { ERROR_CODE, SUCCESS_CODE, SYSTEM_ERROR_CODE } from '@/constant/code';
import { HOME_VOD_MESSAGE } from '@/constant/message';
import { USER_AGENT_CHROME } from '@/constant/userAgent';
import { HomeVodData } from '@/types';
import { CMSDetailList } from '@/types/cms';
import { CMSDetailData } from '@/types/cms';
import { filterHomeVodData } from '@/utils/filters';
import logger from '@/utils/logger';

export const handler = async (ctx: Context, namespace) => {
try {
logger.info(`${HOME_VOD_MESSAGE.INFO} - ${namespace.name}`);
let res = await request.get<{
list: CMSDetailList[];
}>(`${namespace.url}/api.php/provide/vod`, {
let res = await request.get<CMSDetailData>(`${namespace.url}/api.php/provide/vod`, {
params: {
ac: 'detail',
t: '0',
pagesize: 30
},
headers: {
'User-Agent': USER_AGENT_CHROME,
Referer: `${namespace.url}/`
Comment on lines +16 to +24
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

请求配置存在重复代码

与 search/index.ts 文件中的请求配置存在重复,建议将请求头配置抽取到公共模块。

建议创建一个新的工具函数:

// src/utils/request/headers.ts
export const getRequestHeaders = (baseUrl: string) => ({
  'User-Agent': USER_AGENT_CHROME,
  'Referer': `${baseUrl}/`
});

然后在请求中使用:

  const res = await request.get<CMSDetailData>(
    `${namespace.url}/api.php/provide/vod`,
    {
      params: {
        ac: 'detail',
        t: '0',
        pagesize: 30
      },
-     headers: {
-       'User-Agent': USER_AGENT_CHROME,
-       Referer: `${namespace.url}/`
-     }
+     headers: getRequestHeaders(namespace.url)
    }
  );

}
});

Expand Down
11 changes: 7 additions & 4 deletions src/utils/cms/search/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ import request from '../request';

import { ERROR_CODE, SUCCESS_CODE, SYSTEM_ERROR_CODE } from '@/constant/code';
import { SEARCH_MESSAGE } from '@/constant/message';
import { USER_AGENT_CHROME } from '@/constant/userAgent';
import { SearchData } from '@/types';
import { CMSDetailList } from '@/types/cms';
import { CMSDetailData } from '@/types/cms';
import { filterSearchData } from '@/utils/filters';
import logger from '@/utils/logger';

Expand All @@ -16,12 +17,14 @@ export const handler = async (ctx: Context, namespace) => {

const { keyword } = body;

const res = await request.post<{
list: CMSDetailList[];
}>(`${namespace.url}/api.php/provide/vod`, {
const res = await request.post<CMSDetailData>(`${namespace.url}/api.php/provide/vod`, {
params: {
ac: 'detail',
wd: keyword
},
headers: {
'User-Agent': USER_AGENT_CHROME,
Referer: `${namespace.url}/`
}
});

Expand Down