Profile
Back to NewsBack
GitHub Trending 5 min
Reader Mode
Stardm0/MoonTV: ๐ŸŽฌ MoonTV ๆ˜ฏไธ€ไธชๅผ€็ฎฑๅณ็”จ็š„ใ€่ทจๅนณๅฐ็š„ๅฝฑ่ง†่šๅˆๆ’ญๆ”พๅ™จใ€‚ๆœฌ้กน็›ฎ็ŽฐๅŸบไบŽ2.0.1ๅผ€ๅง‹่‡ช่กŒ็ปดๆŠคๆ›ดๆ–ฐ(ๆ้†’๏ผš cloudflare้ƒจ็ฝฒๆœ‰ๅฐpages็š„้ฃŽ้™ฉ)

Stardm0/MoonTV: ๐ŸŽฌ MoonTV ๆ˜ฏไธ€ไธชๅผ€็ฎฑๅณ็”จ็š„ใ€่ทจๅนณๅฐ็š„ๅฝฑ่ง†่šๅˆๆ’ญๆ”พๅ™จใ€‚ๆœฌ้กน็›ฎ็ŽฐๅŸบไบŽ2.0.1ๅผ€ๅง‹่‡ช่กŒ็ปดๆŠคๆ›ดๆ–ฐ(ๆ้†’๏ผš cloudflare้ƒจ็ฝฒๆœ‰ๅฐpages็š„้ฃŽ้™ฉ)

8 hours ago

MoonTV(Branch)

ๅŽŸ้กน็›ฎๅœฐๅ€https://github.com/MoonTechLab/LunaTV

LibreTV Logo

๐ŸŽฌ MoonTV ๆ˜ฏไธ€ไธชๅผ€็ฎฑๅณ็”จ็š„ใ€่ทจๅนณๅฐ็š„ๅฝฑ่ง†่šๅˆๆ’ญๆ”พๅ™จใ€‚ๅฎƒๅŸบไบŽ Next.js 14 + Tailwind CSS + TypeScript ๆž„ๅปบ๏ผŒๆ”ฏๆŒๅคš่ต„ๆบๆœ็ดขใ€ๅœจ็บฟๆ’ญๆ”พใ€ๆ”ถ่—ๅŒๆญฅใ€ๆ’ญๆ”พ่ฎฐๅฝ•ใ€ๆœฌๅœฐ/ไบ‘็ซฏๅญ˜ๅ‚จ๏ผŒ่ฎฉไฝ ๅฏไปฅ้šๆ—ถ้šๅœฐ็•…ไบซๆตท้‡ๅ…่ดนๅฝฑ่ง†ๅ†…ๅฎนใ€‚


โœจ ๅŠŸ่ƒฝ็‰นๆ€ง

  • ๐Ÿ” ๅคšๆบ่šๅˆๆœ็ดข๏ผšๅฟซ้€Ÿ่ฟ”ๅ›ž็ป“ๆžœใ€‚
  • ๐Ÿ“„ ไธฐๅฏŒ่ฏฆๆƒ…้กต๏ผšๆ”ฏๆŒๅ‰ง้›†ๅˆ—่กจใ€ๆผ”ๅ‘˜ใ€ๅนดไปฝใ€็ฎ€ไป‹็ญ‰ๅฎŒๆ•ดไฟกๆฏๅฑ•็คบใ€‚
  • โ–ถ๏ธ ๆต็•…ๅœจ็บฟๆ’ญๆ”พ๏ผš้›†ๆˆ HLS.js & ArtPlayerใ€‚
  • ๐Ÿ“ฅ ่ง†้ข‘ไธ‹่ฝฝ๏ผšๆ”ฏๆŒ M3U8 ่ง†้ข‘ไธ‹่ฝฝ๏ผŒๅคš็บฟ็จ‹ๅนถๅ‘ๅŠ ้€Ÿ๏ผŒ่พนไธ‹่พนๅญ˜ๅŠŸ่ƒฝ๏ผˆChrome/Edge๏ผ‰ใ€‚
  • โค๏ธ ๆ”ถ่— + ็ปง็ปญ่ง‚็œ‹๏ผšๆ”ฏๆŒ Redis/Upstash ๅญ˜ๅ‚จ๏ผŒๅคš็ซฏๅŒๆญฅ่ฟ›ๅบฆใ€‚
  • ๐Ÿ“บ ๅ‰ง้›†่ฟฝๆ›ด๏ผšไธ€้”ฎ่ฟฝๆ›ดๆญฃๅœจๆ›ดๆ–ฐ็š„ๅ‰ง้›†๏ผŒ่ฟฝๆ›ดๅˆ—่กจๅฑ•็คบๆ€ป้›†ๆ•ฐไธŽๆœช็œ‹้›†ๆ•ฐ๏ผŒๆ”ฏๆŒๆตๅผๆ‰น้‡ๅˆทๆ–ฐ้›†ๆ•ฐๅนถๅฑ•็คบใ€ŒไปŠๆ—ฅๆ–ฐๆ›ดใ€ใ€‚
  • ๐Ÿ“ฑ PWA๏ผš็ฆป็บฟ็ผ“ๅญ˜ใ€ๅฎ‰่ฃ…ๅˆฐๆกŒ้ข/ไธปๅฑ๏ผŒ็งปๅŠจ็ซฏๅŽŸ็”Ÿไฝ“้ชŒใ€‚
  • ๐ŸŒ— ๅ“ๅบ”ๅผๅธƒๅฑ€๏ผšๆกŒ้ขไพง่พนๆ  + ็งปๅŠจๅบ•้ƒจๅฏผ่ˆช๏ผŒ่‡ช้€‚ๅบ”ๅ„็งๅฑๅน•ๅฐบๅฏธใ€‚
  • ๐Ÿš€ ๆž็ฎ€้ƒจ็ฝฒ๏ผšไธ€ๆก Docker ๅ‘ฝไปคๅณๅฏๅฐ†ๅฎŒๆ•ดๆœๅŠก่ท‘่ตทๆฅ๏ผŒๆˆ–ๅ…่ดน้ƒจ็ฝฒๅˆฐ Vercelใ€Netlifyใ€cloudflareใ€‚
  • ๐Ÿ‘ฟ ๆ™บ่ƒฝๅŽปๅนฟๅ‘Š๏ผš่‡ชๅŠจ่ทณ่ฟ‡่ง†้ข‘ไธญ็š„ๅˆ‡็‰‡ๅนฟๅ‘Š๏ผˆๅฎž้ชŒๆ€ง๏ผ‰
  • ๐Ÿ’ฌ ๅผนๅน•ๆ”ฏๆŒ๏ผšไปฅdanmu_apiไธบๅŽ็ซฏ, ้œ€่‡ช่กŒ้ƒจ็ฝฒ
  • ๐Ÿ“… ๆ–ฐ็•ชๆ—ฅๅކ๏ผšๅŸบไบŽ Bangumi API ็š„ๆฏๅ‘จๆ–ฐ็•ชๆ”พ้€ๆ—ถ้—ด่กจ๏ผŒๆ— ๆณ•ๅŠ ่ฝฝๅฏ่‡ช่กŒ้…็ฝฎไปฃ็†bangumi-proxy

