https://github.com/ytmous/ytmous
Anonymous Youtube Proxy
https://github.com/ytmous/ytmous
ejs expressjs proxy youtube
Last synced: 2 months ago
JSON representation
Anonymous Youtube Proxy
- Host: GitHub
- URL: https://github.com/ytmous/ytmous
- Owner: ytmous
- License: bsd-3-clause
- Created: 2021-05-12T22:51:50.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2024-04-02T15:02:12.000Z (about 1 year ago)
- Last Synced: 2025-02-02T03:55:11.095Z (3 months ago)
- Topics: ejs, expressjs, proxy, youtube
- Language: EJS
- Homepage: https://ytmous-nightly.vercel.app
- Size: 4.16 MB
- Stars: 95
- Watchers: 3
- Forks: 98
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
ytmous
Anonymous Youtube Proxy
### Search, Click, and watch
ytmous is an lightweight, and Anonymous Youtube Proxy. Designed for device with limited resource.### There's no tracker and ads
Only with a simple UI, ready for you to watch some videos in a second### Free and Open source
ytmous is licensed under BSD 3 Clause and it's code is free. You can also host your own ytmous server. It's easy!### Customizeable
ytmous server owner could customize the frontend to what they would like. See [Customizing Frontend](#customizingfrontend)**DISCLAIMER:** ytmous could fetch, stream or download videos from YouTube, even copyrighted ones. Please respect all copyright laws.
## Screenshots





## Server Requirement
- Node v16+ is advised.
- Fast server network connection with ability to reach YouTube## Configuration
The code is reading the provided configuration from Environment Variable that comes from your system. These variable is **optional**.- `GEOLOCATION`: YouTube Geolocation. Default is `US`.
- `USER_AGENT`: This variable is where we fake our user agent to request youtube.
- `DLCHUNKSIZE`: Download Chunk Size. Default is 10 MB (1024 * 1024 * 10)
- `NO_CLUSTERS`: Do not run ytmous with clusters. Useful for debugging
- `CLUSTERS`: Number of clusters to fork. By default is depending on `os.availableParallelism()` integer or `os.cpus().length`.
- `PORT`: Server port to listen to.## Customizing frontend
You can customize your frontend by creating `local` directory to replace files from `views` or `public` directory.- `local/views/` for backend rendering (`views`)
- `local/public/` for static page (`public`)```
local
├── public
│ ├── Ubuntu-R.ttf
│ ├── css
│ │ ├── Toard.css
│ │ └── style.css
│ ├── index.html
│ └── robots.txt
└── views
├── channel.ejs
├── comments.ejs
├── error.ejs
├── playlist.ejs
├── search.ejs
└── watch.ejs
```## Starting the server
If this is your first time running this server, You may need to install it's dependencies first by executing `npm install`.Then, you can start the server by executing:
```sh
npm start
```
or
```
PORT=3000 npm start
```## API endpoints
You can use ytmous API endpoints for your applications. The following endpoints are supported:### `/api/search`
Endpoint to search videos.#### Queries
- `q` (String) **(Required)**
String to search with.- `page` (Number)
Next page listing.### `/api/getPlaylistInfo/[playlistID]`
Endpoint to list videos from playlist / channel.#### Parameters
- `playlistID` **(Required)**
String of Playlist or Channel ID.### `/api/getVideoInfo/[videoID]`
Endpoint to give information of an YouTube video.#### Parameters
- `videoID` **(Required)**
String of YouTube video ID### `/api/getComments/[videoID]`
#### Parameters
- `videoID` **(Required)**
String of YouTube video ID.#### Queries
- `continuation` (String)
Continuation ID of an Comments. Used to fetch the next comment section.- `replyToken` (String)
Reply token. Used to view an reply of a comment.
To view continuation of an Reply comments, Put continuationID in `replyToken` query instead of `continuation`.