All Projects → rbtr → pachinko

rbtr / pachinko

Licence: MPL-2.0 license
modular pluggable media sorter

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to pachinko

Bobarr
🍿 The all-in-one alternative for Sonarr, Radarr, Jackett... with a VPN and running in docker
Stars: ✭ 697 (+2481.48%)
Mutual labels:  plex, tmdb
Sickchill
Less rage, more chill.
Stars: ✭ 2,166 (+7922.22%)
Mutual labels:  plex, tvdb
fylm
A wonderful automated command line app for organizing your film media. Built for Plex and SABnzbd.
Stars: ✭ 25 (-7.41%)
Mutual labels:  plex, tmdb
movie-api
[DEPRECATED] 🎬 Get info for movies and TV shows
Stars: ✭ 32 (+18.52%)
Mutual labels:  trakt, tmdb
Sickgear
SickGear has proven the most reliable stable TV fork of the great Sick-Beard to fully automate TV enjoyment with innovation.
Stars: ✭ 452 (+1574.07%)
Mutual labels:  trakt, plex
Goplaxt
Scrobble Plex plays to Trakt with ease!
Stars: ✭ 183 (+577.78%)
Mutual labels:  trakt, plex
Flox
Self Hosted Movie, Series and Anime Watch List
Stars: ✭ 901 (+3237.04%)
Mutual labels:  plex, tmdb
plaxt
Webhooks based Trakt.tv scrobbling for Plex
Stars: ✭ 20 (-25.93%)
Mutual labels:  trakt, plex
Trakt-Userscripts
Userscripts to improve and add features to Trakt.tv
Stars: ✭ 39 (+44.44%)
Mutual labels:  trakt, tmdb
Rats
Movie Ratings Synchronization with Python
Stars: ✭ 156 (+477.78%)
Mutual labels:  trakt, tmdb
IMDb-Scout-Mod
Auto search for movie/series on torrent, usenet, ddl, subtitles, streaming, predb and other sites. Adds links to IMDb pages from hundreds various sites. Adds movies/series to Radarr/Sonarr. Adds external ratings from Metacritic, Rotten Tomatoes, Letterboxd, Douban, Allocine. Media Server indicators for Plex, Jellyfin, Emby. Dark theme/style for …
Stars: ✭ 177 (+555.56%)
Mutual labels:  trakt, plex
artifact-promotion-plugin
A simple Jenkins plugin to promote artifacts.
Stars: ✭ 29 (+7.41%)
Mutual labels:  pipeline
poco
Interactive pipeline filtering in PowerShell (a port of peco).
Stars: ✭ 16 (-40.74%)
Mutual labels:  pipeline
Doplarr
An *arr request bot for Discord
Stars: ✭ 236 (+774.07%)
Mutual labels:  plex
rocket-pipes
Powerful pipes for TypeScript, that chain Promise and ADT for you 🚌 -> ⛰️ -> 🚠 -> 🏂 -> 🚀
Stars: ✭ 18 (-33.33%)
Mutual labels:  pipeline
aptk
A toolkit project to enable you to build annotation processors more easily
Stars: ✭ 28 (+3.7%)
Mutual labels:  processor
tpack
Pack a Go workflow/function as a Unix-style pipeline command
Stars: ✭ 55 (+103.7%)
Mutual labels:  pipeline
plex-music
Web/Desktop app for streaming music from your Plex Media Server
Stars: ✭ 42 (+55.56%)
Mutual labels:  plex
pipeline-as-yaml-plugin
Jenkins Pipeline As Yaml Plugin
Stars: ✭ 111 (+311.11%)
Mutual labels:  pipeline
cherry-on-py
Cloud computing is a game changer for developers. What can you do in a couple hundred lines of code?
Stars: ✭ 67 (+148.15%)
Mutual labels:  pipeline

             _   _     _       
 ___ ___ ___| |_|_|___| |_ ___ 
| . | .'|  _|   | |   | '_| . |
|  _|__,|___|_|_|_|_|_|_,_|___|
|_|

modular, plugin based media sorter  
created by @rbtr  

Build Status Go Report Card Release Docker License

Updates!

