media-runner 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|