Git Product home page Git Product logo

the-clipping-project's Introduction

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:

the-clipping-project's People

Contributors

christophergeiger3 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

the-clipping-project's Issues

Add sidebar

The sidebar should be collapsible and link the clip view with the clips view, and potentially other views in the future.

Audio Clipping

๐Ÿ‘‹

This is a really cool app, much easier than using adobe effects or something.

How about adding ways to clip or replace the audio in a clip?

Thanks!

Disable preview when media source cannot be loaded

In some cases when a video's source URL cannot be loaded through videojs the video can still be clipped. If that's the case, disable the preview video and allow the user to manually enter in start and end times.

Update default ports

3000 and 3001 are a little too common -- change them to something less frequently used.
(also make sure to update the README.md)

Pull default hostname from .env file

At the moment http://localhost:4190 is hard coded into quite a few places -- it's time to ctrl+f and replace those with an environmental variable (remember to update the docker .env.example)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.