source: client/bin/gbr @ 9fdf4a1

debianmacno-cups
Last change on this file since 9fdf4a1 was 9fdf4a1, checked in by Kyle Brogle <broglek@…>, 14 years ago

Fixed gbq bug with uninitialized values resulting from having an Artist but
no Title tag

Added more helpful error messages to gb{q,r,rm} when they can't contact the queue

  • Property mode set to 100755
File size: 1.6 KB
Line 
1#!/usr/bin/perl
2
3# Written by Jessica Hamrick (C) 2010
4
5use strict;
6use warnings;
7
8use Net::CUPS;
9use Net::CUPS::Destination;
10use Image::ExifTool qw(ImageInfo);
11
12my $usage = "Usage: gbr QUEUE FILES\n";
13
14my $q = $ARGV[0];
15my @files = @ARGV[1 .. $#ARGV];
16
17if (!$q or !@files) {
18    print $usage;
19    exit 1
20}
21
22my $configpath = "$ENV{'HOME'}/.gutenbach/$q";
23if (! -e $configpath) {
24    print "Queue '$q' does not exist!  Did you forget to add it with 'gutenbach-client-config'?\n";
25    exit 1;
26}
27
28my ($host, $queue);
29
30if (-r $configpath) {
31    local $/;
32    my $fh;
33    open $fh, $configpath;
34    eval <$fh>;
35}
36
37my $cups = Net::CUPS->new();
38$cups->setServer("$host");
39my $printer = $cups->getDestination("$queue");
40unless( $printer){
41    print "Cannot access queue $q...do you have network connectivity and permission to view the queue?\n";
42    exit 1;
43}
44my ($jobid, $title);
45
46foreach my $file(@files) {
47    if ($file =~ m|http://www\.youtube\.com/watch\?v=|) {
48        open FILE, ">", "/tmp/gutenbach-youtube\n" or die "Couldn't create temporary file";
49        print FILE $file;
50        $title = $file;
51        $file = "/tmp/gutenbach-youtube";
52        $printer->addOption("copies", 42);
53    }
54    else {
55        my $fileinfo = ImageInfo($file);
56        my $magic = $fileinfo->{FileType};
57
58        if ($magic && exists($fileinfo->{Title}) && exists($fileinfo->{Artist}) && exists($fileinfo->{Album})) {
59            $title = $fileinfo->{'Title'}." - ".$fileinfo->{'Artist'}." - ".$fileinfo->{'Album'};
60        }
61        else {
62            $title = $file;
63        }
64    }
65
66    $jobid = $printer->printFile($file, $title);
67   
68    if ($jobid) {
69        print "Sent job '$title' (id $jobid)\n";
70    }
71    else {
72        print "Error sending job '$title'\n";
73    }
74}
Note: See TracBrowser for help on using the repository browser.