Download frontend/src/api/streamingRoom.ts from Bread-F/Intelligent-Medical-Guidance-Large-Model: direct link, hf CLI and curl.
- Browser
- Download file 6.47 kB
-
https://huggingface.co/spaces/Bread-F/Intelligent-Medical-Guidance-Large-Model/resolve/main/frontend/src/api/streamingRoom.ts
- Command line
-
hf download hf://spaces/Bread-F/Intelligent-Medical-Guidance-Large-Model/frontend/src/api/streamingRoom.ts
-
curl -L -o streamingRoom.ts https://huggingface.co/spaces/Bread-F/Intelligent-Medical-Guidance-Large-Model/resolve/main/frontend/src/api/streamingRoom.ts
6.47 kB
| import { request_handler, type ResultPackage } from '@/api/base' | |
| import type { StreamerInfo, ProductItem } from '@/api/product' | |
| import { header_authorization } from '@/api/user' | |
| interface StreamingRoomProductList { | |
| product_id: number | |
| product_info: ProductItem | |
| start_time: string | |
| sales_doc: string | |
| start_video: string | |
| selected: boolean | |
| } | |
| interface messageItem { | |
| role: string | |
| userId: number | |
| userName: string | |
| avatar: string | |
| message: string | |
| send_time: string | |
| } | |
| interface StreamingRoomStatusItem { | |
| streamerInfo: StreamerInfo | |
| conversation: messageItem[] | |
| currentProductInfo: ProductItem | |
| currentStreamerVideo: string | |
| currentProductIndex: number | |
| start_time: string | |
| currentPoductStartTime: string | |
| finalProduct: boolean | |
| live_status: number | |
| } | |
| interface StreamingRoomInfo { | |
| room_id: number | |
| room_poster: string | |
| name: string | |
| streamer_id: number | |
| background_image: string | |
| prohibited_words_id: number | |
| product_list: StreamingRoomProductList[] | |
| streamer_info: StreamerInfo | |
| status: StreamingRoomStatusItem | |
| } | |
| interface RoomProductData { | |
| currentPage: number | |
| pageSize: number | |
| totalSize: number | |
| product_list: StreamingRoomProductList[] | |
| } | |
| interface RoomProductItem { | |
| name: string | |
| id: number | |
| image_path: string | |
| sales_doc: string | |
| start_video: string | |
| start_time: string | |
| selected: boolean | |
| heighlights: string | |
| selling_price: number | |
| } | |
| interface RoomDetailItem { | |
| currentPage: number | |
| pageSize: number | |
| totalSize: number | |
| product_list: StreamingRoomProductList[] | |
| streamer_info: StreamerInfo | |
| room_id: number | |
| name: string | |
| room_poster: string | |
| streamer_id: number | |
| background_image: string | |
| prohibited_words_id: number | |
| status: StreamingRoomStatusItem | |
| } | |
| // 获取后端主播信息 | |
| const streamerRoomListRequest = () => { | |
| return request_handler<ResultPackage<StreamingRoomInfo[]>>({ | |
| method: 'GET', | |
| url: '/streaming-room/list', | |
| headers: { | |
| Authorization: header_authorization.value | |
| } | |
| }) | |
| } | |
| // 获取特定直播间的详情 | |
| const roomDetailRequest = (roomId_: string, currentPage_: number, pageSize_: number) => { | |
| return request_handler<ResultPackage<RoomDetailItem>>({ | |
| method: 'GET', | |
| url: `/streaming-room/info/${roomId_}`, | |
| params: { currentPage: currentPage_, pageSize: pageSize_ }, | |
| headers: { | |
| Authorization: header_authorization.value | |
| } | |
| }) | |
| } | |
| // 添加商品的时候,获取所有商品,内含选中商品 | |
| const roomPorductAddListRequest = (roomId_: number, currentPage_: number, pageSize_: number) => { | |
| return request_handler<ResultPackage<RoomProductData>>({ | |
| method: 'GET', | |
| url: `/streaming-room/product-edit-list/${roomId_}`, | |
| headers: { | |
| Authorization: header_authorization.value | |
| } | |
| }) | |
| } | |
| // 添加或者更新直播间接口 | |
| const RoomCreadeOrEditRequest = async (params: RoomDetailItem) => { | |
| if (params.room_id === 0) { | |
| // 新建 | |
| return request_handler<ResultPackage<number>>({ | |
| method: 'POST', | |
| url: '/streaming-room/create', | |
| data: params, | |
| headers: { | |
| Authorization: header_authorization.value | |
| } | |
| }) | |
| } else { | |
| // 编辑 | |
| return request_handler<ResultPackage<number>>({ | |
| method: 'PUT', | |
| url: `/streaming-room/edit/${params.room_id}`, | |
| data: params, | |
| headers: { | |
| Authorization: header_authorization.value | |
| } | |
| }) | |
| } | |
| } | |
| // 获取直播间实时信息:主播目前的视频地址,目前讲述的商品信息,聊天信息 | |
| const onAirRoomStartRequest = (roomId_: number) => { | |
| return request_handler<ResultPackage<StreamingRoomStatusItem>>({ | |
| method: 'POST', | |
| url: `/streaming-room/online/${roomId_}`, | |
| headers: { | |
| Authorization: header_authorization.value | |
| } | |
| }) | |
| } | |
| // 获取直播间实时信息:主播目前的视频地址,目前讲述的商品信息,聊天信息 | |
| const onAirRoomInfoRequest = (roomId: number) => { | |
| return request_handler<ResultPackage<StreamingRoomStatusItem>>({ | |
| method: 'GET', | |
| url: `/streaming-room/live-info/${roomId}`, | |
| headers: { | |
| Authorization: header_authorization.value | |
| } | |
| }) | |
| } | |
| // 用户发起对话 | |
| const onAirRoomChatRequest = async (roomId_: number, message_: string) => { | |
| return request_handler<ResultPackage<messageItem>>({ | |
| method: 'PUT', | |
| url: '/streaming-room/chat', | |
| data: { roomId: roomId_, message: message_ }, | |
| headers: { | |
| Authorization: header_authorization.value | |
| } | |
| }) | |
| } | |
| // 下一个商品 | |
| const onAirRoomNextProductRequest = async (roomId_: number) => { | |
| return request_handler<ResultPackage<StreamingRoomStatusItem>>({ | |
| method: 'POST', | |
| url: `/streaming-room/next-product/${roomId_}`, | |
| headers: { | |
| Authorization: header_authorization.value | |
| } | |
| }) | |
| } | |
| // 删除特定直播间信息 | |
| const deleteStreamingRoomByIdRequest = (roomId: number) => { | |
| return request_handler<ResultPackage<string>>({ | |
| method: 'DELETE', | |
| url: `/streaming-room/delete/${roomId}`, | |
| headers: { | |
| Authorization: header_authorization.value | |
| } | |
| }) | |
| } | |
| // 发送浏览器录音音频文件到服务器,用于 ASR | |
| const sendAudioToServer = async (blob: Blob) => { | |
| const formData = new FormData() | |
| formData.append('file', blob, 'recording.webm') | |
| return request_handler<ResultPackage<string>>({ | |
| method: 'POST', | |
| url: '/upload/file', | |
| data: formData, | |
| headers: { | |
| Authorization: header_authorization.value | |
| } | |
| }) | |
| } | |
| // 获取 ASR 结果 | |
| const genAsrResult = async (roomId_: number, asrFileUrl_: string) => { | |
| return request_handler<ResultPackage<string>>({ | |
| method: 'POST', | |
| url: '/streaming-room/asr', | |
| data: { roomId: roomId_, asrFileUrl: asrFileUrl_ }, | |
| headers: { | |
| Authorization: header_authorization.value | |
| } | |
| }) | |
| } | |
| // 下播 | |
| const streamRoomOffline = (roomId_: number) => { | |
| return request_handler<ResultPackage<string>>({ | |
| method: 'PUT', | |
| url: `/streaming-room/offline/${roomId_}`, | |
| headers: { | |
| Authorization: header_authorization.value | |
| } | |
| }) | |
| } | |
| export { | |
| type StreamingRoomInfo, | |
| type RoomProductItem, | |
| type RoomProductData, | |
| type RoomDetailItem, | |
| type StreamingRoomStatusItem, | |
| type StreamingRoomProductList, | |
| streamerRoomListRequest, | |
| roomDetailRequest, | |
| roomPorductAddListRequest, | |
| RoomCreadeOrEditRequest, | |
| onAirRoomInfoRequest, | |
| onAirRoomChatRequest, | |
| onAirRoomNextProductRequest, | |
| deleteStreamingRoomByIdRequest, | |
| sendAudioToServer, | |
| streamRoomOffline, | |
| genAsrResult, | |
| onAirRoomStartRequest | |
| } | |