myimdb 0.3.5 → 0.3.6
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.
- data/VERSION +1 -1
- data/bin/myimdb-catalogue +70 -33
- data/myimdb.gemspec +1 -1
- metadata +1 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.6
|
data/bin/myimdb-catalogue
CHANGED
@@ -4,6 +4,22 @@ require 'open-uri'
|
|
4
4
|
require 'optparse'
|
5
5
|
require 'myimdb'
|
6
6
|
|
7
|
+
class Platform
|
8
|
+
class << self
|
9
|
+
def windows?
|
10
|
+
RUBY_PLATFORM =~ /mswin|windows/i
|
11
|
+
end
|
12
|
+
|
13
|
+
def mac?
|
14
|
+
RUBY_PLATFORM =~ /darwin/i
|
15
|
+
end
|
16
|
+
|
17
|
+
def linux?
|
18
|
+
RUBY_PLATFORM =~ /linux/i
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
7
23
|
options = {}
|
8
24
|
|
9
25
|
OptionParser.new do |opts|
|
@@ -22,9 +38,15 @@ OptionParser.new do |opts|
|
|
22
38
|
options[:metadata] = true
|
23
39
|
end
|
24
40
|
|
25
|
-
opts.on("-i", "--images", "Generates images (only
|
41
|
+
opts.on("-i", "--images", "Generates images (works properly only on windows)") do
|
26
42
|
options[:images] = true
|
27
43
|
end
|
44
|
+
|
45
|
+
if Platform.windows?
|
46
|
+
opts.on("-r", "--rebuild-permissions", "Rebuilds permissions (useful if the icons have been changed manually)") do
|
47
|
+
options[:'rebuild-permissions'] = true
|
48
|
+
end
|
49
|
+
end
|
28
50
|
|
29
51
|
begin
|
30
52
|
opts.parse!(ARGV)
|
@@ -43,47 +65,65 @@ if ARGV.empty?
|
|
43
65
|
abort "Source directory required - exiting"
|
44
66
|
end
|
45
67
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
68
|
+
file_paths = Dir["#{ARGV[0]}/*"]
|
69
|
+
|
70
|
+
|
71
|
+
# helper methods
|
72
|
+
def conf_file_name
|
73
|
+
'desktop.ini'
|
74
|
+
end
|
75
|
+
|
76
|
+
def icon_file_path
|
77
|
+
if Platform.windows?
|
78
|
+
'movie.ico'
|
79
|
+
else
|
80
|
+
'movie.png'
|
59
81
|
end
|
60
82
|
end
|
61
83
|
|
62
|
-
|
84
|
+
def filtered_movie_name(name)
|
85
|
+
name.gsub(/\[.*?\]/,'').strip
|
86
|
+
end
|
87
|
+
|
88
|
+
def filtered_movie_year(name)
|
89
|
+
name.scan(/\[(\d+)\]/).flatten.first
|
90
|
+
end
|
91
|
+
# helper methods - end
|
92
|
+
|
93
|
+
def repair_permissions_for(target_dir)
|
94
|
+
conf_file_path = File.join(target_dir, conf_file_name)
|
95
|
+
File.delete(conf_file_path) if File.exists?(conf_file_path)
|
96
|
+
|
97
|
+
File.open(conf_file_path, 'wb') do |conf|
|
98
|
+
conf.puts "[.ShellClassInfo]"
|
99
|
+
conf.puts "IconResource=movie.ico,0"
|
100
|
+
end
|
101
|
+
|
102
|
+
`attrib -s +h "#{conf_file_path}"`
|
103
|
+
`attrib -r "#{target_dir}"`
|
104
|
+
`attrib +r "#{target_dir}"`
|
105
|
+
end
|
106
|
+
|
107
|
+
def convert_to_icon(image_file_path, icon_file_path)
|
108
|
+
`convert "#{image_file_path}" -thumbnail 256x256 -gravity center -crop 256x256+0+0! -background transparent -flatten "#{File.join(target_dir, '#{icon_file_path}')}"`
|
109
|
+
end
|
63
110
|
|
64
111
|
def save_image(target_dir, name, image_index=0)
|
65
112
|
image_data = Myimdb::Search::Google.search_images(name, :size=> 'medium')[image_index]
|
66
113
|
image_url = image_data["url"] if image_data
|
114
|
+
|
67
115
|
if image_url
|
68
116
|
image_file_path = File.join(target_dir, 'movie.jpg')
|
69
|
-
conf_file_path = File.join(target_dir, 'desktop.ini')
|
70
117
|
open(image_url) do |file|
|
71
118
|
File.open(image_file_path, 'wb') do |image_file|
|
72
119
|
image_file.puts file.read
|
73
120
|
end
|
74
121
|
end
|
75
122
|
|
76
|
-
|
123
|
+
convert_to_icon(image_file_path, icon_file_path)
|
77
124
|
|
78
125
|
if Platform.windows?
|
79
|
-
|
80
|
-
File.open(conf_file_path, 'wb') do |conf|
|
81
|
-
conf.puts "[.ShellClassInfo]"
|
82
|
-
conf.puts "IconResource=movie.ico,0"
|
83
|
-
end
|
84
|
-
`attrib -s +h "#{conf_file_path}"`
|
85
|
-
`attrib -r "#{target_dir}"`
|
86
|
-
`attrib +r "#{target_dir}"`
|
126
|
+
repair_permissions_for(target_dir)
|
87
127
|
end
|
88
128
|
|
89
129
|
File.delete(image_file_path)
|
@@ -103,14 +143,6 @@ def generate_metadata(path, name)
|
|
103
143
|
new_path
|
104
144
|
end
|
105
145
|
|
106
|
-
def filtered_movie_name(name)
|
107
|
-
name.gsub(/\[.*?\]/,'').strip
|
108
|
-
end
|
109
|
-
|
110
|
-
def filtered_movie_year(name)
|
111
|
-
name.scan(/\[(\d+)\]/).flatten.first
|
112
|
-
end
|
113
|
-
|
114
146
|
|
115
147
|
image_retry_limit = 2
|
116
148
|
|
@@ -119,6 +151,7 @@ file_paths.each do |path|
|
|
119
151
|
metadata_present = false
|
120
152
|
|
121
153
|
next if !File.directory?(path)
|
154
|
+
|
122
155
|
begin
|
123
156
|
name = File.basename(path)
|
124
157
|
|
@@ -145,6 +178,10 @@ file_paths.each do |path|
|
|
145
178
|
retry_count < image_retry_limit ? retry : raise
|
146
179
|
end
|
147
180
|
end
|
181
|
+
|
182
|
+
if options[:'rebuild-permissions']
|
183
|
+
repair_permissions_for(path)
|
184
|
+
end
|
148
185
|
rescue
|
149
186
|
p "Unable to fetch details for: #{name}"
|
150
187
|
end
|
data/myimdb.gemspec
CHANGED