ๆณจๆ„๏ผš้ƒจ็ฝฒๅŽ้กน็›ฎไธบ็ฉบๅฃณ้กน็›ฎ๏ผŒๆ— ๅ†…็ฝฎๆ’ญๆ”พๆบ๏ผŒ้œ€่ฆ่‡ช่กŒๆ”ถ้›†๏ผŒ้œ€่ฆๅผนๅน•่ฏท่‡ช่กŒ้ƒจ็ฝฒๅŽ็ซฏ

็‚นๅ‡ปๆŸฅ็œ‹้กน็›ฎๆˆชๅ›พ ้กน็›ฎๆˆชๅ›พ

๐Ÿ—บ ็›ฎๅฝ•

- โœจ ๅŠŸ่ƒฝ็‰นๆ€ง - ๆณจๆ„๏ผš้ƒจ็ฝฒๅŽ้กน็›ฎไธบ็ฉบๅฃณ้กน็›ฎ๏ผŒๆ— ๅ†…็ฝฎๆ’ญๆ”พๆบ๏ผŒ้œ€่ฆ่‡ช่กŒๆ”ถ้›†๏ผŒ้œ€่ฆๅผนๅน•่ฏท่‡ช่กŒ้ƒจ็ฝฒๅŽ็ซฏ - ๐Ÿ—บ ็›ฎๅฝ• - ๆŠ€ๆœฏๆ ˆ - ้ƒจ็ฝฒ - Vercel ้ƒจ็ฝฒ - ๆ™ฎ้€š้ƒจ็ฝฒ๏ผˆlocalstorage๏ผ‰ - Upstash Redis ๆ”ฏๆŒ - Netlify ้ƒจ็ฝฒ - ๆ™ฎ้€š้ƒจ็ฝฒ๏ผˆlocalstorage๏ผ‰ - Upstash Redis ๆ”ฏๆŒ - Cloudflare ้ƒจ็ฝฒ - ๆ™ฎ้€š้ƒจ็ฝฒ๏ผˆlocalstorage๏ผ‰ - D1 ๆ”ฏๆŒ - Docker ้ƒจ็ฝฒ - ็›ดๆŽฅ่ฟ่กŒ๏ผˆๆœ€็ฎ€ๅ•๏ผŒlocalstorage๏ผ‰ - Docker Compose - local storage ๅญ˜ๅ‚จ - Kvrocks ๅญ˜ๅ‚จ๏ผˆๆŽจ่๏ผ‰ - Redis ๅญ˜ๅ‚จ๏ผˆๆœ‰ไธ€ๅฎš็š„ไธขๆ•ฐๆฎ้ฃŽ้™ฉ๏ผ‰ - Upstash ๅญ˜ๅ‚จ - ็Žฏๅขƒๅ˜้‡ - ้…็ฝฎ่ฏดๆ˜Ž - ็ฎก็†ๅ‘˜้…็ฝฎ - AndroidTV ไฝฟ็”จ - TVBox ๅฏนๆŽฅ - ๆœฌๅœฐๅญ˜ๅ‚จ(localstorage)ๆจกๅผ - Selene ไฝฟ็”จ - ๅฎ‰ๅ…จไธŽ้š็งๆ้†’ - ่ฏท่ฎพ็ฝฎๅฏ†็ ไฟๆŠคๅนถๅ…ณ้—ญๅ…ฌ็ฝ‘ๆณจๅ†Œ - ้ƒจ็ฝฒ่ฆๆฑ‚ - ้‡่ฆๅฃฐๆ˜Ž - License - ่‡ด่ฐข - โญ Star ่ถ‹ๅŠฟ

ๆŠ€ๆœฏๆ ˆ

| ๅˆ†็ฑป | ไธป่ฆไพ่ต– | | --------- | ----------------------------------------------------------------------------------------------------- | | ๅ‰็ซฏๆก†ๆžถ | Next.js 14 ยท App Router | | UI & ๆ ทๅผ | Tailwind CSS 3 | | ่ฏญ่จ€ | TypeScript 4 | | ๆ’ญๆ”พๅ™จ | ArtPlayer ยท HLS.js | | ไปฃ็ ่ดจ้‡ | ESLint ยท Prettier ยท Jest | | ้ƒจ็ฝฒ | Docker ยท Vercel ยท pages |

้ƒจ็ฝฒ

ๆœฌ้กน็›ฎๆ”ฏๆŒ Vercelใ€Dockerใ€Netlifyใ€Cloudflare ้ƒจ็ฝฒใ€‚

ๅญ˜ๅ‚จๆ”ฏๆŒ็Ÿฉ้˜ต

| | Docker | Vercel | Netlify | Cloudflare | | :-----------: | :----: | :----: | :-----: | :--------: | | localstorage | โœ… | โœ… | โœ… | โœ… | | ๅŽŸ็”Ÿ redis | โœ… | | | | | Cloudflare D1 | | | | โœ… | | Upstash Redis | โ˜‘๏ธ | โœ… | โœ… | โœ… |

โœ…๏ผš็ปๆต‹่ฏ•ๆ”ฏๆŒ

โ˜‘๏ธ๏ผš็†่ฎบไธŠๆ”ฏๆŒ๏ผŒๆœชๆต‹่ฏ•

Vercel ้ƒจ็ฝฒ

ๆ™ฎ้€š้ƒจ็ฝฒ๏ผˆlocalstorage๏ผ‰

  1. Fork ๆœฌไป“ๅบ“ๅˆฐไฝ ็š„ GitHub ่ดฆๆˆทใ€‚
  2. ็™ป้™† Vercel๏ผŒ็‚นๅ‡ป Add New โ†’ Project๏ผŒ้€‰ๆ‹ฉ Fork ๅŽ็š„ไป“ๅบ“ใ€‚
  3. ่ฎพ็ฝฎ PASSWORD ็Žฏๅขƒๅ˜้‡ใ€‚
  4. ไฟๆŒ้ป˜่ฎค่ฎพ็ฝฎๅฎŒๆˆ้ฆ–ๆฌก้ƒจ็ฝฒใ€‚
  5. ๅฆ‚้œ€่‡ชๅฎšไน‰ config.json๏ผŒ่ฏท็›ดๆŽฅไฟฎๆ”น Fork ๅŽไป“ๅบ“ไธญ่ฏฅๆ–‡ไปถใ€‚
  6. ๆฏๆฌก Push ๅˆฐ main ๅˆ†ๆ”ฏๅฐ†่‡ชๅŠจ่งฆๅ‘้‡ๆ–ฐๆž„ๅปบใ€‚
