Skip to content

πŸ“Ž Clip videos from popular websites like YouTube, then share with friends!

Notifications You must be signed in to change notification settings

christophergeiger3/the-clipping-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TCP Logo

An easy to use self-hosted clipping tool.

Clip videos from popular websites like YouTube, then share with friends!

πŸ€” Why would I use this software?

  • Download videos from a very broad range of websites to your own personal website.
  • Sharing a URL from The Clipping Project bypasses upload size limits on sites like Discord.
  • Self-hosted -- no one else can remove or delete the videos you clip.
  • No frills -- share only the portion of the video you choose without any additional UI. No need to link your friends to someone else's website.
  • Authentication -- clipping utilities are available to just you, but clips you save can be shared with anyone who has a link.
  • Various tools for creating and previewing video clips

πŸ“½οΈ Demo

Download and clip videos from a website:

demo1-2023-01-01_15.28.20.mp4

View all downloaded clips:

demo2-2023-01-01_15.32.47.mp4

Share clips easily with friends:

demo3-2023-01-01_15.15.18.mp4

βš™οΈ Installation

The Clipping Project may be installed either via Docker or by running each service independently (local).

πŸ‹ Docker (recommended)

Make sure Docker is installed and the Docker service is running.

Simply run the following command:

docker run -t -i -p 4190:4190 -p 4191:4191 -v ~/Videos:/app/api/videos christophergeiger3/the-clipping-project:latest

Then navigate to http://localhost:4191. By default the owner username is admin and the owner password is admin (this can be changed).

The -v ~/Videos:/app/api/videos saves clips to the ~/Videos directory on your PC -- you can change ~/Videos to whatever folder you'd like. Environment variables may also be passed through the docker run command, e.g.

docker run -t -i -e OWNER_PASSWORD='hunter2' -p 4190:4190 -p 4191:4191 christophergeiger3/the-clipping-project:latest

🏠 Local

Install mongodb, then start the mongod service:

sudo systemctl start mongod.service

Install yt-dlp:

wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp
chmod a+rx /usr/local/bin/yt-dlp

Install volta:

curl https://get.volta.sh | bash

Install the nestjs CLI:

npm install -g @nestjs/cli

Running a production build

Install volta:

curl https://get.volta.sh | bash

Build the app api:

cd api
npm install
cp .env.example .env
npm run build

Launch the app api:

npm run start:prod

Open a new terminal and build the web front-end:

cd web
yarn
cp .env.example .env
yarn build
yarn global add serve

Launch the web front-end:

PORT=4191; serve -s build -l ${PORT}

Running a development build

Launch the app API:

cd api
npm install
npm run start:debug

Open a new terminal and launch the web front-end:

cd web
yarn
yarn start

🌲 Environment

TCP ships with a .env.example file which gives an example of some configuration options you can tweak, such as the port the API that TCP's API will run on (API_PORT) and the port that TCP's web client will run on (WEB_PORT).

To configure TCP, copy the example env file to .env in the same directory:

cp .env.example .env

then edit the new .env file as you see fit.

If you're running docker, you may need to rebuild your docker images once you've made changes:

docker compose build

Configuring a local build

If you're running a local build (no docker), then you'll work with two .env files, api/.env and web/.env, and can ignore the .env file in the root of the the-clipping-project directory.

πŸ› οΈ API

To access the docs for TCP's API, navigate to the /api route of your API's URL (default: http://localhost:4190/api).

TCP's API is self-documented by Swagger/OpenAPI through NestJS, and comes with a built-in tool for building HTTP queries quickly and easily.

πŸ’» Technologies

TCP is built with NestJS, MUI, Vite, and React.

YT-DLP is the special sauce TCP uses to download and save video clips.

πŸ› Bugs, feedback, contributions

Leave no question unasked! Feel free to drop any feedback or thoughts under the issues tab.

Similar Projects

If TCP isn't what you're looking for, that's okay! Here are some other utilities which might have the functionality you want: