Skip to content

Companion Webapp to Jellyfin which enables the creation and sharing of clips from Jellyfin content

License

Notifications You must be signed in to change notification settings

arnolicious/jelly-clipper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

πŸͺΌ Jelly-Clipper 🎬

Jelly-Clipper is an open-source web application that allows Jellyfin users to easily create, share, and manage video clips from their Jellyfin media library

Important

This is my first open source project, and it was very much a hacky "lets try to make it work somehow" thing. So absolutely feel free to contribute and fix all the stuff I did wrong :D

🌟 Features

  • Simple Clip Creation: Paste a URL and create clips with ease
  • Seamless Jellyfin Integration: Works directly with your self-hosted Jellyfin server
  • User Authentication: Clips are only accessible for other users of the Jellyfin instance
  • Easy Sharing: Generate shareable links for your favorite moments
  • User-Friendly(-ish) Interface: Intuitive design inspired by YouTube and Twitch clip functionality

πŸ“Έ Screenshots

❓ How does this work?

This tool takes a very simple approach:

  1. Jelly-Clipper downloads the original file from jellyfin
  2. The user can create their clip
  3. The clip will be saved indefinitely in their profile and is accessible for other members of the jellyfin instance
  4. The downloaded original files get cleaned up regularly, if they're older than 2 days, to save storage

πŸš€ Deployment

Docker Installation

Jelly-Clipper is easily hostable with docker compose:

services:
  jelly-clipper:
    image: ghcr.io/arnolicious/jelly-clipper:latest
    container_name: jelly-clipper
    ports:
      - 3000:3000
    volumes:
      # Path to the db directory, in which the sqlite db file will live
      - <MY_DB_PATH>:/app/db
      # Path to the videos directory.
      # This will store all the clips permanently and the original files temporarily,
      # so it might get a lil big
      - <MY_VIDEOS_PATH>:/app/assets/videos
    restart: unless-stopped
    environment:
      # Timezone to have the cleanup cron job working as expected
      - TZ=Europe/Berlin
      # Full URL with Protocol and Port, where the application will live
      - JELLY_CLIPPER_ORIGIN=http://localhost:3000
      # with a reverse proxy it could be something like:
      # - JELLY_CLIPPER_ORIGIN=https://clip.jellyfin.mydomain.test

πŸ’» Technologies

  • SvelteKit
  • Svelte 5
  • TypeScript
  • Bun
  • Drizzle ORM

🀝 Development

Prerequisites

  • Node.js v20
  • Bun
  • Jellyfin server for local development

Setup

  1. Clone the repository:

    git clone https://github.com/arnolicious/jelly-clipper.git
    cd jelly-clipper
  2. Install dependencies:

    bun install
  3. Run the development server:

    bun dev

Contributing

Contributions are welcome! Please check out our Contribution Guidelines.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“‹ Todo

  • Basic Prototype
  • Implement sound (lol)
  • Download Progress Indicator
  • Clipping UI
  • Create browser extension
  • Improve mobile responsiveness

⭐ Star History

Star History Chart

πŸ“„ License

Distributed under the MIT License. See LICENSE for more information.

πŸ“ž Contact

Disclaimer: This project is not officially affiliated with Jellyfin. It is a community-driven project created to enhance the Jellyfin experience.

About

Companion Webapp to Jellyfin which enables the creation and sharing of clips from Jellyfin content

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 3

  •  
  •  
  •