้ƒจ็ฝฒๅฎŒๆˆๅŽๅณๅฏ้€š่ฟ‡ๅˆ†้…็š„ๅŸŸๅ่ฎฟ้—ฎ๏ผŒไนŸๅฏไปฅ็ป‘ๅฎš่‡ชๅฎšไน‰ๅŸŸๅใ€‚

Upstash Redis ๆ”ฏๆŒ

  1. ๅฎŒๆˆๆ™ฎ้€š้ƒจ็ฝฒๅนถๆˆๅŠŸ่ฎฟ้—ฎใ€‚
  2. ๅœจ upstash ๆณจๅ†Œ่ดฆๅทๅนถๆ–ฐๅปบไธ€ไธช Redis ๅฎžไพ‹๏ผŒๅ็งฐไปปๆ„ใ€‚
  3. ๅคๅˆถๆ–ฐๆ•ฐๆฎๅบ“็š„ HTTPS ENDPOINT ๅ’Œ TOKEN
  4. ่ฟ”ๅ›žไฝ ็š„ Vercel ้กน็›ฎ๏ผŒๆ–ฐๅขž็Žฏๅขƒๅ˜้‡ UPSTASH_URL ๅ’Œ UPSTASH_TOKEN๏ผŒๅ€ผไธบ็ฌฌไบŒๆญฅๅคๅˆถ็š„ endpoint ๅ’Œ token
  5. ่ฎพ็ฝฎ็Žฏๅขƒๅ˜้‡ NEXT_PUBLIC_STORAGE_TYPE๏ผŒๅ€ผไธบ upstash๏ผ›่ฎพ็ฝฎ USERNAME ๅ’Œ PASSWORD ไฝœไธบ็ซ™้•ฟ่ดฆๅท
  6. ้‡่ฏ•้ƒจ็ฝฒ

Netlify ้ƒจ็ฝฒ

ๆ™ฎ้€š้ƒจ็ฝฒ๏ผˆlocalstorage๏ผ‰

  1. Fork ๆœฌไป“ๅบ“ๅˆฐไฝ ็š„ GitHub ่ดฆๆˆทใ€‚
  2. ็™ป้™† Netlify๏ผŒ็‚นๅ‡ป Add New project โ†’ Importing an existing project๏ผŒๆŽˆๆƒ Github๏ผŒ้€‰ๆ‹ฉ Fork ๅŽ็š„ไป“ๅบ“ใ€‚
  3. ่ฎพ็ฝฎ PASSWORD ็Žฏๅขƒๅ˜้‡ใ€‚
  4. ไฟๆŒ้ป˜่ฎค่ฎพ็ฝฎๅฎŒๆˆ้ฆ–ๆฌก้ƒจ็ฝฒใ€‚
  5. ๆฏๆฌก Push ๅˆฐ main ๅˆ†ๆ”ฏๅฐ†่‡ชๅŠจ่งฆๅ‘้‡ๆ–ฐๆž„ๅปบใ€‚
้ƒจ็ฝฒๅฎŒๆˆๅŽๅณๅฏ้€š่ฟ‡ๅˆ†้…็š„ๅŸŸๅ่ฎฟ้—ฎ๏ผŒไนŸๅฏไปฅ็ป‘ๅฎš่‡ชๅฎšไน‰ๅŸŸๅใ€‚

Upstash Redis ๆ”ฏๆŒ

  1. ๅฎŒๆˆๆ™ฎ้€š้ƒจ็ฝฒๅนถๆˆๅŠŸ่ฎฟ้—ฎใ€‚
  2. ๅœจ upstash ๆณจๅ†Œ่ดฆๅทๅนถๆ–ฐๅปบไธ€ไธช Redis ๅฎžไพ‹๏ผŒๅ็งฐไปปๆ„ใ€‚
  3. ๅคๅˆถๆ–ฐๆ•ฐๆฎๅบ“็š„ HTTPS ENDPOINT ๅ’Œ TOKEN
  4. ่ฟ”ๅ›žไฝ ็š„ Netlify ้กน็›ฎ๏ผŒProject Configuration โ†’ Environment variables ๆ–ฐๅขž็Žฏๅขƒๅ˜้‡ UPSTASH_URL ๅ’Œ UPSTASH_TOKEN๏ผŒๅ€ผไธบ็ฌฌไบŒๆญฅๅคๅˆถ็š„ endpoint ๅ’Œ token
  5. ่ฎพ็ฝฎ็Žฏๅขƒๅ˜้‡ NEXT_PUBLIC_STORAGE_TYPE๏ผŒๅ€ผไธบ upstash๏ผ›่ฎพ็ฝฎ USERNAME ๅ’Œ PASSWORD ไฝœไธบ็ซ™้•ฟ่ดฆๅท
  6. ้‡่ฏ•้ƒจ็ฝฒ

Cloudflare ้ƒจ็ฝฒ

Cloudflare Pages ็š„็Žฏๅขƒๅ˜้‡ๅฐฝ้‡่ฎพ็ฝฎไธบๅฏ†้’ฅ่€Œ้žๆ–‡ๆœฌ