pachinko is now part of the GitHub Sponsors program! If you enjoy it and want to support my work, please check out my sponsor page or click on the "💖 Sponsor" button up above!

what it is

pachinko is a media sorter. it integrates with the tvdb and the moviedb to, given a directory of reasonably named mix media, organize that media into a clean hierarchal directory structure ideal for use in media servers like plex, kodi/xbmc, etc.

unlike some of the prior implementations of this idea, pachinko was designed from inception to be automation and container-friendly.
it has no heavy gui - configure it through the config file or via flags, then execute it and walk away.

it is written in go so that it is approachable for anyone interested in contributing without sacrificing performance.
the plugin-style architecture keeps the core codebase clear and efficient.

design

plugins

pachinko has a plugin based pipeline design. the base plugin types are:

  • input - add data from a datasource to the stream
  • processor - modify the datastream in-flight
  • output - deal with the processed data by e.g. moving files from their original dir to their sorted path.

these base plugin types make pachinko flexible. composing a pipeline of many combination of plugins is possible.

additionally there are subtypes of processor plugins:

  • preprocessor - parse data already present in the datastream to classify, clean, or add information to the data before main processor plugins run. the preprocessors make modifications to the datastream based only on the data already present in the objects in the datastream.
  • (intra)processor - the main working processors, where external datasources may be queried to enrich the datastream and significant modifications made.
  • postprocessor - last chance to modify the datastream before it is sent to outputs, but after the rich data has been added. the postprocessors make final modifications that shouldn't be the responsibility of the intraprocessors but may depend on the data enrichments that those have added.

the subtypes exist mainly to allow ordering of plugin flow.

datatypes

pachinko currently supports these data types:

  • tv and
  • movie video files

other datatypes planned include: images (and whatever you would like to contribute!)

inputs

pachinko currently supports these inputs:

  • local filesystem (path).

other datastore types planned include : s3 (and whatever you would like to contribute!)

outputs

pachinko currently supports these outputs:

processors

pachinko has the following optional processors:

  • tv identifier (pre-tv)
  • movie identifier (pre-movie)
  • tvdb (intra-tvdb)
  • tmdb (intra-tmdb)
  • tv path solver (post-tv_path_solver)
  • movie path solver (post-movie_path_solver)
  • file deleter (deleter)

how to run it

pachinko is distributed as a container and as a cross-platform binary.

the container is recommended:

$ docker run -v /path/to/source:/src:z -v /path/to/dest:/dest:z -v /path/to/cfg:/cfg rbtr/pachinko:latest --config /cfg

to run the binary:

$ ./pachinko sort --config /path/to/config

options

pachinko is configurable via file (yaml, toml), cli flags, or env vars.

the config file is recommended:

dry-run: true
log-level: debug
inputs: []
outputs: []
processors: {}

the full, current list of options is available by running ./pachinko genconf on the commandline.
the core pachinko options are:

option inputs usage
conf string full path to config file - ignored in the config file
dry-run bool dry-runs print only, pachkino will not make changes
log-level string one of (trace,debug,info,warn,error) for logging verbosity
log-format string one of (json,text)

inputs, outputs, and processors are lists of plugins objects and look generally like:

inputs:
- name: path
  src-dir: /path/to/source
outputs:
- name: stdout

note that each plugin may have its own independent config options; refer to that plugin's docs for details on configuring that specific plugin. here, the path input plugin has a src-dir parameter that we configure in the plugin list item.

the plugin list is processed in the written order and repeats are allowed. all loaded plugins are guaranteed to see each of the items in the datastream at least once. if the order that your datastream is processed by each plugin matters, make sure to load your plugins in the correct order!

testimonials

here's what users had to say when asked what they thought about pachinko:

Ew. Pachinko? Why would you name it pachinko? Pachinko just makes me think of flashing lights and cigarette smoke. - a Japanese user

license

pachinko is licensed under MPL-2 which generally means you can use it however you like with few exceptions.

read the full license terms here.


created by @rbtr
inspired by the functionality and frustrating user experience of: sorttv by cliffe, filebot, tinymediamanager, and others
and the excellent architecture patterns of telegraf, caddy, coredns, and others

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].