อีกหนึ่งเว็บไซต์ซิงค์วิดีโอที่ปัจจุบันรองรับ Youtube, DailyMotion Vimeo Soundcloud และวิดีโอที่โฮสต์บนเซิร์ฟเวอร์ไฟล์ของคุณเองที่คุณเป็นเจ้าของอย่างถูกกฎหมายโดยสมบูรณ์
โปรเจ็กต์นี้แยกตัวออกมาจากภารกิจของฉันเพื่อค้นหาสิ่งที่จะช่วยให้กลุ่มเพื่อนของฉันดูวิดีโอด้วยกัน ตั้งแต่คอลเลกชันคลิป YouTube แบบสุ่มไปจนถึงภาพยนตร์ขนาดยาว บริการอื่นๆ ทั้งหมดไม่รองรับการเล่นไฟล์ MP4 หรือมีคุณสมบัติที่ไม่จำเป็นสำหรับการแชท เป็นต้น นี่เป็นเว็บแอปเล็กๆ ที่ไม่ต้องใช้คีย์ API ในการตั้งค่า และผู้ใช้ไม่จำเป็นต้องสร้างบัญชีใดๆ เพียงสร้างห้องแชร์ลิงก์และผู้คนก็สามารถเข้าร่วมได้
บอทรองรับคำสั่งสแลชเท่านั้น รายการคำสั่งทั้งหมด
- /join : Join Bot to a voice channel
- /leave : Disconnect Bot from channel
- /pause : Pause Video
- /skip : Skip to next video in the Queue
- /play : Play Video
- /stop : Stop Video
- /list : List videos in the Queue
- /add <video> : Add Video to Queue
- /playlist load <name>
- /now : Current Status of what is playing
Watch2gether ได้ทำการทดสอบกับ URL ต่อไปนี้ ไซต์อื่นๆ อาจทำงานใน UI แต่ใช้งานผ่านบอทไม่ได้
Watch2gether สามารถบันทึกเพลย์ลิสต์ที่กำหนดเองโดยไม่ต้องเปิดเผยต่อสาธารณะใน youtube
แอปพลิเคชันนี้บรรจุเป็นคอนเทนเนอร์นักเทียบท่า คุณสามารถรันมันได้ด้วย
docker run -d -p 8080:8080 robrotheram/watch2gether
app.sample.env
ด้วย Discord Bot และ OAuth Client Credentials ทำตามขั้นตอนเหล่านี้เพื่อแทนที่ค่าตัวยึดตำแหน่งในไฟล์ app.sample.env
ด้วยข้อมูลประจำตัวจริงที่ได้รับจากการสร้างบอท Discord และไคลเอนต์ OAuth2:
สร้างบอท Discord:
สร้างไคลเอ็นต์ OAuth2:
http://localhost:8080/auth/callback
) แทนที่ค่าใน app.sample.env
:
app.sample.env
และเปลี่ยนชื่อเป็น app.env
CHANGEME
) ด้วยค่าที่สอดคล้องกันที่ได้รับจากการสร้างบอท Discord และไคลเอนต์ OAuth2: DISCORD_TOKEN=YOUR_DISCORD_BOT_TOKEN
DISCORD_CLIENT_ID=YOUR_OAUTH2_CLIENT_ID
DISCORD_CLIENT_SECRET=YOUR_OAUTH2_CLIENT_SECRET
SESSION_SECRET=ANY_RANDOM_STRING_FOR_SESSION_SECURITY
YOUR_DISCORD_BOT_TOKEN
, YOUR_OAUTH2_CLIENT_ID
และ YOUR_OAUTH2_CLIENT_SECRET
ด้วยค่าจริงที่ได้รับจาก Discord Developer Portalบันทึกการเปลี่ยนแปลง:
app.env
docker-compose.yml
หากคุณใช้ Docker คุณสามารถกำหนดค่าไฟล์ docker-compose.yml
เพื่อรวมตัวแปรสภาพแวดล้อมที่จำเป็นได้ นี่คือตัวอย่าง:
environment :
- DISCORD_TOKEN=YOUR_DISCORD_BOT_TOKEN
- DISCORD_CLIENT_ID=YOUR_OAUTH2_CLIENT_ID
- DISCORD_CLIENT_SECRET=YOUR_OAUTH2_CLIENT_SECRET
- SESSION_SECRET=ANY_RANDOM_STRING_FOR_SESSION_SECURITY
หากต้องการทำงานหลังพรอกซี คุณจะต้องส่งต่อ websoctes และ http ด้านล่างนี้คือตัวอย่างการกำหนดค่า nginx
server {
server_name watch2gether.<YOUR DOMAIN>;
listen 80;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://127.0.0.1:8080;
proxy_read_timeout 90;
}
}
โปรเจ็กต์นี้ใช้เซิร์ฟเวอร์ wiritten ร่วมกับส่วนหน้าแบบโต้ตอบ สร้างด้วย:
ไป 1.15+
เส้นด้าย v1.22.10
กรอบการทำงาน UI:
แอนทีดี v4.9+
มีไฟล์ make ที่มีประโยชน์ที่จะสร้างเซิร์ฟเวอร์ UI และคอนเทนเนอร์
make build