ๆ™ฎ้€š้ƒจ็ฝฒ๏ผˆlocalstorage๏ผ‰

  1. Fork ๆœฌไป“ๅบ“ๅˆฐไฝ ็š„ GitHub ่ดฆๆˆทใ€‚
  2. ็™ป้™† Cloudflare๏ผŒ็‚นๅ‡ป ่ฎก็ฎ—๏ผˆWorkers๏ผ‰-> Workers ๅ’Œ Pages๏ผŒ็‚นๅ‡ปๅˆ›ๅปบ
  3. ้€‰ๆ‹ฉ Pages๏ผŒๅฏผๅ…ฅ็Žฐๆœ‰็š„ Git ๅญ˜ๅ‚จๅบ“๏ผŒ้€‰ๆ‹ฉ Fork ๅŽ็š„ไป“ๅบ“
  4. ๆž„ๅปบๅ‘ฝไปคๅกซๅ†™ pnpm run pages:build๏ผŒ้ข„่ฎพๆก†ๆžถไธบๆ— ๏ผŒๆž„ๅปบ่พ“ๅ‡บ็›ฎๅฝ•ไธบ .vercel/output/static
  5. ไฟๆŒ้ป˜่ฎค่ฎพ็ฝฎๅฎŒๆˆ้ฆ–ๆฌก้ƒจ็ฝฒใ€‚่ฟ›ๅ…ฅ่ฎพ็ฝฎ๏ผŒๅฐ†ๅ…ผๅฎนๆ€งๆ ‡ๅฟ—่ฎพ็ฝฎไธบ nodejs_compat๏ผŒๆ— ้œ€้€‰ๆ‹ฉ๏ผŒ็›ดๆŽฅ็ฒ˜่ดด
  6. ้ฆ–ๆฌก้ƒจ็ฝฒๅฎŒๆˆๅŽ่ฟ›ๅ…ฅ่ฎพ็ฝฎ๏ผŒๆ–ฐๅขž PASSWORD ๅฏ†้’ฅ๏ผˆๅ˜้‡ๅ’Œๆœบๅฏ†ไธ‹๏ผ‰๏ผŒ่€ŒๅŽ้‡่ฏ•้ƒจ็ฝฒใ€‚
  7. ๅฆ‚้œ€่‡ชๅฎšไน‰ config.json๏ผŒ่ฏท็›ดๆŽฅไฟฎๆ”น Fork ๅŽไป“ๅบ“ไธญ่ฏฅๆ–‡ไปถใ€‚
  8. ๆฏๆฌก Push ๅˆฐ main ๅˆ†ๆ”ฏๅฐ†่‡ชๅŠจ่งฆๅ‘้‡ๆ–ฐๆž„ๅปบใ€‚

D1 ๆ”ฏๆŒ

  1. ๅฎŒๆˆๆ™ฎ้€š้ƒจ็ฝฒๅนถๆˆๅŠŸ่ฎฟ้—ฎ
  2. ็‚นๅ‡ป ๅญ˜ๅ‚จๅ’Œๆ•ฐๆฎๅบ“ -> D1 SQL ๆ•ฐๆฎๅบ“๏ผŒๅˆ›ๅปบไธ€ไธชๆ–ฐ็š„ๆ•ฐๆฎๅบ“๏ผŒๅ็งฐ้šๆ„
  3. ่ฟ›ๅ…ฅๅˆšๅˆ›ๅปบ็š„ๆ•ฐๆฎๅบ“๏ผŒ็‚นๅ‡ปๅทฆไธŠ่ง’็š„ Explore Data๏ผŒๅฐ†d1-init ไธญ็š„ๅ†…ๅฎน็ฒ˜่ดดๅˆฐ Query ็ช—ๅฃๅŽ็‚นๅ‡ป Run All๏ผŒ็ญ‰ๅพ…่ฟ่กŒๅฎŒๆˆ
  4. ่ฟ”ๅ›žไฝ ็š„ pages ้กน็›ฎ๏ผŒ่ฟ›ๅ…ฅ ่ฎพ็ฝฎ -> ็ป‘ๅฎš๏ผŒๆทปๅŠ ็ป‘ๅฎš D1 ๆ•ฐๆฎๅบ“๏ผŒ้€‰ๆ‹ฉไฝ ๅˆšๅˆ›ๅปบ็š„ๆ•ฐๆฎๅบ“๏ผŒๅ˜้‡ๅ็งฐๅกซ DB
  5. ่ฎพ็ฝฎ็Žฏๅขƒๅ˜้‡ NEXT_PUBLIC_STORAGE_TYPE๏ผŒๅ€ผไธบ d1๏ผ›่ฎพ็ฝฎ USERNAME ๅ’Œ PASSWORD ไฝœไธบ็ซ™้•ฟ่ดฆๅท
  6. ้‡่ฏ•้ƒจ็ฝฒ

Docker ้ƒจ็ฝฒ

็›ดๆŽฅ่ฟ่กŒ๏ผˆๆœ€็ฎ€ๅ•๏ผŒlocalstorage๏ผ‰

# ๆ‹‰ๅ–้ข„ๆž„ๅปบ้•œๅƒ

ๆˆ–ๆ‹‰ๅ–ๆœ€ๆ–ฐ็‰ˆๆœฌ

docker pull ghcr.io/stardm0/moontv:latest

่ฟ่กŒๅฎนๅ™จ

-d: ๅŽๅฐ่ฟ่กŒ -p: ๆ˜ ๅฐ„็ซฏๅฃ 3000 -> 3000

docker run -d --name moontv -p 3000:3000 --env PASSWORD=your_password ghcr.io/stardm0/moontv:latest

Docker Compose

##### local storage ๅญ˜ๅ‚จ

services:
  startv-core:
    image: ghcr.io/stardm0/moontv:latest
    container_name: startv-core
    restart: on-failure
    ports:
      - '3000:3000'
    environment:
      - PASSWORD=password

##### Kvrocks ๅญ˜ๅ‚จ๏ผˆๆŽจ่๏ผ‰

services:
  moontv-core:
    image: ghcr.io/stardm0/moontv:latest
    container_name: moontv-core
    restart: on-failure
    ports:
      - '3000:3000'
    environment:
      - USERNAME=admin
      - PASSWORD=admin_password
      - NEXT_PUBLIC_STORAGE_TYPE=kvrocks
      - KVROCKS_URL=redis://moontv-kvrocks:6666
    networks:
      - moontv-network
    depends_on:
      - moontv-kvrocks
  moontv-kvrocks:
    image: apache/kvrocks
    container_name: moontv-kvrocks
    restart: unless-stopped
    volumes:
      - kvrocks-data:/var/lib/kvrocks
    networks:
      - moontv-network
networks:
  moontv-network:
    driver: bridge
volumes:
  kvrocks-data:

##### Redis ๅญ˜ๅ‚จ๏ผˆๆœ‰ไธ€ๅฎš็š„ไธขๆ•ฐๆฎ้ฃŽ้™ฉ๏ผ‰

services:
  moontv-core:
    image: ghcr.io/stardm0/moontv:latest
    container_name: moontv-core
    restart: on-failure
    ports:
      - '3000:3000'
    environment:
      - USERNAME=admin
      - PASSWORD=admin_password
      - NEXT_PUBLIC_STORAGE_TYPE=redis
      - REDIS_URL=redis://moontv-redis:6379
    networks:
      - moontv-network
    depends_on:
      - moontv-redis
  moontv-redis:
    image: redis:alpine
    container_name: moontv-redis
    restart: unless-stopped
    networks:
      - moontv-network
    # ่ฏทๅผ€ๅฏๆŒไน…ๅŒ–๏ผŒๅฆๅˆ™ๅ‡็บง/้‡ๅฏๅŽๆ•ฐๆฎไธขๅคฑ
    volumes:
      - ./data:/data
