Yet another video sync website it currently support Youtube, DailyMotion Vimeo Soundcloud and Videos hosted on your own fileserver that you totally legally own
This project spun out of my quest to find something that would allow my group of friends watch vidoes together from the random collection of YouTube clips to long movies. All other services did not support playing mp4 files or had features that were not required for example chat. This is little webapp does not need API keys to be set up and users do not need to create any accouts. Just create a room share a link and people can join.
Bot only supports slash commands Full list of commands
- /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 has been tests with the following URL's other sites may work in the UI but not via the bot.
Watch2gether can save custom playlists without having them public in youtube.
This application packaged as a docker container. You can run it with
docker run -d -p 8080:8080 robrotheram/watch2gether
app.sample.env
with Discord Bot and OAuth Client CredentialsFollow these steps to replace the placeholder values in the app.sample.env
file with the actual credentials obtained from creating a Discord bot and OAuth2 client:
Create a Discord Bot:
Create an OAuth2 Client:
http://localhost:8080/auth/callback
).Replace Values in app.sample.env
:
app.sample.env
file and rename it to app.env
.CHANGEME
) with the corresponding values obtained from creating the Discord bot and OAuth2 client:
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
, and YOUR_OAUTH2_CLIENT_SECRET
with the actual values obtained from the Discord Developer Portal.Save Changes:
app.env
file.docker-compose.yml
If you are using Docker, you can configure your docker-compose.yml
file to include the necessary environmental variables. Here's an example:
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
For running behind a proxy you will need to forward websoctes as well as http. Below is a sample nginx configuration
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;
}
}
This project uses a server wiritten in go with a react frontend. Built with:
go 1.15+
Yarn v1.22.10
UI Framework:
Antd v4.9+
There is a handy make file that will build the server, ui and container.
make build