media-runner 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +13 -3
- data/lib/media/runner.rb +18 -21
- data/lib/media/runner/app/args_sanitizer.rb +15 -4
- data/lib/media/runner/app/file_check.rb +12 -9
- data/lib/media/runner/app/media_paths.rb +14 -10
- data/lib/media/runner/app/vlc_check.rb +0 -2
- data/lib/media/runner/episode.rb +36 -0
- data/lib/media/runner/movie.rb +30 -0
- data/lib/media/runner/version.rb +1 -1
- data/media-runner.gemspec +2 -2
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 640e7450dd33ff8a2508ab3fe70d9879dc5de2b2
|
4
|
+
data.tar.gz: d8463dd431264db98e872ed5edbca742163adb6a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df1c86c99af01f13017a542331667ea884afea4bb7af0d2e2ec0f2ed797b27220bccedee35ba8fcc378e12938c0a6a5c347cffce40e2d8fb6ee6e3e6e757f903
|
7
|
+
data.tar.gz: a87674196ef3e944788432d5983c42a707e0c250e6f172b82b2675ab569c78b6b1c04d4dca5f2bda3b3df74010136ed732b5666e1f586091d6e9e15e97a38c4f
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Media::Runner
|
2
2
|
|
3
|
-
MediaRunner is a simple command line interface for OSX that helps you run your series conveniently in VLC media player.
|
3
|
+
MediaRunner is a simple command line interface for OSX that helps you run your series and movies conveniently in VLC media player.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -10,7 +10,9 @@ gem install media-runner
|
|
10
10
|
|
11
11
|
## Usage
|
12
12
|
|
13
|
-
Be sure that you have your series stored like this `/Users/#{whoami}/Movies/series/SERIESNAME/EPISODENAME`.
|
13
|
+
Be sure that you have your series stored like this `/Users/#{whoami}/Movies/series/SERIESNAME/EPISODENAME`, and your movies like this `/Users/#{whoami}/Movies/movies/MOVIENAME`.
|
14
|
+
|
15
|
+
### Run series
|
14
16
|
|
15
17
|
Lets say you have `/Users/#{whoami}/Movies/series/gameofthrones/101.mp4`, then you can run it like this:
|
16
18
|
|
@@ -18,9 +20,17 @@ Lets say you have `/Users/#{whoami}/Movies/series/gameofthrones/101.mp4`, then y
|
|
18
20
|
media-runner series gameofthrones 101
|
19
21
|
```
|
20
22
|
|
23
|
+
### Run movie
|
24
|
+
|
25
|
+
Lets say you have `/Users/#{whoami}/Movies/movie/thegreatgatsby.mp4`, then you can run it like this:
|
26
|
+
|
27
|
+
```
|
28
|
+
media-runner movie thegreatgatsby
|
29
|
+
```
|
30
|
+
|
21
31
|
## Development
|
22
32
|
|
23
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `
|
33
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, you can run `bin/check` to run the tests and the code linters. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
24
34
|
|
25
35
|
To install this gem onto your local machine, run `bundle exec rake install`.
|
26
36
|
|
data/lib/media/runner.rb
CHANGED
@@ -2,15 +2,17 @@
|
|
2
2
|
|
3
3
|
require 'media/runner/version'
|
4
4
|
require 'rubygems'
|
5
|
+
require 'media/runner/printer'
|
6
|
+
require 'media/runner/episode'
|
7
|
+
require 'media/runner/movie'
|
5
8
|
require 'media/runner/app/args_sanitizer'
|
6
9
|
require 'media/runner/app/file_check'
|
7
10
|
require 'media/runner/app/media_paths'
|
8
11
|
require 'media/runner/app/vlc_check'
|
9
|
-
require 'media/runner/printer'
|
10
12
|
|
11
13
|
module Media
|
12
14
|
class Run
|
13
|
-
include ArgsSanitizer
|
15
|
+
include ArgsSanitizer
|
14
16
|
|
15
17
|
def start
|
16
18
|
require 'commander/import'
|
@@ -23,26 +25,21 @@ module Media
|
|
23
25
|
c.description = 'You can pass the an episode number and a series and run it with VLC.'
|
24
26
|
c.example 'Run episode 1 of season 1 of Game of Thrones', 'media-runner series gameofthrones 101'
|
25
27
|
c.action do |args|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
exit 1
|
32
|
-
end
|
33
|
-
|
34
|
-
unless episode_exists?(media[:series], media[:episode])
|
35
|
-
Media::Printer.output ["Episode #{media[:episode]} was not found in #{media[:series]}."]
|
36
|
-
exit 1
|
37
|
-
end
|
38
|
-
|
39
|
-
format = episode_format(media[:series], media[:episode])
|
40
|
-
vlc_installed?
|
28
|
+
attributes = sanitize_series_args(args)
|
29
|
+
episode = Episode.new(attributes[:series], attributes[:title])
|
30
|
+
episode.run
|
31
|
+
end
|
32
|
+
end
|
41
33
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
34
|
+
command :movie do |c|
|
35
|
+
c.syntax = 'media-runner movie MOVIENAME'
|
36
|
+
c.summary = 'run a movie'
|
37
|
+
c.description = 'You can pass the name of a movie and run it with VLC.'
|
38
|
+
c.example 'Run The Great Gatsby', 'media-runner movie thegreatgatsby'
|
39
|
+
c.action do |args|
|
40
|
+
attributes = sanitize_movie_args(args)
|
41
|
+
movie = Movie.new(attributes[:title])
|
42
|
+
movie.run
|
46
43
|
end
|
47
44
|
end
|
48
45
|
end
|
@@ -1,13 +1,24 @@
|
|
1
|
-
require 'media/runner/printer'
|
2
|
-
|
3
1
|
module ArgsSanitizer
|
4
|
-
|
2
|
+
# Series
|
3
|
+
|
4
|
+
def sanitize_series_args(args)
|
5
5
|
if args.count != 2
|
6
6
|
Media::Printer.output ['Wrong number of arguments.',
|
7
7
|
'Correct usage: media-runner series SERIES_FOLDER_NAME EPISODE_NUMBER']
|
8
8
|
exit 1
|
9
9
|
else
|
10
|
-
{ series: args[0],
|
10
|
+
{ series: args[0], title: args[1] }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# Movies
|
15
|
+
|
16
|
+
def sanitize_movie_args(args)
|
17
|
+
if args.count != 1
|
18
|
+
Media::Printer.output ['Wrong number of arguments.', 'Correct usage: media-runner movie MOVIE_NAME']
|
19
|
+
exit 1
|
20
|
+
else
|
21
|
+
{ title: args[0] }
|
11
22
|
end
|
12
23
|
end
|
13
24
|
end
|
@@ -1,26 +1,29 @@
|
|
1
|
-
require 'media/runner/app/media_paths'
|
2
|
-
|
3
1
|
module FileCheck
|
4
|
-
|
2
|
+
# Series
|
5
3
|
|
6
|
-
def series_exists?(
|
7
|
-
if File.directory? series_path(
|
4
|
+
def series_exists?(episode)
|
5
|
+
if File.directory? series_path(episode)
|
8
6
|
true
|
9
7
|
else
|
10
8
|
false
|
11
9
|
end
|
12
10
|
end
|
13
11
|
|
14
|
-
def episode_exists?(
|
12
|
+
def episode_exists?(episode)
|
15
13
|
[:mkv, :mp4, :avi].each do |format|
|
16
|
-
|
14
|
+
episode.format = format
|
15
|
+
return true if File.file? episode_path(episode)
|
17
16
|
end
|
18
17
|
false
|
19
18
|
end
|
20
19
|
|
21
|
-
|
20
|
+
# Movies
|
21
|
+
|
22
|
+
def movie_exists?(movie)
|
22
23
|
[:mkv, :mp4, :avi].each do |format|
|
23
|
-
|
24
|
+
movie.format = format
|
25
|
+
return true if File.file? movie_path(movie)
|
24
26
|
end
|
27
|
+
false
|
25
28
|
end
|
26
29
|
end
|
@@ -2,25 +2,29 @@ module MediaPaths
|
|
2
2
|
SERIES_BASE = "#{Dir.home}/Movies/series".freeze
|
3
3
|
MOVIES_BASE = "#{Dir.home}/Movies/movies".freeze
|
4
4
|
|
5
|
-
|
6
|
-
nil unless movie
|
7
|
-
"#{MOVIES_BASE}/#{movie}"
|
8
|
-
end
|
5
|
+
# Series
|
9
6
|
|
10
|
-
def series_path(
|
11
|
-
nil unless
|
12
|
-
"#{SERIES_BASE}/#{series}"
|
7
|
+
def series_path(episode)
|
8
|
+
nil unless episode
|
9
|
+
"#{SERIES_BASE}/#{episode.series}"
|
13
10
|
end
|
14
11
|
|
15
|
-
def episode_path(
|
16
|
-
nil unless
|
17
|
-
"#{series_path(
|
12
|
+
def episode_path(episode)
|
13
|
+
nil unless episode
|
14
|
+
"#{series_path(episode)}/#{episode.title}.#{episode.format}"
|
18
15
|
end
|
19
16
|
|
20
17
|
def series_base
|
21
18
|
SERIES_BASE
|
22
19
|
end
|
23
20
|
|
21
|
+
# Movies
|
22
|
+
|
23
|
+
def movie_path(movie)
|
24
|
+
nil unless movie
|
25
|
+
"#{MOVIES_BASE}/#{movie.title}.#{movie.format}"
|
26
|
+
end
|
27
|
+
|
24
28
|
def movies_base
|
25
29
|
MOVIES_BASE
|
26
30
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'media/runner/app/file_check'
|
2
|
+
require 'media/runner/app/media_paths'
|
3
|
+
require 'media/runner/app/vlc_check'
|
4
|
+
|
5
|
+
module Media
|
6
|
+
class Episode
|
7
|
+
include FileCheck, VlcCheck, MediaPaths
|
8
|
+
|
9
|
+
def initialize(series, title, format = nil)
|
10
|
+
@series = series
|
11
|
+
@title = title
|
12
|
+
@format = format
|
13
|
+
end
|
14
|
+
|
15
|
+
attr_accessor :series, :title, :format
|
16
|
+
|
17
|
+
def run
|
18
|
+
vlc_installed?
|
19
|
+
|
20
|
+
unless series_exists?(self)
|
21
|
+
Media::Printer.output ["#{series_path(self)} doesn't exist. Did you type the series name correctly?"]
|
22
|
+
exit 1
|
23
|
+
end
|
24
|
+
|
25
|
+
unless episode_exists?(self)
|
26
|
+
Media::Printer.output ["Episode #{title} was not found in #{series}."]
|
27
|
+
exit 1
|
28
|
+
end
|
29
|
+
|
30
|
+
Media::Printer.output ["Playing episode #{title} from #{series}. ENJOY!"]
|
31
|
+
`zsh -c "#{Dir.home}/Applications/VLC.app/Contents/MacOS/VLC --fullscreen #{episode_path(self)} > /dev/null \
|
32
|
+
2>&1 &!"`
|
33
|
+
exit 0
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'media/runner/app/file_check'
|
2
|
+
require 'media/runner/app/media_paths'
|
3
|
+
require 'media/runner/app/vlc_check'
|
4
|
+
|
5
|
+
module Media
|
6
|
+
class Movie
|
7
|
+
include FileCheck, VlcCheck, MediaPaths
|
8
|
+
|
9
|
+
def initialize(title, format = nil)
|
10
|
+
@title = title
|
11
|
+
@format = format
|
12
|
+
end
|
13
|
+
|
14
|
+
attr_accessor :title, :format
|
15
|
+
|
16
|
+
def run
|
17
|
+
vlc_installed?
|
18
|
+
|
19
|
+
unless movie_exists?(self)
|
20
|
+
Media::Printer.output ["#{movie_path(self)} doesn't exist. Did you type the movie name correctly?"]
|
21
|
+
exit 1
|
22
|
+
end
|
23
|
+
|
24
|
+
Media::Printer.output ["Playing movie #{title}. ENJOY!"]
|
25
|
+
`zsh -c "#{Dir.home}/Applications/VLC.app/Contents/MacOS/VLC --fullscreen #{movie_path(self)} > /dev/null \
|
26
|
+
2>&1 &!"`
|
27
|
+
exit 0
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/media/runner/version.rb
CHANGED
data/media-runner.gemspec
CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ['Nicolas Eckhart']
|
10
10
|
spec.email = ['nicolas.eckhart@renuo.ch']
|
11
11
|
|
12
|
-
spec.summary = 'Simple ruby based command line interface for running movies, music, etc.'
|
13
|
-
spec.description = 'Simple ruby based command line interface for running movies, music, etc.'
|
12
|
+
spec.summary = 'Simple ruby based command line interface for running movies, series, music, etc.'
|
13
|
+
spec.description = 'Simple ruby based command line interface for running movies, series, music, etc.'
|
14
14
|
spec.homepage = 'https://www.github.com/nicolaseckhart/media_runner'
|
15
15
|
spec.license = 'MIT'
|
16
16
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: media-runner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicolas Eckhart
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: commander
|
@@ -94,7 +94,8 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
-
description: Simple ruby based command line interface for running movies,
|
97
|
+
description: Simple ruby based command line interface for running movies, series,
|
98
|
+
music, etc.
|
98
99
|
email:
|
99
100
|
- nicolas.eckhart@renuo.ch
|
100
101
|
executables:
|
@@ -122,6 +123,8 @@ files:
|
|
122
123
|
- lib/media/runner/app/file_check.rb
|
123
124
|
- lib/media/runner/app/media_paths.rb
|
124
125
|
- lib/media/runner/app/vlc_check.rb
|
126
|
+
- lib/media/runner/episode.rb
|
127
|
+
- lib/media/runner/movie.rb
|
125
128
|
- lib/media/runner/printer.rb
|
126
129
|
- lib/media/runner/version.rb
|
127
130
|
- media-runner.gemspec
|
@@ -148,5 +151,6 @@ rubyforge_project:
|
|
148
151
|
rubygems_version: 2.6.3
|
149
152
|
signing_key:
|
150
153
|
specification_version: 4
|
151
|
-
summary: Simple ruby based command line interface for running movies, music,
|
154
|
+
summary: Simple ruby based command line interface for running movies, series, music,
|
155
|
+
etc.
|
152
156
|
test_files: []
|