networks:
  moontv-network:
    driver: bridge

##### Upstash ๅญ˜ๅ‚จ

services:
  startv-core:
    image: ghcr.io/stardm0/moontv:latest
    container_name: startv-core
    restart: on-failure
    ports:
      - '3000:3000'
    environment:
      - USERNAME=admin
      - PASSWORD=admin_password
      - NEXT_PUBLIC_STORAGE_TYPE=upstash
      - UPSTASH_URL= https ๅผ€ๅคด็š„ HTTPS ENDPOINT
      - UPSTASH_TOKEN= TOKEN

็Žฏๅขƒๅ˜้‡

| ๅ˜้‡ | ่ฏดๆ˜Ž | ๅฏ้€‰ๅ€ผ | ้ป˜่ฎคๅ€ผ | | ----------------------------------- | -------------------------------------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | USERNAME | ้ž localstorage ้ƒจ็ฝฒๆ—ถ็š„็ฎก็†ๅ‘˜่ดฆๅท | ไปปๆ„ๅญ—็ฌฆไธฒ | ๏ผˆ็ฉบ๏ผ‰ | | PASSWORD | ้ž localstorage ้ƒจ็ฝฒๆ—ถไธบ็ฎก็†ๅ‘˜ๅฏ†็  | ไปปๆ„ๅญ—็ฌฆไธฒ | ๏ผˆ็ฉบ๏ผ‰ | | NEXT_PUBLIC_SITE_NAME | ็ซ™็‚นๅ็งฐ | ไปปๆ„ๅญ—็ฌฆไธฒ | MoonTV | | ANNOUNCEMENT | ็ซ™็‚นๅ…ฌๅ‘Š | ไปปๆ„ๅญ—็ฌฆไธฒ | ๆœฌ็ฝ‘็ซ™ไป…ๆไพ›ๅฝฑ่ง†ไฟกๆฏๆœ็ดขๆœๅŠก๏ผŒๆ‰€ๆœ‰ๅ†…ๅฎนๅ‡ๆฅ่‡ช็ฌฌไธ‰ๆ–น็ฝ‘็ซ™ใ€‚ๆœฌ็ซ™ไธๅญ˜ๅ‚จไปปไฝ•่ง†้ข‘่ต„ๆบ๏ผŒไธๅฏนไปปไฝ•ๅ†…ๅฎน็š„ๅ‡†็กฎๆ€งใ€ๅˆๆณ•ๆ€งใ€ๅฎŒๆ•ดๆ€ง่ดŸ่ดฃใ€‚ | | NEXT_PUBLIC_STORAGE_TYPE | ๆ’ญๆ”พ่ฎฐๅฝ•/ๆ”ถ่—็š„ๅญ˜ๅ‚จๆ–นๅผ | localstorageใ€redisใ€d1ใ€upstash | localstorage | | REDIS_URL | redis ่ฟžๆŽฅ url | ่ฟžๆŽฅ url | ็ฉบ | | UPSTASH_URL | upstash redis ่ฟžๆŽฅ url | ่ฟžๆŽฅ url | ็ฉบ | | UPSTASH_TOKEN | upstash redis ่ฟžๆŽฅ token | ่ฟžๆŽฅ token | ็ฉบ | | NEXT_PUBLIC_ENABLE_REGISTER | ๆ˜ฏๅฆๅผ€ๆ”พๆณจๅ†Œ๏ผŒไป…ๅœจ้ž localstorage ้ƒจ็ฝฒๆ—ถ็”Ÿๆ•ˆ | true / false | false | | NEXT_PUBLIC_SEARCH_MAX_PAGE | ๆœ็ดขๆŽฅๅฃๅฏๆ‹‰ๅ–็š„ๆœ€ๅคง้กตๆ•ฐ | 1-50 | 5 | | NEXT_PUBLIC_DOUBAN_PROXY_TYPE | ่ฑ†็“ฃๆ•ฐๆฎๆบ่ฏทๆฑ‚ๆ–นๅผ | ่งไธ‹ๆ–น | direct | | NEXT_PUBLIC_DOUBAN_PROXY | ่‡ชๅฎšไน‰่ฑ†็“ฃๆ•ฐๆฎไปฃ็† URL | url prefix | (็ฉบ) | | NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE | ่ฑ†็“ฃๅ›พ็‰‡ไปฃ็†็ฑปๅž‹ | ่งไธ‹ๆ–น | direct | | NEXT_PUBLIC_DOUBAN_IMAGE_PROXY | ่‡ชๅฎšไน‰่ฑ†็“ฃๅ›พ็‰‡ไปฃ็† URL | url prefix | (็ฉบ) | | NEXT_PUBLIC_BANGUMI_PROXY | ่‡ชๅฎšไน‰ Bangumi ๆ•ฐๆฎไปฃ็† URL๏ผŒ็”ฑๅŽ็ซฏไปฃ็†่ฏทๆฑ‚ | url prefix | (็ฉบ๏ผŒ็•™็ฉบไฝฟ็”จๅฎ˜ๆ–น api.bgm.tv) | | NEXT_PUBLIC_BANGUMI_IMAGE_PROXY | ่‡ชๅฎšไน‰ Bangumi ๅ›พ็‰‡ไปฃ็†ๅŸŸๅ๏ผŒ็”จไบŽๆ›ฟๆข lain.bgm.tv | url prefix | (็ฉบ๏ผŒ็•™็ฉบไธๆ›ฟๆข) | | NEXT_PUBLIC_DISABLE_YELLOW_FILTER | ๅ…ณ้—ญ่‰ฒๆƒ…ๅ†…ๅฎน่ฟ‡ๆปค | true/false | false | | NEXT_PUBLIC_DANMU_API_BASE_URL | ๅผนๅน•ๆŽฅๅฃๅœฐๅ€ | ๆŽฅๅฃๅœฐๅ€ | (็ฉบ) | | NEXT_PUBLIC_PLAYBACK_SAVE_INTERVAL | ๆ’ญๆ”พ่ฟ›ๅบฆ่‡ชๅŠจไฟๅญ˜้—ด้š”๏ผˆ็ง’๏ผ‰ | ๆญฃๆ•ดๆ•ฐ๏ผˆๅปบ่ฎฎ 5-60๏ผŒUpstash ๅปบ่ฎฎ โ‰ฅ20๏ผ‰ | ๆŒ‰ๅญ˜ๅ‚จ็ฑปๅž‹๏ผšUpstash 20 / ๅ…ถไฝ™ 5 |

