support no identify and no transcode/mencoder
authorgc <gc>
Sun, 18 Sep 2005 20:43:44 +0000 (20:43 +0000)
committergc <gc>
Sun, 18 Sep 2005 20:43:44 +0000 (20:43 +0000)
INSTALL
bin/booh
bin/booh-backend
lib/booh/booh-lib.rb

diff --git a/INSTALL b/INSTALL
index 802ee01..9230988 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -14,10 +14,12 @@ This software requires for compiling:
 
 And for runtime:
 
-- exif (the binary - coming from http://sourceforge.net/projects/libexif)
-- convert/identify (from ImageMagick)
-- transcode (not strictly needed if you won't manipulate any video)
-- mencoder (id.)
+- convert (from ImageMagick)
+
+For runtime, not strictly needed but nice to have:
+
+- identify (from ImageMagick)
+- transcode and mencoder (not strictly needed if you won't manipulate any video)
 
 
         Compiling and Installing Quick Start
index 325205a..63729b7 100755 (executable)
--- a/bin/booh
+++ b/bin/booh
@@ -109,6 +109,20 @@ def read_config
 end
 
 def check_config
+    if !system("which convert >/dev/null 2>/dev/null")
+        show_popup($main_window, utf8(_("The program 'convert' is needed. Please install it.
+It is generally available with the 'ImageMagick' software package.")), { :pos_centered => true })
+        exit 1
+    end
+    if !system("which identify >/dev/null 2>/dev/null")
+        show_popup($main_window, utf8(_("The program 'identify' is needed to get images sizes and EXIF data. Please install it.
+It is generally available with the 'ImageMagick' software package.")), { :pos_centered => true })
+    end
+    missing = %w(transcode mencoder).delete_if { |prg| system("which #{prg} >/dev/null 2>/dev/null") }
+    if missing != []
+        show_popup($main_window, utf8(_("The following program(s) are needed to handle videos: '%s'. Videos will be ignored.") % missing.join(', ')), { :pos_centered => true })
+    end
+
     viewer_binary = $config['video-viewer'].split.first
     if viewer_binary && !File.executable?(viewer_binary)
         show_popup($main_window, utf8(_("The configured video viewer seems to be unavailable.
index 83aa16a..d6d18ae 100755 (executable)
@@ -36,8 +36,6 @@ $options = [
     [ '--help',          '-h', GetoptLong::NO_ARGUMENT,       _("Get help message") ],
     [ '--version',       '-V', GetoptLong::NO_ARGUMENT,       _("Print version and exit") ],
 
-    [ '--no-check',      '-n', GetoptLong::NO_ARGUMENT,       _("Don't check for needed external programs at startup") ],
-
     [ '--source',        '-s', GetoptLong::REQUIRED_ARGUMENT, _("Directory which contains original images/videos as files or subdirs") ],
     [ '--destination',   '-d', GetoptLong::REQUIRED_ARGUMENT, _("Directory which will contain the web-album") ],
 #    [ '--clean',         '-c', GetoptLong::NO_ARGUMENT,       _("Clean destination directory") ],
@@ -94,9 +92,6 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.") %
 
                 exit(0)
 
-            when '--no-check'
-                $no_check = true
-
             when '--source'
                 $source = File.expand_path(arg.sub(%r|/$|, ''))
                 if !File.directory?($source)
@@ -291,12 +286,19 @@ def info(value)
 end
 
 def check_installation
-    if $no_check
-        return
+    if !system("which convert >/dev/null 2>/dev/null")
+        die _("The program 'convert' is needed. Please install it.
+It is generally available with the 'ImageMagick' software package.")
+    end
+    if !system("which identify >/dev/null 2>/dev/null")
+        msg 1, _("The program 'identify' is needed to get images sizes and EXIF data. Please install it.
+It is generally available with the 'ImageMagick' software package.")
+        $no_identify = true
     end
-    missing = %w(convert identify exif transcode mencoder).delete_if { |prg| system("which #{prg} >/dev/null 2>/dev/null") }
+    missing = %w(transcode mencoder).delete_if { |prg| system("which #{prg} >/dev/null 2>/dev/null") }
     if missing != []
-        die _("The following programs are typically needed: `%s'. Re-run with --no-check if you're sure you're fine without them.") % missing.join(', ')
+        msg 1, _("The following program(s) are needed to handle videos: '%s'. Videos will be ignored.") % missing.join(', ')
+        $ignore_videos = true
     end
 end
 
@@ -305,7 +307,7 @@ def replace_line(surround, keyword, line)
         contents = eval "$#{keyword}"
         line.sub!(/#{surround}#{keyword}#{surround}/, contents)
     rescue TypeError
-        die _("No `%s' found for substitution") % keyword
+        die _("No '%s' found for substitution") % keyword
     end
 end
 
index e2b4d80..fe89dfe 100644 (file)
@@ -89,7 +89,7 @@ module Booh
 
     def select_theme(name, limit_sizes, optimizefor32, nperrow)
         $theme = name
-        msg 3, _("Selecting theme `%s'") % $theme
+        msg 3, _("Selecting theme '%s'") % $theme
         themedir = "#{$FPATH}/themes/#{$theme}"
         if !File.directory?(themedir)
             die _("Theme was not found (tried %s directory).") % themedir
@@ -132,7 +132,7 @@ module Booh
     def entry2type(entry)
         if entry =~ /\.(jpg|jpeg|jpe|gif|bmp|png)$/i && entry !~ /['"\[\]]/
             return 'image'
-        elsif entry =~ /\.(mov|avi|mpg|mpeg|mpe|wmv|asx|3gp|mp4)$/i && entry !~ /['"\[\]]/
+        elsif !$ignore_videos && entry =~ /\.(mov|avi|mpg|mpeg|mpe|wmv|asx|3gp|mp4)$/i && entry !~ /['"\[\]]/
             #- might consider using file magic later..
             return 'video'
         else
@@ -189,7 +189,7 @@ module Booh
     end
 
     def get_image_size(fullpath)
-        if `identify '#{fullpath}'` =~ / JPEG (\d+)x(\d+) /
+        if !$no_identify && `identify '#{fullpath}'` =~ / JPEG (\d+)x(\d+) /
             return { :x => $1.to_i, :y => $2.to_i }
         else
             return nil
@@ -272,14 +272,7 @@ module Booh
             for dest in dests
                 if !File.exists?(dest['filename'])
                     cmd = nil
-                    #- don't resize if image is already smaller than destination size
-                    if size = get_image_size(orig)
-                        dest['size'] =~ /(\d+)x(\d+)/
-                        if (rotate == "90" || rotate == "270" || size[:x] < size[:y]) ? size[:y] < $1.to_i : size[:x] < $1.to_i
-                            cmd = "#{$convert} #{convert_options} '#{orig}' '#{dest['filename']}'"
-                        end
-                    end
-                    cmd ||= "#{$convert} #{convert_options}-size #{dest['size']} -resize #{dest['size']} '#{orig}' '#{dest['filename']}'"
+                    cmd ||= "#{$convert} #{convert_options}-size #{dest['size']} -resize '#{dest['size']}>' '#{orig}' '#{dest['filename']}'"
                     if allow_background
                         psys(cmd)
                     else