From aed20a0c79dffe7e1745ba36308dbb8cef7634c7 Mon Sep 17 00:00:00 2001 From: Bravepping <1131302745@qq.com> Date: Sat, 19 Apr 2025 15:05:02 +0800 Subject: [PATCH] commit --- index.html | 4 +- package.json | 2 + pnpm-lock.yaml | 201 ++++++++++++ public/favicon.ico | Bin 4286 -> 67646 bytes src/api/nba.js | 94 ++++-- src/components/LiveStream.vue | 402 ++++++++++++++--------- src/components/NBASchedule.vue | 166 +++++++--- src/main.js | 7 +- src/router/index.js | 40 ++- src/stores/game.js | 39 +++ src/views/Admin.vue | 579 +++++++++++++++++++++++++++++++++ src/views/Play.vue | 42 +-- src/views/Test.vue | 161 +++++++++ 13 files changed, 1480 insertions(+), 257 deletions(-) create mode 100644 src/stores/game.js create mode 100644 src/views/Admin.vue create mode 100644 src/views/Test.vue diff --git a/index.html b/index.html index ecb6019..45ad93c 100644 --- a/index.html +++ b/index.html @@ -4,11 +4,11 @@ - Vite App + NBA在线
- + diff --git a/package.json b/package.json index ade19da..862c808 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,9 @@ "element-plus": "^2.9.7", "flv.js": "^1.6.2", "hls.js": "^1.6.2", + "pinia": "^3.0.2", "router": "^2.2.0", + "video.js": "^8.22.0", "vue": "^3.5.13", "vue-router": "4" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6ad7742..c446bd0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,9 +26,15 @@ importers: hls.js: specifier: ^1.6.2 version: 1.6.2 + pinia: + specifier: ^3.0.2 + version: 3.0.2(vue@3.5.13) router: specifier: ^2.2.0 version: 2.2.0 + video.js: + specifier: ^8.22.0 + version: 8.22.0 vue: specifier: ^3.5.13 version: 3.5.13 @@ -182,6 +188,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/runtime@7.27.0': + resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} + engines: {node: '>=6.9.0'} + '@babel/template@7.27.0': resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} engines: {node: '>=6.9.0'} @@ -528,6 +538,19 @@ packages: '@types/web-bluetooth@0.0.16': resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} + '@videojs/http-streaming@3.17.0': + resolution: {integrity: sha512-Ch1P3tvvIEezeZXyK11UfWgp4cWKX4vIhZ30baN/lRinqdbakZ5hiAI3pGjRy3d+q/Epyc8Csz5xMdKNNGYpcw==} + engines: {node: '>=8', npm: '>=5'} + peerDependencies: + video.js: ^8.19.0 + + '@videojs/vhs-utils@4.1.1': + resolution: {integrity: sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==} + engines: {node: '>=8', npm: '>=5'} + + '@videojs/xhr@2.7.0': + resolution: {integrity: sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==} + '@vitejs/plugin-vue@5.2.3': resolution: {integrity: sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -566,6 +589,9 @@ packages: '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + '@vue/devtools-api@7.7.5': + resolution: {integrity: sha512-HYV3tJGARROq5nlVMJh5KKHk7GU8Au3IrrmNNqr978m0edxgpHgYPDoNUGrvEgIbObz09SQezFR3A1EVmB5WZg==} + '@vue/devtools-core@7.7.5': resolution: {integrity: sha512-ElKr0NDor57gVaT+gMQ8kcVP4uFGqHcxuuQndW/rPwh6aHWvEcUL3sxL8cEk+e1Rdt28kS88erpsiIMO6hEENQ==} peerDependencies: @@ -603,6 +629,13 @@ packages: '@vueuse/shared@9.13.0': resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} + '@xmldom/xmldom@0.8.10': + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + + aes-decrypter@4.0.2: + resolution: {integrity: sha512-lc+/9s6iJvuaRe5qDlMTpCFjnwpkeOXp8qP3oiZ5jsj1MRg+SBVUmmICrhxHvc8OELSmc+fEyyxAuppY6hrWzw==} + async-validator@4.2.5: resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} @@ -693,6 +726,9 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + dplayer@1.27.1: resolution: {integrity: sha512-2laBMXs5V1B9zPwJ7eAIw/OBo+Xjvy03i4GHTk3Cg+IWbrq8rKMFO0fFr6ClAYotYOCcFGOvaJDkOZcgKllsCA==} @@ -809,6 +845,9 @@ packages: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -854,6 +893,9 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true + is-function@1.0.2: + resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} + is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -920,6 +962,9 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + m3u8-parser@7.2.0: + resolution: {integrity: sha512-CRatFqpjVtMiMaKXxNvuI3I++vUumIXVVT/JpCpdU/FynV/ceVw1qpPyyBNindL+JlPMSesx+WX1QJaZEJSaMQ==} + magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -938,9 +983,16 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + min-document@2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + mpd-parser@1.3.1: + resolution: {integrity: sha512-1FuyEWI5k2HcmhS1HkKnUAQV7yFPfXPht2DnRRGtoiiAAW+ESTbtEXIDpRkwdU+XyrQuwrIym7UkoPKsZ0SyFw==} + hasBin: true + mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -948,6 +1000,11 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mux.js@7.1.0: + resolution: {integrity: sha512-NTxawK/BBELJrYsZThEulyUMDVlLizKdxyAsMuzoCD1eFj97BVaA8D/CvKsKu6FOLYkFojN5CbM9h++ZTZtknA==} + engines: {node: '>=8', npm: '>=5'} + hasBin: true + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1005,6 +1062,19 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + pinia@3.0.2: + resolution: {integrity: sha512-sH2JK3wNY809JOeiiURUR0wehJ9/gd9qFN2Y828jCbxEzKEmEt0pzCXwqiSTfuRsK9vQsOflSdnbdBOGrhtn+g==} + peerDependencies: + typescript: '>=4.4.4' + vue: ^2.7.0 || ^3.5.11 + peerDependenciesMeta: + typescript: + optional: true + + pkcs7@1.0.4: + resolution: {integrity: sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==} + hasBin: true + postcss@8.5.3: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} @@ -1013,12 +1083,19 @@ packages: resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + promise-polyfill@8.3.0: resolution: {integrity: sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==} proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} @@ -1239,6 +1316,21 @@ packages: varint@6.0.0: resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + video.js@8.22.0: + resolution: {integrity: sha512-xge2kpjsvC0zgFJ1cqt+wTqsi21+huFswlonPFh7qiplypsb4FN/D2Rz6bWdG/S9eQaPHfWHsarmJL/7D3DHoA==} + + videojs-contrib-quality-levels@4.1.0: + resolution: {integrity: sha512-TfrXJJg1Bv4t6TOCMEVMwF/CoS8iENYsWNKip8zfhB5kTcegiFYezEA0eHAJPU64ZC8NQbxQgOwAsYU8VXbOWA==} + engines: {node: '>=16', npm: '>=8'} + peerDependencies: + video.js: ^8 + + videojs-font@4.2.0: + resolution: {integrity: sha512-YPq+wiKoGy2/M7ccjmlvwi58z2xsykkkfNMyIg4xb7EZQQNwB71hcSsB3o75CqQV7/y5lXkXhI/rsGAS7jfEmQ==} + + videojs-vtt.js@0.15.5: + resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==} + vite-hot-client@2.0.4: resolution: {integrity: sha512-W9LOGAyGMrbGArYJN4LBCdOC5+Zwh7dHvOHC0KmGKkJhsOzaKbpo/jEjpPKVHIW0/jBWj8RZG0NUxfgA8BxgAg==} peerDependencies: @@ -1519,6 +1611,10 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/runtime@7.27.0': + dependencies: + regenerator-runtime: 0.14.1 + '@babel/template@7.27.0': dependencies: '@babel/code-frame': 7.26.2 @@ -1739,6 +1835,28 @@ snapshots: '@types/web-bluetooth@0.0.16': {} + '@videojs/http-streaming@3.17.0(video.js@8.22.0)': + dependencies: + '@babel/runtime': 7.27.0 + '@videojs/vhs-utils': 4.1.1 + aes-decrypter: 4.0.2 + global: 4.4.0 + m3u8-parser: 7.2.0 + mpd-parser: 1.3.1 + mux.js: 7.1.0 + video.js: 8.22.0 + + '@videojs/vhs-utils@4.1.1': + dependencies: + '@babel/runtime': 7.27.0 + global: 4.4.0 + + '@videojs/xhr@2.7.0': + dependencies: + '@babel/runtime': 7.27.0 + global: 4.4.0 + is-function: 1.0.2 + '@vitejs/plugin-vue@5.2.3(vite@6.3.0(sass-embedded@1.86.3))(vue@3.5.13)': dependencies: vite: 6.3.0(sass-embedded@1.86.3) @@ -1805,6 +1923,10 @@ snapshots: '@vue/devtools-api@6.6.4': {} + '@vue/devtools-api@7.7.5': + dependencies: + '@vue/devtools-kit': 7.7.5 + '@vue/devtools-core@7.7.5(vite@6.3.0(sass-embedded@1.86.3))(vue@3.5.13)': dependencies: '@vue/devtools-kit': 7.7.5 @@ -1874,6 +1996,15 @@ snapshots: - '@vue/composition-api' - vue + '@xmldom/xmldom@0.8.10': {} + + aes-decrypter@4.0.2: + dependencies: + '@babel/runtime': 7.27.0 + '@videojs/vhs-utils': 4.1.1 + global: 4.4.0 + pkcs7: 1.0.4 + async-validator@4.2.5: {} asynckit@0.4.0: {} @@ -1957,6 +2088,8 @@ snapshots: depd@2.0.0: {} + dom-walk@0.1.2: {} + dplayer@1.27.1: dependencies: axios: 1.2.3 @@ -2122,6 +2255,11 @@ snapshots: '@sec-ant/readable-stream': 0.4.1 is-stream: 4.0.1 + global@4.4.0: + dependencies: + min-document: 2.19.0 + process: 0.11.10 + globals@11.12.0: {} gopd@1.2.0: {} @@ -2150,6 +2288,8 @@ snapshots: is-docker@3.0.0: {} + is-function@1.0.2: {} + is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 @@ -2198,6 +2338,12 @@ snapshots: dependencies: yallist: 3.1.1 + m3u8-parser@7.2.0: + dependencies: + '@babel/runtime': 7.27.0 + '@videojs/vhs-utils': 4.1.1 + global: 4.4.0 + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -2212,12 +2358,28 @@ snapshots: dependencies: mime-db: 1.52.0 + min-document@2.19.0: + dependencies: + dom-walk: 0.1.2 + mitt@3.0.1: {} + mpd-parser@1.3.1: + dependencies: + '@babel/runtime': 7.27.0 + '@videojs/vhs-utils': 4.1.1 + '@xmldom/xmldom': 0.8.10 + global: 4.4.0 + mrmime@2.0.1: {} ms@2.1.3: {} + mux.js@7.1.0: + dependencies: + '@babel/runtime': 7.27.0 + global: 4.4.0 + nanoid@3.3.11: {} nanoid@5.1.5: {} @@ -2256,6 +2418,15 @@ snapshots: picomatch@4.0.2: {} + pinia@3.0.2(vue@3.5.13): + dependencies: + '@vue/devtools-api': 7.7.5 + vue: 3.5.13 + + pkcs7@1.0.4: + dependencies: + '@babel/runtime': 7.27.0 + postcss@8.5.3: dependencies: nanoid: 3.3.11 @@ -2266,10 +2437,14 @@ snapshots: dependencies: parse-ms: 4.0.0 + process@0.11.10: {} + promise-polyfill@8.3.0: {} proxy-from-env@1.1.0: {} + regenerator-runtime@0.14.1: {} + rfdc@1.4.1: {} rollup@4.40.0: @@ -2463,6 +2638,32 @@ snapshots: varint@6.0.0: {} + video.js@8.22.0: + dependencies: + '@babel/runtime': 7.27.0 + '@videojs/http-streaming': 3.17.0(video.js@8.22.0) + '@videojs/vhs-utils': 4.1.1 + '@videojs/xhr': 2.7.0 + aes-decrypter: 4.0.2 + global: 4.4.0 + m3u8-parser: 7.2.0 + mpd-parser: 1.3.1 + mux.js: 7.1.0 + videojs-contrib-quality-levels: 4.1.0(video.js@8.22.0) + videojs-font: 4.2.0 + videojs-vtt.js: 0.15.5 + + videojs-contrib-quality-levels@4.1.0(video.js@8.22.0): + dependencies: + global: 4.4.0 + video.js: 8.22.0 + + videojs-font@4.2.0: {} + + videojs-vtt.js@0.15.5: + dependencies: + global: 4.4.0 + vite-hot-client@2.0.4(vite@6.3.0(sass-embedded@1.86.3)): dependencies: vite: 6.3.0(sass-embedded@1.86.3) diff --git a/public/favicon.ico b/public/favicon.ico index df36fcfb72584e00488330b560ebcf34a41c64c2..0da8d3617269bc6a8dedbe9fae4fa1c2dfa7783d 100644 GIT binary patch literal 67646 zcmeI52Yg)Bnf9+_8*Fee?iFmX0T-~rHkLJ2Bh8E?492FKVhn_CdhZxQCt(RGo9wq6 zNZZ|fDWtH;21p=<-Ay(jgk-bX^i4=YFQx{SyU+hU_l&N_k~JgAwoDlRuCMOQE$6(? z+s}K>4T2i|+pr^SZuk-Dh_8gv}w$LWpmdfUXW%c z6liH_3Fg;jg7g71g2tAEg8F1KsLzOojiOy+qxOwp)`eSM_z7dSbRi$)TUvwk@pMJexLHThu1sKJ81qMjz-4eM&bJf`*3XAel`E4f)ofHJ>yZK#RBY zCzELmnu;yK!pz=5R{hTiM8|qd#*< zaQ0&-1r4c{HR)VyO)6ceP2}^#(@ljD>0EIK$?J~VMoM-^B^!&Q()p&Hgu~9-Mklo; z3Wd><;nAsF?p4%_s zbr9rQgH%!a#B>chNIWgw0)J$5&X^NV3Ra7+>ZD_~*H2z;uTM6r`MIEOX-<3};VrpH z7Q_n;$snIi2J=>n9{TK`ECjpP6@$GNN)O};wb@+b2+7Py>1Qw-Bb_i#`-$47h+fmQ z-%Z=@+Gc6nQ{Tj`)JQLcYvF}kH0U^m=is7PyJ0BXv=Qawnl5?#Hh_< z=mUMpH0DNRQ_Z!-MQek?g5!h616|*tK{1`S4Z9-yQiGjKWedU5Wk&>4gRceksTDze zeY4SOsQ;IczFVBn1`7^BhdX_}|NO;4dd{j~$%+NR0jnnm4Y}spbYp&pWKJ^Jlpm`; zPZs@Vh<-D*2TN!i$8MgE*~+o>*s%BbY^{C#+2!pjZ!hQW74Z!GGDDmCoF6MaI9h(p z4h^|n?b4Np1j|;e2$s%X9n773e2^*1&yi0vw|Qx>e=Z$B+oAkPX0kyd+hCje8f05C zLAEs=q%(zD@iekLLH(ug$PG9_w>YglP2(8C3-K-f+vfh}Uh(_SkDe9B%0Dmu9qsYw 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 diff --git a/src/api/nba.js b/src/api/nba.js index 5a90448..cf4d87d 100644 --- a/src/api/nba.js +++ b/src/api/nba.js @@ -1,7 +1,8 @@ import request from "./request"; import axios from 'axios' + const nbaapi = axios.create({ - baseURL: 'http://localhost:9005/api', + baseURL: 'http://api.new9.me/api', // baseURL: 'http://110.42.255.182:8080', timeout: 2000, }) @@ -11,30 +12,73 @@ const urls = async () => { url: '/urls', method: 'get', }) - .then((response) => { - // console.log(response.data); // 可选:调试用 - return response.data; // 返回数据 - }) - .catch((error) => { - console.error('获取直播URL失败:', error); - throw error; // 可以选择抛出错误或返回默认值,比如 return [] - }); + .then((response) => { + return response.data; + }) + .catch((error) => { + console.error('获取直播URL失败:', error); + throw error; + }); }; -const games = () => { - nbaapi({ - url: '/games', - method: 'get', - }).then((response) => { - console.log(response.data); - }) - } - const schedule =(params) => { - return request({ - url: '/game/schedule', - method: 'get', - params: params, - }); - } +const games = async () => { + return await nbaapi({ + url: '/games', + method: 'get', + }) + .then((response) => { + // console.log(response.data); // 调试用 + return response.data; // 确保返回数据 + }) + .catch((error) => { + console.error('获取赛事数据失败:', error); + throw error; // 或者返回空数组 return [] + }); +}; - export {schedule,games,urls}; \ No newline at end of file +const go = async (pwd) => { + return await nbaapi({ + url: '/go', + method: 'get', + params: { + // 这里可以添加请求参数 + pwd: pwd, + }, + }) + .then((response) => { + // console.log(response.data); // 调试用 + return response.data; // 确保返回数据 + }) + .catch((error) => { + console.error('获取赛事数据失败:', error); + throw error; // 或者返回空数组 return [] + }); +}; + +const schedule = (params) => { + return request({ + url: '/game/schedule', + method: 'get', + params: params, + }); +}; + +const addUrls = async (gameId, urls) => { + return await nbaapi({ + url: '/addUrls', + method: 'post', + data: { + gameId: gameId, + urls: urls + } + }) + .then((response) => { + return response.data; + }) + .catch((error) => { + console.error('添加直播URL失败:', error); + throw error; + }); +}; + +export { schedule, games, urls, go,addUrls }; \ No newline at end of file diff --git a/src/components/LiveStream.vue b/src/components/LiveStream.vue index f5d8fb2..4cbc3f9 100644 --- a/src/components/LiveStream.vue +++ b/src/components/LiveStream.vue @@ -1,196 +1,296 @@ \ No newline at end of file diff --git a/src/components/NBASchedule.vue b/src/components/NBASchedule.vue index f1dbc69..497c86e 100644 --- a/src/components/NBASchedule.vue +++ b/src/components/NBASchedule.vue @@ -2,12 +2,12 @@
@@ -49,7 +49,10 @@
- -
- + + + + \ No newline at end of file diff --git a/src/views/Test.vue b/src/views/Test.vue new file mode 100644 index 0000000..3d155ac --- /dev/null +++ b/src/views/Test.vue @@ -0,0 +1,161 @@ + + + + + \ No newline at end of file