NEXT_PUBLIC_DOUBAN_PROXY_TYPE ้€‰้กน่งฃ้‡Š๏ผš

  • direct: ็”ฑๆœๅŠกๅ™จ็›ดๆŽฅ่ฏทๆฑ‚่ฑ†็“ฃๆบ็ซ™
  • cors-proxy-zwei: ๆต่งˆๅ™จๅ‘ cors proxy ่ฏทๆฑ‚่ฑ†็“ฃๆ•ฐๆฎ๏ผŒ่ฏฅ cors proxy ็”ฑ Zwei ๆญๅปบ
  • cmliussss-cdn-tencent: ๆต่งˆๅ™จๅ‘่ฑ†็“ฃ CDN ่ฏทๆฑ‚ๆ•ฐๆฎ๏ผŒ่ฏฅ CDN ็”ฑ CMLiussss ๆญๅปบ๏ผŒๅนถ็”ฑ่…พ่ฎฏไบ‘ cdn ๆไพ›ๅŠ ้€Ÿ
  • cmliussss-cdn-ali: ๆต่งˆๅ™จๅ‘่ฑ†็“ฃ CDN ่ฏทๆฑ‚ๆ•ฐๆฎ๏ผŒ่ฏฅ CDN ็”ฑ CMLiussss ๆญๅปบ๏ผŒๅนถ็”ฑ้˜ฟ้‡Œไบ‘ cdn ๆไพ›ๅŠ ้€Ÿ
  • custom: ็”จๆˆท่‡ชๅฎšไน‰ proxy๏ผŒ็”ฑ NEXT_PUBLIC_DOUBAN_PROXY ๅฎšไน‰
NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE ้€‰้กน่งฃ้‡Š๏ผš
  • direct๏ผš็”ฑๆต่งˆๅ™จ็›ดๆŽฅ่ฏทๆฑ‚่ฑ†็“ฃๅˆ†้…็š„้ป˜่ฎคๅ›พ็‰‡ๅŸŸๅ
  • server๏ผš็”ฑๆœๅŠกๅ™จไปฃ็†่ฏทๆฑ‚่ฑ†็“ฃๅˆ†้…็š„้ป˜่ฎคๅ›พ็‰‡ๅŸŸๅ
  • img3๏ผš็”ฑๆต่งˆๅ™จ่ฏทๆฑ‚่ฑ†็“ฃๅฎ˜ๆ–น็š„็ฒพๅ“ cdn๏ผˆ้˜ฟ้‡Œไบ‘๏ผ‰
  • cmliussss-cdn-tencent๏ผš็”ฑๆต่งˆๅ™จ่ฏทๆฑ‚่ฑ†็“ฃ CDN๏ผŒ่ฏฅ CDN ็”ฑ CMLiussss ๆญๅปบ๏ผŒๅนถ็”ฑ่…พ่ฎฏไบ‘ cdn ๆไพ›ๅŠ ้€Ÿ
  • cmliussss-cdn-ali๏ผš็”ฑๆต่งˆๅ™จ่ฏทๆฑ‚่ฑ†็“ฃ CDN๏ผŒ่ฏฅ CDN ็”ฑ CMLiussss ๆญๅปบ๏ผŒๅนถ็”ฑ้˜ฟ้‡Œไบ‘ cdn ๆไพ›ๅŠ ้€Ÿ
  • custom: ็”จๆˆท่‡ชๅฎšไน‰ proxy๏ผŒ็”ฑ NEXT_PUBLIC_DOUBAN_IMAGE_PROXY ๅฎšไน‰

้…็ฝฎ่ฏดๆ˜Ž

ๅฆ‚ๆžœไธบ localstorage ๆจกๅผๆ‰€ๆœ‰ๅฏ่‡ชๅฎšไน‰้กน้›†ไธญๅœจๆ น็›ฎๅฝ•็š„ config.json ไธญ(localstorage ๆจกๅผ) ้ž localstorage ๅฏๅœจ้ƒจ็ฝฒๅฅฝ็š„็ฝ‘้กตไธญ็›ดๆŽฅ้…็ฝฎ

{
  "cache_time": 7200,
  "api_site": {
    "dyttzy": {
      "api": "http://caiji.dyttzyapi.com/api.php/provide/vod",
      "name": "็”ตๅฝฑๅคฉๅ ‚่ต„ๆบ",
      "detail": "http://caiji.dyttzyapi.com"
    }
    // ...ๆ›ดๅคš็ซ™็‚น
  },
  "custom_category": [
    {
      "name": "ๅŽ่ฏญ",
      "type": "movie",
      "query": "ๅŽ่ฏญ"
    }
  ]
}
  • cache_time๏ผšๆŽฅๅฃ็ผ“ๅญ˜ๆ—ถ้—ด๏ผˆ็ง’๏ผ‰ใ€‚
  • api_site๏ผšไฝ ๅฏไปฅๅขžๅˆ ๆˆ–ๆ›ฟๆขไปปไฝ•่ต„ๆบ็ซ™๏ผŒๅญ—ๆฎต่ฏดๆ˜Ž๏ผš
- key๏ผšๅ”ฏไธ€ๆ ‡่ฏ†๏ผŒไฟๆŒๅฐๅ†™ๅญ—ๆฏ/ๆ•ฐๅญ—ใ€‚ - api๏ผš่ต„ๆบ็ซ™ๆไพ›็š„ vod JSON API ๆ นๅœฐๅ€ใ€‚ - name๏ผšๅœจไบบๆœบ็•Œ้ขไธญๅฑ•็คบ็š„ๅ็งฐใ€‚ - detail๏ผš๏ผˆๅฏ้€‰๏ผ‰้ƒจๅˆ†ๆ— ๆณ•้€š่ฟ‡ API ่Žทๅ–ๅ‰ง้›†่ฏฆๆƒ…็š„็ซ™็‚น๏ผŒ้œ€่ฆๆไพ›็ฝ‘้กต่ฏฆๆƒ…ๆ น URL๏ผŒ็”จไบŽ็ˆฌๅ–ใ€‚
  • custom_category๏ผš่‡ชๅฎšไน‰ๅˆ†็ฑป้…็ฝฎ๏ผŒ็”จไบŽๅœจๅฏผ่ˆชไธญๆทปๅŠ ไธชๆ€งๅŒ–็š„ๅฝฑ่ง†ๅˆ†็ฑปใ€‚ไปฅ type + query ไฝœไธบๅ”ฏไธ€ๆ ‡่ฏ†ใ€‚ๆ”ฏๆŒไปฅไธ‹ๅญ—ๆฎต๏ผš
