{"id":15710661,"url":"https://github.com/nikhilweee/seeksync","last_synced_at":"2026-04-20T23:31:41.264Z","repository":{"id":251169739,"uuid":"836539033","full_name":"nikhilweee/seeksync","owner":"nikhilweee","description":"Watch Videos Together in Sync","archived":false,"fork":false,"pushed_at":"2024-09-08T21:06:54.000Z","size":76,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-28T13:32:46.903Z","etag":null,"topics":["chrome-extensions","sidepanel"],"latest_commit_sha":null,"homepage":"https://chromewebstore.google.com/detail/seeksync/jlofdbpgmgeokldbfhlcihikebgmpnoa","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nikhilweee.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-01T04:15:00.000Z","updated_at":"2024-09-08T21:06:57.000Z","dependencies_parsed_at":"2024-08-01T09:21:51.495Z","dependency_job_id":"5646cf88-e025-474a-b623-6d44bb295f6b","html_url":"https://github.com/nikhilweee/seeksync","commit_stats":null,"previous_names":["nikhilweee/seeksync"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/nikhilweee/seeksync","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikhilweee%2Fseeksync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikhilweee%2Fseeksync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikhilweee%2Fseeksync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikhilweee%2Fseeksync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nikhilweee","download_url":"https://codeload.github.com/nikhilweee/seeksync/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikhilweee%2Fseeksync/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32070595,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T21:26:33.338Z","status":"ssl_error","status_checked_at":"2026-04-20T21:26:22.081Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chrome-extensions","sidepanel"],"created_at":"2024-10-03T21:09:16.325Z","updated_at":"2026-04-20T23:31:41.245Z","avatar_url":"https://github.com/nikhilweee.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# seeksync\n\nBrowser extension for synchronized video playback.\n\n![Seeksync Screenshot](https://i.imgur.com/PeMSkZK.jpg)\n\n## Summary\n\n- Synchronize play, pause and seek actions between users.\n- Send messages to each other using the chat feature.\n- Free and open source. Have complete control over your data.\n- Requires hosting your own sync server.\n- Currently only supports Netflix.\n\n## Getting Started\n\nThis extension is based on a client-server architecture, and has two components:\n\n1. A browser extension (the client) to relay actions to / from the server.\n2. A server (seekserver) to coordinate communication between clients.\n\nThe browser extension can be installed from the\n[Chrome Web Store](https://chromewebstore.google.com/detail/seeksync/jlofdbpgmgeokldbfhlcihikebgmpnoa).\nA simple websockets based python server is available at `seekserver/server.py`.\nTo get started, every user needs to install the extension on their browsers.\nHowever, only instance of the server can cater to multiple clients.\n\nFollow these steps for detailed instructions on how to install the extension and\nsetup the server.\n\n## Extension Setup\n\nYou can either install the extension from the Chrome Web Store, or download the\nlatest version of the extension as a ZIP file and manually install it. For\nsimplicity, we recommend the Chrome Web Store.\n\n### Chrome Web Store\n\nYou can install the extension from the\n[Chrome Web Store](https://chromewebstore.google.com/detail/seeksync/jlofdbpgmgeokldbfhlcihikebgmpnoa).\n\n### Download ZIP\n\n1. Download this repository. Go to https://github.com/nikhilweee/seeksync/,\n   click on the green `Code` button on the top right, then click `Download ZIP`.\n   Unzip the file after downloading.\n2. On Chrome, open the extensions page. On the top right of the toolbar, click\n   `⋮` \u003e `Extensions` -\u003e `Manage Extensions`, or go to `chrome://extensions`\n   from the address bar.\n3. Enable developer mode. Click the toggle on top right which says\n   `Developer mode`.\n4. Install the extension. Click on `Load unpacked` and navigate to the unzipped\n   download location. Select the inner `seeksync` folder.\n\n## Server Setup\n\nThe server is a simple python script that can be hosted on any machine with a\npublicly reachable IP address. The server script is available at\n`seekserver/server.py`. An easy way to run the server is to host it on any cloud\nVM provider with a public IP. You can either run the server manually, or use\nDocker Compose. The instructions assume that you are running the server on a\nlinux machine with a public IP of `11.22.33.44`.\n\n### Docker Compose\n\nJust navigate to `seeksync/seekserver` and spin up a container:\n\n```console\n$ # Run this from seeksync/seekserver\n$ docker compose up -d\n```\n\nThe server should be ready to serve connections at `11.22.33.44:5678`\n\n### Manual Setup\n\nA working installation of Python is required.\n\n1. Create a virtual environment (optional)\n\n   ```console\n   $ # Run this from seeksync/seekserver\n   $ python3 -m venv .venv\n   $ source .venv/bin/activate\n   ```\n\n2. Install dependencies\n\n   ```console\n   $ pip install -r requirements.txt\n   ```\n\n3. Start the server\n\n   ```console\n   $ python server.py\n   ```\n\nLike before, clients should be able to connect to `11.22.33.44:5678`\n\n## Usage\n\nFollow these steps to setup a connection to the server and enjoy watching videos\nin sync.\n\n### Connect to the Server\n\n1. Activate the extension by clicking its icon on the toolbar. If the icon isn't\n   visible, click on the extensions button (shaped like a jigsaw) on the toolbar\n   and click SeekSync. You should see the sidepanel open up.\n2. On the sidepanel, click `⚙` and enter some details.\n   1. In the server field, enter the public IP of your server\n      `11.22.33.44:5678`.\n   2. The room name can be anything as long as all users use the same room name.\n   3. Choose any username to identify yourself in the room.\n3. Click the toggle right next to the settings icon. If everything goes well,\n   you should see a message saying `Connected to \u003cserver address\u003e`.\n\n### Start Watching\n\n1. To watch videos together as a group, ask all users to connect using the same\n   server and the same room. Make sure each user sets a unique username.\n2. Start watching something on a supported platform. Other users should get a\n   message with the link to the video that you are watching. Ask them to click\n   on that link so they are \"on the same page\".\n3. From here on, every user watching the same video should have synchronized\n   playback. Whenever someone performs an action (pause, play or seek), the\n   action will be performed for all users. A message will also appear on the\n   chat window every time someone performs an action.\n4. If you face any issues, try refreshing the page to trigger a refresh.\n5. To disconnect and exit the room, press the toggle next to `⚙`.\n\n## Documentation\n\nAdditional documentation can be found in [DOCS.md](DOCS.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikhilweee%2Fseeksync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnikhilweee%2Fseeksync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikhilweee%2Fseeksync/lists"}