mvtk 0.1.0

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