- name๏ผšๅˆ†็ฑปๆ˜พ็คบๅ็งฐ๏ผˆๅฏ้€‰๏ผŒๅฆ‚ไธๆไพ›ๅˆ™ไฝฟ็”จ query ไฝœไธบๆ˜พ็คบๅ๏ผ‰ - type๏ผšๅˆ†็ฑป็ฑปๅž‹๏ผŒๆ”ฏๆŒ movie๏ผˆ็”ตๅฝฑ๏ผ‰ๆˆ– tv๏ผˆ็”ต่ง†ๅ‰ง๏ผ‰ - query๏ผšๆœ็ดขๅ…ณ้”ฎ่ฏ๏ผŒ็”จไบŽๅœจ่ฑ†็“ฃ API ไธญๆœ็ดข็›ธๅ…ณๅ†…ๅฎน

custom_category ๆ”ฏๆŒ็š„่‡ชๅฎšไน‰ๅˆ†็ฑปๅทฒ็Ÿฅๅฆ‚ไธ‹๏ผš

  • movie๏ผš็ƒญ้—จใ€ๆœ€ๆ–ฐใ€็ปๅ…ธใ€่ฑ†็“ฃ้ซ˜ๅˆ†ใ€ๅ†ท้—จไฝณ็‰‡ใ€ๅŽ่ฏญใ€ๆฌง็พŽใ€้Ÿฉๅ›ฝใ€ๆ—ฅๆœฌใ€ๅŠจไฝœใ€ๅ–œๅ‰งใ€็ˆฑๆƒ…ใ€็ง‘ๅนปใ€ๆ‚ฌ็–‘ใ€ๆๆ€–ใ€ๆฒปๆ„ˆ
  • tv๏ผš็ƒญ้—จใ€็พŽๅ‰งใ€่‹ฑๅ‰งใ€้Ÿฉๅ‰งใ€ๆ—ฅๅ‰งใ€ๅ›ฝไบงๅ‰งใ€ๆธฏๅ‰งใ€ๆ—ฅๆœฌๅŠจ็”ปใ€็ปผ่‰บใ€็บชๅฝ•็‰‡
ไนŸๅฏ่พ“ๅ…ฅๅฆ‚ "ๅ“ˆๅˆฉๆณข็‰น" ๆ•ˆๆžœ็ญ‰ๅŒไบŽ่ฑ†็“ฃๆœ็ดข

MoonTV ๆ”ฏๆŒๆ ‡ๅ‡†็š„่‹นๆžœ CMS V10 API ๆ ผๅผใ€‚

ไฟฎๆ”นๅŽ ๆ— ้œ€้‡ๆ–ฐๆž„ๅปบ๏ผŒๆœๅŠกไผšๅœจๅฏๅŠจๆ—ถ่ฏปๅ–ไธ€ๆฌกใ€‚

็ฎก็†ๅ‘˜้…็ฝฎ

่ฏฅ็‰นๆ€ง็›ฎๅ‰ไป…ๆ”ฏๆŒ้€š่ฟ‡้ž localstorage ๅญ˜ๅ‚จ็š„้ƒจ็ฝฒๆ–นๅผไฝฟ็”จ

ๆ”ฏๆŒๅœจ่ฟ่กŒๆ—ถๅŠจๆ€ๅ˜ๆ›ดๆœๅŠก้…็ฝฎ

่ฎพ็ฝฎ็Žฏๅขƒๅ˜้‡ USERNAME ๅ’Œ PASSWORD ๅณไธบ็ซ™้•ฟ็”จๆˆท๏ผŒ็ซ™้•ฟๅฏ่ฎพ็ฝฎ็”จๆˆทไธบ็ฎก็†ๅ‘˜

็ซ™้•ฟๆˆ–็ฎก็†ๅ‘˜่ฎฟ้—ฎ /admin ๅณๅฏ่ฟ›่กŒ็ฎก็†ๅ‘˜้…็ฝฎ

AndroidTV ไฝฟ็”จ

็›ฎๅ‰่ฏฅ้กน็›ฎๅฏไปฅ้…ๅˆ OrionTV ๅœจ Android TV ไธŠไฝฟ็”จ๏ผŒๅฏไปฅ็›ดๆŽฅไฝœไธบ OrionTV ๅŽ็ซฏ

TVBox ๅฏนๆŽฅ

  • ๅœจ้ฆ–้กตๅณไธŠ่ง’็š„โ€œ่ฎพ็ฝฎโ€ไธญ๏ผŒๅผ€ๅฏโ€œๅฏ็”จ TVBox ๆŽฅๅฃโ€ใ€‚
  • ๅฏ้€‰ๆ‹ฉโ€œ้šๆœบโ€็”Ÿๆˆ่ฎฟ้—ฎๅฏ†็ ๏ผŒๆˆ–่‡ชๅฎšไน‰ๅŽ็‚นๅ‡ปโ€œไฟๅญ˜โ€ใ€‚
  • ็ณป็ปŸไผš็”Ÿๆˆๅฏ็›ดๆŽฅๅคๅˆถ็š„ๆŽฅๅฃๅœฐๅ€๏ผŒๅฝขๅผไธบ๏ผšhttps://ไฝ ็š„ๅŸŸๅ/api/tvbox/config?pwd=ไฝ ็š„ๅฃไปคใ€‚
  • ๅฐ†่ฏฅๅœฐๅ€ๅกซๅ…ฅ TVBox ็š„่ฎข้˜…/้…็ฝฎๆŽฅๅฃๅณๅฏไฝฟ็”จใ€‚
  • ๅฆ‚้œ€ๅ…ณ้—ญๅฏนๆŽฅ๏ผŒๅ…ณ้—ญๅผ€ๅ…ณๅณๅฏใ€‚

