https://github.com/morrismorrison/ytclipper
simple webapp to create youtube clips
https://github.com/morrismorrison/ytclipper
expressjs ffmpeg nodejs tailwindcss video youtube yt-dlp
Last synced: about 1 year ago
JSON representation
simple webapp to create youtube clips
- Host: GitHub
- URL: https://github.com/morrismorrison/ytclipper
- Owner: MorrisMorrison
- Created: 2021-07-09T13:02:23.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2024-12-28T02:23:04.000Z (over 1 year ago)
- Last Synced: 2025-03-24T07:07:37.094Z (over 1 year ago)
- Topics: expressjs, ffmpeg, nodejs, tailwindcss, video, youtube, yt-dlp
- Language: JavaScript
- Homepage: http://ytclipper.mormor.online
- Size: 18.8 MB
- Stars: 4
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ytclipper
Simple web application to create clips from youtube videos and download them.
https://github.com/MorrisMorrison/ytclipper/assets/22982151/bc950608-114f-4d10-b9cd-e46c5cf37333
1. Enter YouTube URL
2. Enter start time (HH:MM:SS)
3. Enter end time (HH:MM:SS)
4. Download Clip
## Built With
- express.js
- yt-dlp
- ffmpeg
- tailwind css
- video.js
- toastr
## Run locally
### Requirements
- node
- python3
- python3-pip
- python3-certifi
- ffmpeg
### Setup
1. Install the required packages
`npm i`
2. Run the app
`npm run start`
Or run as docker container
`docker build -t ytclipper .`
`docker run -d -e PORT=4001 -p 8080:4001 ytclipper`
### Configuration
- Port can be configured via env variable PORT (default 4001)
## TODO
- [x] input validation
- [x] let users enter the end time instead of duration
- [x] add loading-screen, or some kind of progress indicator
- [x] do video processing async with background workers
- [x] add dark mode
- [x] embed video player into the site
- [x] migrate to yt-dlp from youtube-dl
- [ ] let users set start and end time using a slider embedded in the video player
- [x] prevent click spamming
- [x] automatically delete downloaded videos
- [x] use yt-dlp to directly download a section of a video
- [ ] track created/finished time of jobs
- [ ] kill suspended jobs after a specified timeout
- [ ] let users select desired format by checking yt-dlp -F "providedUrl"
- [ ] rewrite everything in go