mvtk 0.1.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 39422d93217ceb93db561d5b63948543aab451ed
4
+ data.tar.gz: 93a344296775a2fe2ef62bcf3b324f65ceb663b9
5
+ SHA512:
6
+ metadata.gz: 251892d8400200733ed19356663d731d271e8e65cbdfc2fb9c9b9d356a8140c6a8db830f2aaf6c79523896772a8a63c9070892d5c3287c1c24d3280b7fdb7083
7
+ data.tar.gz: 7ea3a4082bf76d9f3d5ee337a96d4a02e709fea23d133bb715b4fd6685513d93186005d3472ebbda5ec3d837eeb8bc304a05ca506b843b57f928ecc1e4f0e016
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.3
4
+ before_install: gem install bundler -v 1.10.6
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in mvtk.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,38 @@
1
+ # Mvtk
2
+
3
+ This gem install a command `mvtk`, it's not a gem you can use in your software.
4
+
5
+ The goal is simple: take crappy movie filename from a directory and name them the good way for kodi mediacenter using well known scraper.
6
+
7
+ 2 scraper supported at this Time
8
+
9
+ * [media-passion](http://scraper.media-passion.fr/index2.php?Page=Home)
10
+ * [themoviedb.org](https://www.themoviedb.org/)
11
+
12
+ ## Installation
13
+
14
+ $ gem install mvtk
15
+
16
+ Then first launch will create the configuration file in ~/.config/mvtk.conf
17
+
18
+ ## Configuration
19
+
20
+ Edit **~/.config/mvtk.conf**
21
+
22
+ * *scraper* = "themoviedb" or "mediapassion", which scraper you Usage
23
+ * *saga_enable* = enable or not saga subdir
24
+ * *saga_prefix* = a string to prefix saga subdir name (.../terminator/... => .../prefix saganame/...)
25
+ * *source* = source directory to recursively find movie file
26
+ * *target* = directory to copy movie with right name
27
+ * *windows_name* = make created file and folder Microsoft Windows compatible (some characters replace witch _ )
28
+ * *min_movie_time* = Minimum number of minutes to determine if the video file is a movie or a tvshow
29
+
30
+
31
+
32
+ ## Usage
33
+
34
+ just launch `mvtk`
35
+
36
+ ## Contributing
37
+
38
+ Bug reports and pull requests are welcome on GitHub at https://github.com/Celedhrim/mvtk.
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/console ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "mvtk"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+
15
+ CONFFILE="/tmp/test.conf"
16
+ conffile = File.expand_path(CONFFILE)
17
+ $conf = Mvtk.confread(conffile)
18
+
19
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
data/exe/mvtk ADDED
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ #require "bundler/setup"
4
+ require "mvtk"
5
+ require "rbconfig"
6
+
7
+ #no design for windows
8
+ is_windows = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)
9
+ if is_windows then
10
+ puts "Sorry not design for windows"
11
+ exit 1
12
+ end
13
+
14
+ CONFFILE="~/.config/mvtk.conf"
15
+ conffile = File.expand_path(CONFFILE)
16
+
17
+ #Load config file
18
+ $conf = Mvtk.confread(conffile)
19
+
20
+ #doing stuff with config
21
+ $conf["source"] = $conf["source"].chomp("/")
22
+ $conf["target"] = $conf["target"].chomp("/")
23
+
24
+ mchoice = ""
25
+ process_hash = {}
26
+ until mchoice == "proceed" do
27
+ mchoice = Mvtk.mediamenu
28
+ exit if mchoice == "quit"
29
+ next if mchoice == "proceed"
30
+ schoice = ""
31
+ schoice = Mvtk.choosescrap(mchoice)
32
+ process_hash[mchoice] = schoice
33
+ end
34
+
35
+ puts ""
36
+ puts "-"*80
37
+ puts "Processing #{process_hash.length} file(s)"
38
+
39
+ counter = 0
40
+ process_hash.each do |source, destination|
41
+ puts ""
42
+ Mvtk.copy(source, destination)
43
+ counter = counter + 1
44
+ remain = process_hash.length - counter
45
+ if remain != 0 then
46
+ puts ""
47
+ puts "Done ! #{remain} in queue"
48
+ end
49
+ end
50
+
51
+ puts "All done , exit ..."
@@ -0,0 +1,31 @@
1
+ require "iniparse"
2
+
3
+ module Mvtk
4
+
5
+ # create the config
6
+ def self.confcreate (conffilepath)
7
+ doc = IniParse.gen do |doc|
8
+ doc.section("mvtk") do |mvtk|
9
+ mvtk.option("scraper","mediapassion")
10
+ mvtk.option("saga_enable","true")
11
+ mvtk.option("saga_prefix","1-Saga")
12
+ mvtk.option("source","/home/torrent/finish.seedbox")
13
+ mvtk.option("target","/home/data/Videos/Films")
14
+ mvtk.option("windows_name","true")
15
+ mvtk.option("min_movie_time","60")
16
+ end
17
+ end
18
+ doc.save(conffilepath)
19
+ puts "Conf file created : #{conffilepath}"
20
+ puts "Edit to fit your need then run again"
21
+ #Add exit
22
+ exit
23
+ end
24
+
25
+ # Read the config
26
+ def self.confread (conffilepath)
27
+ confcreate(conffilepath) unless File.exists?(conffilepath)
28
+ IniParse.parse( File.read(conffilepath) )['mvtk']
29
+ end
30
+
31
+ end
data/lib/mvtk/menu.rb ADDED
@@ -0,0 +1,58 @@
1
+ require 'tty-prompt'
2
+ require 'streamio-ffmpeg'
3
+
4
+ module Mvtk
5
+
6
+ def self.mediamenu
7
+ prompt = TTY::Prompt.new
8
+ choices = self.listfiles
9
+ choice = prompt.select("Movie to copy ?", choices)
10
+ end
11
+
12
+ def self.listfiles
13
+ result = Hash.new
14
+ Dir.glob("#{$conf['source']}/**/*.{mkv,mp4,avi}", File::FNM_CASEFOLD).sort.each do |mfile|
15
+ begin
16
+ movie = FFMPEG::Movie.new(mfile)
17
+ next if movie.duration.round/60.to_i < $conf['min_movie_time']
18
+ rescue
19
+ end
20
+ result[File::basename(mfile)] = mfile
21
+ end
22
+ result["[Proceed]"] = "proceed"
23
+ result["[Quit]"] = "quit"
24
+ return result
25
+ end
26
+
27
+ def self.manualscrap
28
+ prompt = TTY::Prompt.new
29
+ answer = prompt.ask("Enter your search terms : ")
30
+ return self.choosescrap(answer)
31
+ end
32
+
33
+ def self.choosescrap(mfile)
34
+ mysearch = File::basename(self::NameCleaner.new(mfile).clean)
35
+ search = []
36
+ while search.empty? and mysearch != nil
37
+ search = self.search(mysearch)
38
+ if search.empty? then
39
+ mysearch = mysearch[/(.*)\s/,1]
40
+ end
41
+ end
42
+
43
+ if search.empty? then
44
+ return self.manualscrap
45
+ end
46
+
47
+ foutput = search.collect { |x| x.split('/')[0]}
48
+ foutput.push("[Manual] (Do a manual search)")
49
+ foutput.push("[Return] (Back to file menu)")
50
+ prompt2 = TTY::Prompt.new
51
+ choice = prompt2.select("Your choice ?", foutput )
52
+ if choice == "[Manual] (Do a manual search)" then
53
+ return self.manualscrap
54
+ end
55
+ result = search.keep_if { |v| v.start_with?(choice) }
56
+ return result.first
57
+ end
58
+ end
@@ -0,0 +1,110 @@
1
+ module Mvtk
2
+
3
+ class NameCleaner
4
+ attr_accessor :raw_name, :clean_name
5
+
6
+ def initialize(raw_name)
7
+ @raw_name = raw_name
8
+ @clean_name = raw_name
9
+ end
10
+
11
+ def clean_punctuation
12
+ punctuation_to_remove = /[\.\[\]\(\)-]/
13
+ @clean_name = @clean_name.gsub(punctuation_to_remove, " ")
14
+ end
15
+
16
+ def remove_release_year
17
+ @clean_name = @clean_name.gsub(release_year.to_s, "")
18
+ end
19
+
20
+ ["filetype"].each do |method|
21
+ define_method "remove_#{method}" do
22
+ extractions = Array(self.send(method))
23
+ extractions.each do |extraction|
24
+ @clean_name = @clean_name.gsub(extraction, "")
25
+ end
26
+ end
27
+ end
28
+
29
+ ["video_types"].each do |method|
30
+ remove_method_name = :"remove_#{method}"
31
+ terms_method_name = :"#{method}_terms"
32
+
33
+ define_method remove_method_name do
34
+ extraction_indices = Array(self.send(method))
35
+ extraction_indices.each do |extraction_index|
36
+ term = NameCleaner.send(terms_method_name).at(extraction_index)
37
+ @clean_name = @clean_name.gsub(Regexp.new(term[:name], term[:modifier]), "")
38
+ end
39
+ end
40
+ end
41
+
42
+ def remove_whitespace
43
+ @clean_name = @clean_name.gsub(/\s+/, " ")
44
+ @clean_name = @clean_name.strip
45
+ end
46
+
47
+ def clean
48
+ remove_release_year
49
+ remove_video_types
50
+ remove_filetype
51
+ clean_punctuation
52
+ remove_whitespace
53
+ end
54
+
55
+ def release_year
56
+ year_matches = @raw_name.scan(/(\d{4})/).flatten
57
+ two_years_from_now= Time.now.strftime("%Y").to_i + 2
58
+
59
+ year_matches = year_matches.map { |year_match|
60
+ year = year_match.to_i
61
+ }.select { |year_match|
62
+ (1895..two_years_from_now).include? year_match
63
+ }
64
+
65
+ year_matches.first if year_matches.size == 1
66
+ end
67
+
68
+ def self.video_types_terms
69
+ [
70
+ { :name => "dvdrip", :modifier => Regexp::IGNORECASE },
71
+ { :name => "xvid", :modifier => Regexp::IGNORECASE },
72
+ { :name => "720p", :modifier => Regexp::IGNORECASE },
73
+ { :name => "1080p", :modifier => Regexp::IGNORECASE },
74
+ { :name => "x264", :modifier => Regexp::IGNORECASE },
75
+ { :name => "bluray", :modifier => Regexp::IGNORECASE },
76
+ { :name => "bdrip", :modifier => Regexp::IGNORECASE },
77
+ { :name => "multi", :modifier => Regexp::IGNORECASE },
78
+ { :name => "repack", :modifier => Regexp::IGNORECASE },
79
+ { :name => "aac", :modifier => Regexp::IGNORECASE },
80
+ { :name => "5.1", :modifier => Regexp::IGNORECASE },
81
+ { :name => "ac3", :modifier => Regexp::IGNORECASE },
82
+ { :name => "DTS", :modifier => Regexp::IGNORECASE },
83
+ { :name => "truefrench", :modifier => Regexp::IGNORECASE },
84
+ { :name => "french", :modifier => Regexp::IGNORECASE },
85
+ { :name => "www.cpasbien.io", :modifier => Regexp::IGNORECASE }
86
+ ]
87
+ end
88
+
89
+ def video_types
90
+ video_type = []
91
+
92
+ NameCleaner.video_types_terms.each_with_index do |term, index|
93
+ regexp = term[:name]
94
+ modifier = term[:modifier]
95
+ video_type << index if @raw_name.match Regexp.new regexp, modifier # case insensitive
96
+ end
97
+
98
+ video_type
99
+ end
100
+
101
+ def filetype
102
+ filetypes = ["avi", "mp4", "mkv"]
103
+ filetypes.find do |filetype|
104
+ regexp = Regexp.new "\.#{filetype}"
105
+ @raw_name.match regexp
106
+ end
107
+ end
108
+ end
109
+
110
+ end
@@ -0,0 +1,60 @@
1
+ require 'ruby-progressbar'
2
+ require 'filesize'
3
+
4
+ module Mvtk
5
+
6
+ def self.winname(fullpath)
7
+ charfilter = /[\<\>\:\"\|\?\*]/
8
+ return fullpath.gsub(charfilter,'_')
9
+ end
10
+
11
+ def self.fulldest(source, destination)
12
+ movie_file = "#{destination.split('/')[0][0..-8]}#{File.extname(source)}"
13
+ movie_file = self.winname(movie_file) if $conf["windows_name"]
14
+ movie_dir = destination.split('/')[0]
15
+ movie_dir = self.winname(movie_dir) if $conf["windows_name"]
16
+
17
+ if $conf["saga_enable"] and destination.split('/')[1] then
18
+ saga = "#{$conf["saga_prefix"]} #{destination.split('/')[1]}"
19
+ saga = self.winname(saga) if $conf["windows_name"]
20
+ fullpath = "#{$conf["target"]}/#{saga}/#{movie_dir}/#{movie_file}"
21
+ else
22
+ fullpath = "#{$conf["target"]}/#{movie_dir}/#{movie_file}"
23
+ end
24
+
25
+ return fullpath
26
+ end
27
+
28
+ def self.copy_progressbar(in_name, out_name)
29
+ in_file = File.new(in_name, "r")
30
+ out_file = File.new(out_name, "w")
31
+
32
+ in_size = File.size(in_name)
33
+ batch_bytes = ( in_size / 100 ).ceil
34
+ total = 0
35
+ p_bar = ProgressBar.create(:length => 80, :format => '%e |%b>%i| %p%% %t')
36
+
37
+ buffer = in_file.sysread(batch_bytes)
38
+ while total < in_size do
39
+ out_file.syswrite(buffer)
40
+ p_bar.progress += 1 unless p_bar.progress >= 100
41
+ total += batch_bytes
42
+ if (in_size - total) < batch_bytes
43
+ batch_bytes = (in_size - total)
44
+ end
45
+ buffer = in_file.sysread(batch_bytes)
46
+ end
47
+ p_bar.finish
48
+ end
49
+
50
+ def self.copy(source, destination)
51
+ finalpath = self.fulldest(source, destination)
52
+ puts "Source => #{File::basename(source)}"
53
+ puts "Target => #{finalpath.sub($conf["target"]+"/","")}"
54
+ puts "Size => #{Filesize.from(File.size(source).to_s + "B").pretty}"
55
+ puts ""
56
+
57
+ FileUtils.mkdir_p File.dirname(finalpath) unless File.directory?(File.dirname(finalpath))
58
+ self.copy_progressbar(source, finalpath)
59
+ end
60
+ end
@@ -0,0 +1,53 @@
1
+ require 'nokogiri'
2
+ require 'open-uri'
3
+ require 'uri'
4
+
5
+ module Mvtk
6
+
7
+ def self.mediapassion(moviename)
8
+ result = []
9
+ searchresult = Nokogiri::HTML(open("http://passion-xbmc.org/scraper/ajax.php?Ajax=Search&Title=#{URI.escape(moviename.tr(' ', '+'))}"), nil , 'UTF-8')
10
+ searchresult.css('a').take(10).each do |link|
11
+ mtitle = link.content.tr('[', '(').tr(']', ')')
12
+ detailpage = Nokogiri::HTML(open("http://passion-xbmc.org/scraper/#{link['href']}"))
13
+ msaga = detailpage.css("#sagaWrapper").css('p').text[5..-1]
14
+ unless msaga.nil? then
15
+ result.push("#{mtitle}/#{msaga.rstrip.lstrip}")
16
+ else
17
+ result.push("#{mtitle}/")
18
+ end
19
+ end
20
+ return result
21
+ end
22
+
23
+ def self.themoviedb(moviename)
24
+ result = []
25
+ searchresult = Nokogiri::HTML(open("https://www.themoviedb.org/search?query=#{URI.escape(moviename.tr(' ', '+'))}"), nil , 'UTF-8')
26
+ searchresult.css("div.info").take(10).each do |link|
27
+ msage = nil
28
+ myear = link.css('span.release_date').text.split("/")[2].strip
29
+ mtitle = "#{link.css('a').first.content} (#{myear})"
30
+ detailpage = Nokogiri::HTML(open("https://www.themoviedb.org#{link.css('a').first['href']}"))
31
+ msaga = detailpage.at('p:contains("Part of the")').css('a').text if detailpage.at('p:contains("Part of the")')
32
+ unless msaga.nil? then
33
+ result.push("#{mtitle}/#{msaga}")
34
+ else
35
+ result.push("#{mtitle}/")
36
+ end
37
+ end
38
+ return result
39
+ end
40
+
41
+ def self.search (moviename)
42
+ if $conf['scraper'] == "mediapassion" then
43
+ result = self.mediapassion(moviename)
44
+ elsif $conf['scraper'] == "themoviedb" then
45
+ result = self.themoviedb(moviename)
46
+ else
47
+ puts "Sorry #{$conf['scraper']} is not a valid scraper"
48
+ exit 1
49
+ end
50
+ return result
51
+ end
52
+
53
+ end
@@ -0,0 +1,3 @@
1
+ module Mvtk
2
+ VERSION = "0.1.0"
3
+ end
data/lib/mvtk.rb ADDED
@@ -0,0 +1,10 @@
1
+ require "mvtk/version"
2
+ require "mvtk/config"
3
+ require "mvtk/search"
4
+ require "mvtk/namecleaner"
5
+ require "mvtk/menu"
6
+ require "mvtk/proceed"
7
+
8
+ module Mvtk
9
+
10
+ end
data/mvtk.gemspec ADDED
@@ -0,0 +1,38 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'mvtk/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "mvtk"
8
+ spec.version = Mvtk::VERSION
9
+ spec.authors = ["Celedhrim"]
10
+ spec.email = ["celed+gitlab@ielf.org"]
11
+
12
+ spec.summary = %q{Copy movie with right kodi naming.}
13
+ spec.description = %q{Take movie in a directory , copy them to another with naming from mediapassion or themoviedb.}
14
+ spec.homepage = "https://github.com/Celedhrim/mvtk"
15
+
16
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
17
+ # delete this section to allow pushing this gem to any host.
18
+ if spec.respond_to?(:metadata)
19
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
20
+ else
21
+ raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
22
+ end
23
+
24
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
+ spec.bindir = "exe"
26
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
+ spec.require_paths = ["lib"]
28
+
29
+ spec.add_dependency "iniparse", ">= 1.4.1"
30
+ spec.add_dependency "nokogiri", ">= 1.6.6.4"
31
+ spec.add_dependency "tty-prompt", ">= 0.2.0"
32
+ spec.add_dependency "ruby-progressbar", ">= 1.7.5"
33
+ spec.add_dependency "filesize", "~> 0.1.1"
34
+ spec.add_dependency "streamio-ffmpeg", ">= 1.0"
35
+
36
+ spec.add_development_dependency "bundler", "~> 1.10"
37
+ spec.add_development_dependency "rake", "~> 10.0"
38
+ end
metadata ADDED
@@ -0,0 +1,174 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mvtk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Celedhrim
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-12-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: iniparse
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.4.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.4.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: nokogiri
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.6.6.4
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.6.6.4
41
+ - !ruby/object:Gem::Dependency
42
+ name: tty-prompt
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 0.2.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.2.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: ruby-progressbar
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 1.7.5
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 1.7.5
69
+ - !ruby/object:Gem::Dependency
70
+ name: filesize
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.1.1
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.1.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: streamio-ffmpeg
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '1.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '1.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: bundler
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.10'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.10'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '10.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '10.0'
125
+ description: Take movie in a directory , copy them to another with naming from mediapassion
126
+ or themoviedb.
127
+ email:
128
+ - celed+gitlab@ielf.org
129
+ executables:
130
+ - mvtk
131
+ extensions: []
132
+ extra_rdoc_files: []
133
+ files:
134
+ - ".gitignore"
135
+ - ".travis.yml"
136
+ - Gemfile
137
+ - README.md
138
+ - Rakefile
139
+ - bin/console
140
+ - bin/setup
141
+ - exe/mvtk
142
+ - lib/mvtk.rb
143
+ - lib/mvtk/config.rb
144
+ - lib/mvtk/menu.rb
145
+ - lib/mvtk/namecleaner.rb
146
+ - lib/mvtk/proceed.rb
147
+ - lib/mvtk/search.rb
148
+ - lib/mvtk/version.rb
149
+ - mvtk.gemspec
150
+ homepage: https://github.com/Celedhrim/mvtk
151
+ licenses: []
152
+ metadata:
153
+ allowed_push_host: https://rubygems.org
154
+ post_install_message:
155
+ rdoc_options: []
156
+ require_paths:
157
+ - lib
158
+ required_ruby_version: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ required_rubygems_version: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ requirements: []
169
+ rubyforge_project:
170
+ rubygems_version: 2.4.5.1
171
+ signing_key:
172
+ specification_version: 4
173
+ summary: Copy movie with right kodi naming.
174
+ test_files: []