ๆœฌๅœฐๅญ˜ๅ‚จ(localstorage)ๆจกๅผ

  • ๅผ€ๅ…ณ็”ฑ็Žฏๅขƒๅ˜้‡ๆŽงๅˆถ๏ผšTVBOX_ENABLED=true|false๏ผˆ้ป˜่ฎค true๏ผŒๆœช่ฎพ็ฝฎๅณๅผ€ๅฏ๏ผ‰
  • ๆŽฅๅฃ่ฎฟ้—ฎๅฃไปคไฝฟ็”จ็™ปๅฝ•ๅฏ†็ ๏ผšPASSWORD
  • ็”Ÿๆˆ็š„่ฎข้˜…ๅœฐๅ€็คบไพ‹๏ผšhttps://ไฝ ็š„ๅŸŸๅ/api/tvbox/config?pwd=$PASSWORD
  • ่ฎพ็ฝฎ้ขๆฟไธญ็š„ๅผ€ๅ…ณไธŽไฟๅญ˜ๅœจๆœฌๅœฐๆจกๅผไธ‹ไป…็”จไบŽๅฑ•็คบ๏ผˆ่ขซ็ฆ็”จ๏ผ‰๏ผŒ่ฏท้€š่ฟ‡็Žฏๅขƒๅ˜้‡ๆŽงๅˆถใ€‚

Selene ไฝฟ็”จ

่ฏฅ้กน็›ฎๅทฒๅ…ผๅฎน Selene ๅœจ็งปๅŠจ็ซฏไธŠไฝฟ็”จ๏ผŒๅฏไปฅ็›ดๆŽฅไฝœไธบ Selene ๅŽ็ซฏ(ๆœฌๅœฐๅญ˜ๅ‚จไธๆ”ฏๆŒ)

ๅฎ‰ๅ…จไธŽ้š็งๆ้†’

่ฏท่ฎพ็ฝฎๅฏ†็ ไฟๆŠคๅนถๅ…ณ้—ญๅ…ฌ็ฝ‘ๆณจๅ†Œ

ไธบไบ†ๆ‚จ็š„ๅฎ‰ๅ…จๅ’Œ้ฟๅ…ๆฝœๅœจ็š„ๆณ•ๅพ‹้ฃŽ้™ฉ๏ผŒๆˆ‘ไปฌ่ฆๆฑ‚ๅœจ้ƒจ็ฝฒๆ—ถ่ฎพ็ฝฎๅฏ†็ ไฟๆŠคๅนถๅผบ็ƒˆๅปบ่ฎฎๅ…ณ้—ญๅ…ฌ็ฝ‘ๆณจๅ†Œ๏ผš

  • ้ฟๅ…ๅ…ฌๅผ€่ฎฟ้—ฎ๏ผšไธ่ฎพ็ฝฎๅฏ†็ ็š„ๅฎžไพ‹ไปปไฝ•ไบบ้ƒฝๅฏไปฅ่ฎฟ้—ฎ๏ผŒๅฏ่ƒฝ่ขซๆถๆ„ๅˆฉ็”จ
  • ้˜ฒ่Œƒ็‰ˆๆƒ้ฃŽ้™ฉ๏ผšๅ…ฌๅผ€็š„่ง†้ข‘ๆœ็ดขๆœๅŠกๅฏ่ƒฝ้ขไธด็‰ˆๆƒๆ–น็š„ๆŠ•่ฏ‰ไธพๆŠฅ
  • ไฟๆŠคไธชไบบ้š็ง๏ผš่ฎพ็ฝฎๅฏ†็ ๅฏไปฅ้™ๅˆถ่ฎฟ้—ฎ่Œƒๅ›ด๏ผŒไฟๆŠคๆ‚จ็š„ไฝฟ็”จ่ฎฐๅฝ•

้ƒจ็ฝฒ่ฆๆฑ‚

  1. ่ฎพ็ฝฎ็Žฏๅขƒๅ˜้‡ PASSWORD๏ผšไธบๆ‚จ็š„ๅฎžไพ‹่ฎพ็ฝฎไธ€ไธชๅผบๅฏ†็ 
  2. ไป…ไพ›ไธชไบบไฝฟ็”จ๏ผš่ฏทๅ‹ฟๅฐ†ๆ‚จ็š„ๅฎžไพ‹้“พๆŽฅๅ…ฌๅผ€ๅˆ†ไบซๆˆ–ไผ ๆ’ญ
  3. ้ตๅฎˆๅฝ“ๅœฐๆณ•ๅพ‹๏ผš่ฏท็กฎไฟๆ‚จ็š„ไฝฟ็”จ่กŒไธบ็ฌฆๅˆๅฝ“ๅœฐๆณ•ๅพ‹ๆณ•่ง„

้‡่ฆๅฃฐๆ˜Ž

  • ๆœฌ้กน็›ฎไป…ไพ›ๅญฆไน ๅ’Œไธชไบบไฝฟ็”จ
  • ่ฏทๅ‹ฟๅฐ†้ƒจ็ฝฒ็š„ๅฎžไพ‹็”จไบŽๅ•†ไธš็”จ้€”ๆˆ–ๅ…ฌๅผ€ๆœๅŠก
  • ๅฆ‚ๅ› ๅ…ฌๅผ€ๅˆ†ไบซๅฏผ่‡ด็š„ไปปไฝ•ๆณ•ๅพ‹้—ฎ้ข˜๏ผŒ็”จๆˆท้œ€่‡ช่กŒๆ‰ฟๆ‹…่ดฃไปป
  • ้กน็›ฎๅผ€ๅ‘่€…ไธๅฏน็”จๆˆท็š„ไฝฟ็”จ่กŒไธบๆ‰ฟๆ‹…ไปปไฝ•ๆณ•ๅพ‹่ดฃไปป

License

MIT ยฉ 2025 MoonTV & Contributors

่‡ด่ฐข

  • ts-nextjs-tailwind-starter โ€” ้กน็›ฎๆœ€ๅˆๅŸบไบŽ่ฏฅ่„šๆ‰‹ๆžถใ€‚
  • LibreTV โ€” ็”ฑๆญคๅฏๅ‘๏ผŒ็ซ™ๅœจๅทจไบบ็š„่‚ฉ่†€ไธŠใ€‚
  • ArtPlayer โ€” ๆไพ›ๅผบๅคง็š„็ฝ‘้กต่ง†้ข‘ๆ’ญๆ”พๅ™จใ€‚
  • HLS.js โ€” ๅฎž็Žฐ HLS ๆตๅช’ไฝ“ๅœจๆต่งˆๅ™จไธญ็š„ๆ’ญๆ”พๆ”ฏๆŒใ€‚
  • Zwei โ€” ๆไพ›่Žทๅ–่ฑ†็“ฃๆ•ฐๆฎ็š„ cors proxy
  • CMLiussss โ€” ๆไพ›่ฑ†็“ฃ CDN ๆœๅŠก
  • ๆ„Ÿ่ฐขๆ‰€ๆœ‰ๆไพ›ๅ…่ดนๅฝฑ่ง†ๆŽฅๅฃ็š„็ซ™็‚นใ€‚

โญ Star ่ถ‹ๅŠฟ

Star History Chart</a>

Chat with me