• Stars
    star
    118
  • Rank 299,923 (Top 6 %)
  • Language
    Go
  • License
    MIT License
  • Created over 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Automatically organise your movies and tv series

media-sort

GoDoc CI

A command-line tool and Go (golang) library which categorizes provided files and directories by moving them into to a structured directory tree, using various live sources.

Install

Binaries

Releases Releases

See the latest release or download and install it now with curl https://i.jpillora.com/media-sort! | bash

Source

$ go get -v github.com/jpillora/media-sort

Features

  • Cross platform single binary
  • No dependencies
  • Easily create a Plex-compatible directory structure
  • Integration with uTorrent and qbittorrent "Run on Completion" option

Quick use

$ curl https://i.jpillora.com/media-sort! | bash
Installing jpillora/media-sort v2.4.3.....
######################################################################## 100.0%
Installed at /usr/local/bin/media-sort

Test run media-sort (read-only mode)

$ cd my-media/
$ media-sort --dry-run --recursive .
2016/01/30 09:35:47 [Dryrun]
2016/01/30 09:35:47 Searching dick van dyke show (series)
2016/01/30 09:35:47 [#1/1] dick-van-dyke-show.s01e10.[Awesome-Audio]-[Super-Quality]-[Name-of-Encoder].mp4
  └─> The Dick Van Dyke Show S01E10.mp4

CLI Usage

$ media-sort --help

  Usage: media-sort [options] <target> [target] ...

  media-sort categorizes the provided files and directories (targets) by
  moving them into to a structured directory tree, sorting is currently
  performed using TVMaze, MovieDB and Google.

  Options:
  --tv-dir, -t              tv series base directory (defaults to current directory)
  --movie-dir, -m           movie base directory (defaults to current directory)
  --tv-template             tv series path template
  --movie-template          movie path template
  --extensions, -e          types of files that should be sorted (default mp4,m4v,avi,mkv,mpeg,mpg,mov,webm)
  --concurrency, -c         search concurrency [warning] setting this too high can cause rate-limiting errors (default 6)
  --file-limit, -f          maximum number of files to search (default 1000)
  --num-dirs, -n            number of directories to include in search (default 0 where -1 means all dirs)
  --accuracy-threshold, -a  filename match accuracy threshold (default 95)
  --min-file-size           minimum file size (default 25MB)
  --recursive, -r           also search through subdirectories
  --dry-run, -d             perform sort but don't actually move any files
  --skip-hidden, -s         skip dot files
  --skip-subs               skip subtitles (srt files)
  --action                  filesystem action used to sort files (copy|link|move, default move)
  --hard-link, -h           use hardlinks instead of symlinks (forces --action link)
  --overwrite, -o           overwrites duplicates
  --overwrite-if-larger     overwrites duplicates if the new file is larger
  --watch, -w               watch the specified directories for changes and re-sort on change
  --watch-delay             delay before next sort after a change (default 3s)
  --verbose, -v             verbose logs
  --version                 display version
  --help                    display help

  by default, tv series are moved to:
    ./<title> S<season>E<episode>.<ext>
  and movies are moved to:
    ./<title> (<year>).<ext>

  to modify the these paths, you can use the --tv-template and
  --movie-template options. These options describe the new file path for
  tv series and movies using Go template syntax. You can find the
  default values here:
    https://godoc.org/github.com/jpillora/media-sort/sort#pkg-variables
  and you can view all possible template variables here:
    https://godoc.org/github.com/jpillora/media-sort/sort#Result

  Version:
    X.Y.Z

  Read more:
    github.com/jpillora/media-sort

Programmatic Use

See https://godoc.org/github.com/jpillora/media-sort

The API has 3 layers:

  1. An explicit search: mediasearch.Search(query, year, mediatype string) (mediasearch.Result, error) Returns search result
  2. A path string correction (using Search): mediasort.Sort(path string) (*mediasort.Result, error) Attempts to extract search query information from the path string, returns result which can be used to format a new path or result.PrettyPath() can be used.
  3. A filesystem correction (using Sort): mediasort.FileSystemSort(config mediasort.Config) error Attempts to sort all paths provided in config.Targets, when successful - results are formatted and renamed to use the newly formatted path.

More Repositories

1

chisel

A fast TCP/UDP tunnel over HTTP
Go
12,490
star
2

cloud-torrent

☁️ Cloud Torrent: a self-hosted remote torrent client
Go
5,744
star
3

xdomain

A pure JavaScript CORS alternative
JavaScript
3,072
star
4

overseer

Monitorable, gracefully restarting, self-upgrading binaries in Go (golang)
Go
2,276
star
5

notifyjs

Notify.js - A simple, versatile notification library
1,903
star
6

xhook

Easily intercept and modify XHR request and response
HTML
983
star
7

webproc

Wrap any program in a simple web-based user-interface
Go
725
star
8

docker-dnsmasq

dnsmasq in a docker container, configurable via a simple web UI
Dockerfile
723
star
9

go-tcp-proxy

A small TCP proxy written in Go
Go
694
star
10

backoff

Simple backoff algorithm in Go (golang)
Go
627
star
11

jquery.rest

A jQuery plugin for easy consumption of RESTful APIs
CoffeeScript
614
star
12

ipfilter

A package for IP Filtering in Go (golang)
Go
386
star
13

node-edit-google-spreadsheet

A simple API for editing Google Spreadsheets
JavaScript
304
star
14

base64-encoder

Base64 Encoder
HTML
260
star
15

installer

One-liner for installing binaries from Github releases
Go
200
star
16

node-torrent-cloud

Torrent Cloud – A self-hosted Bittorrent client in the Cloud
JavaScript
183
star
17

velox

Real-time Go struct to JS object synchronisation over SSE and WebSockets
Go
180
star
18

grunt-aws

A Grunt interface into the Amazon Node.JS SDK
JavaScript
174
star
19

opts

A Go (golang) package for building frictionless command-line interfaces
Go
162
star
20

verifyjs

Verify.js - A powerful, customizable asynchronous validation library
JavaScript
159
star
21

ssh-tron

Multiplayer Tron over SSH, written in Go
Go
143
star
22

go-ogle-analytics

Monitor your Go (golang) servers with Google Analytics
HTML
133
star
23

cloud-gox

A Go (golang) Cross-Compiler in the cloud
Go
132
star
24

go-tld

TLD Parser in Go
Go
114
star
25

node-load-tester

Simple load testing with Node.js
JavaScript
88
star
26

sshd-lite

A feature-light sshd(8) for Windows, Mac, and Linux written in Go
Go
85
star
27

csv-to-influxdb

Import CSV files into InfluxDB
Go
81
star
28

node-logbook

A simple, unobtrusive logger for Node
JavaScript
61
star
29

spy

Spy - Watches for file changes, restarts stuff
Go
61
star
30

go-and-ssh

Go and the Secure Shell protocol
Go
58
star
31

node-glob-all

Provide multiple patterns to node-glob
JavaScript
57
star
32

serve

Your personal HTTP file server in Go
Go
53
star
33

go-sandbox

An alternate frontend to the Go Playground
JavaScript
52
star
34

scraper

A dual interface Go module for building simple web scrapers
Go
50
star
35

node-google-sheets

Google Sheets v4 API using Node.js
JavaScript
44
star
36

dedup

A cross platform command-line tool to deduplicate files, fast
Go
42
star
37

archive

Archiver is a high-level API over Go's archive/tar,zip
Go
33
star
38

icmpscan

ICMP scan all hosts across a given subnet in Go (golang)
Go
29
star
39

hashedpassword

A small Go (Golang) package for hashed passwords
Go
26
star
40

gswg-examples

Getting Started with Grunt - Code Examples
JavaScript
25
star
41

webfont-downloader

A small web service which converts webfonts into zip archives
Go
24
star
42

aoc-in-go

A template repository for rapidly writing Advent of Code solutions in Go
Go
21
star
43

conncrypt

Symmetrically encrypt your Go net.Conns
Go
19
star
44

s3hook

Transparent Client-side S3 Request Signing
JavaScript
19
star
45

grunt-source

Reuse a Grunt environment across multiple projects
JavaScript
18
star
46

docker-cloud-torrent-openvpn

cloud-torrent and OpenVPN in a docker container
Shell
17
star
47

longestcommon

Longest common prefix/suffix across of list of strings in Go (Golang)
Go
16
star
48

mega-stream

Stream media content from Mega
JavaScript
14
star
49

node-gitlab-deploy

Deploy a Node server via a Gitlab Webhook
JavaScript
13
star
50

go-template

An automatic cross-compiling Go (golang) repository template using goreleaser and Github actions
Shell
13
star
51

ansi

Easy to use ANSI control codes
Go
12
star
52

subfwd

URL shortening via sub-domains, written in Go
HTML
12
star
53

js-play

A JavaScript playground/sandbox for learning, testing and prototyping
CSS
12
star
54

upnpctl

A small UPnP client
Go
11
star
55

go-echo-server

View your requests in JSON format
Go
10
star
56

node-echo-server

Responds with the JSONified Request
JavaScript
10
star
57

ddns-daemon

A Simple Dynamic DNS Daemon using Node.js and Route53
JavaScript
10
star
58

whos-home

ARP scan your subnet and POST findings
Go
10
star
59

uploader

A small server to receive files over HTTP
JavaScript
9
star
60

dynflare

DynamicDNS using Cloudflare
Go
9
star
61

pnode

peer-to-peer dnode over anything!
JavaScript
9
star
62

go433

Send and receive 433 MHz using a RaspberryPi and Go
Go
9
star
63

sockfwd

Forward a unix socket to a tcp socket
Go
9
star
64

vip

An IPv4 addressing Go (golang) module, based on uint32 instead of []byte
Go
8
star
65

ipflare

Find your public IP address according to Cloudflare
Go
8
star
66

node-ssh-http-agent

An HTTP agent for tunnelling through SSH connections
JavaScript
7
star
67

eventsource

An eventsource event encoder in Go (golang)
Go
7
star
68

sizestr

Pretty print byte counts in Go
Go
7
star
69

docker-caddy

Caddy in a docker container, configurable via a simple web UI
Dockerfile
7
star
70

sleep-on-lan

Send your computer to sleep via HTTP
JavaScript
7
star
71

requestlog

Simple request logging in Go (golang)
Go
6
star
72

pnode-store

A synchronized data store between connected Node.js applications
JavaScript
6
star
73

castlebot

🏰 A bot for your castle
Go
5
star
74

docker-vpn

Dockerized SoftEther VPN with a Web GUI
Shell
5
star
75

node-imdb-sort

Sort files based on IMDB data
CoffeeScript
5
star
76

jquery.prompt

Styled text prompts any element
CoffeeScript
5
star
77

gswg-io

Getting Started with Grunt - Homepage
HTML
5
star
78

compilejs

A mini Grunt.js for the browser
CoffeeScript
5
star
79

go-realtime

Keep your Go structs in sync with your JS objects
JavaScript
4
star
80

md-tmpl

Simple markdown templating using shell commands
Go
4
star
81

cookieauth

Cookie-based Basic-Authentication HTTP middleware for Go (golang)
Go
4
star
82

maplock

A map of locks in Go
Go
4
star
83

opts-examples

A Go (golang) package for building frictionless command-line interfaces
Go
4
star
84

go-mime

Extends pkg/mime with embedded mime types
Go
4
star
85

tranquil

Generate powerful RESTful JSON APIs
CoffeeScript
3
star
86

ipmath

IP Address Math in Go (golang)
Go
3
star
87

xtls

TLS utils
Go
3
star
88

puzzler

A programming puzzle framework in Go
Go
3
star
89

goff

Concatenate audio files, built with Go and FFmpeg
Go
3
star
90

prettyprinter

Simple Pretty Printer using Google's Prettify
HTML
3
star
91

github-badge-maker

Github Badge Maker
JavaScript
3
star
92

opts-talk

A talk on opts, for the Sydney Go Meetup
Go
3
star
93

grunt-source-web

A Grunt Source project to build optimized static websites
CoffeeScript
3
star
94

playground

Next version of https://js.jpillora.com
2
star
95

node-king

The king of your nodes - A powerful command and control center for your server infrastructure
JavaScript
2
star
96

bookshelf

Your personal bookshelf
HTML
2
star
97

debator-lander

Interactive and transparent debates online
2
star
98

webscan

Scans the entire Web for particular server types and devices
2
star
99

xmlfmt

A pure Go streaming XML formatter
Go
2
star
100

vigilant

Simple CLI tool for running multiple CLI tools in the same process
JavaScript
2
star