diff options
Diffstat (limited to 'videoadd.pl')
-rwxr-xr-x | videoadd.pl | 44 |
1 files changed, 33 insertions, 11 deletions
diff --git a/videoadd.pl b/videoadd.pl index 1914ddd..cc05d06 100755 --- a/videoadd.pl +++ b/videoadd.pl @@ -136,7 +136,7 @@ I<director>, I<genres>, I<country>, I<plot>, I<rating>, I<istv>. Update only the given fields of the database. Known fields are I<title>, I<subtitle>, I<language>, I<imdbid>, I<year>, I<imgurl>, -I<director>, I<actors>, I<country>, I<plot>, I<genres>, I<rating>, +I<director>, I<actors>, I<country>, I<plot>, I<genres>, I<rating>, I<istv>, I<filename>, I<filesize>, I<filedate>, I<video_codec>, I<audio_codec>, I<video_width>, I<video_height>, I<runtime>, I<custom1>, I<custom2>, I<custom3>, I<custom4>. @@ -149,7 +149,8 @@ Two meta-fields are also available: I<imdb>, which stands for I<title>, I<subtitle>, I<language>, I<imdbid>, I<year>, I<imgurl>, -I<director>, I<actors>, I<country>, I<plot>, I<genres>, I<rating>, and +I<director>, I<actors>, I<country>, I<plot>, I<genres>, I<rating>, +I<istv>, and =item * @@ -251,8 +252,7 @@ my %new = ( owner_id => $config{userid} ################################################################################ # Look on-line for information on the movie -# TODO: don't look on-line if it's a db update with eg, only=video_codec -if (defined $imdb{crit}) { +if ( defined ($imdb{crit}) and &runIMDB() ) { # Look up the title/ID on IMDB my $single; @@ -329,13 +329,11 @@ foreach my $k (keys %options) { ################################################################################ # Run mplayer on the given file to get A/V codecs, etc. -# TODO: don't run mplayer if it's a db update with eg, only=title -if ( defined($file) ) { +if ( defined($file) and &runMplayer() ) { $new{filename} = basename ($file); $new{filesize} = (stat $file)[7]; $new{filedate} = (stat $file)[9]; # Last modify time in seconds since epoch - my @cmd = ('mplayer', '-identify', '-ao', 'null', '-vo', 'null', '-frames', '0', $file); @@ -402,7 +400,7 @@ unless ( defined $ignoredb_flag ) { # Get the genre IDs my @genres; - if (@{$new{genres}}) { + if (&include('genres') and @{$new{genres}}) { my $sth_selgenre = $dbh->prepare( "SELECT id FROM $config{prefix}genres WHERE name = ?" ) or die "Error: " .$dbh->errstr; my $sth_insgenre = $dbh->prepare( "INSERT INTO $config{prefix}genres SET name = ?" ) @@ -638,6 +636,7 @@ sub getfile { unless defined $imdbid; $imdb{crit} = $imdbid; } + undef $sort_flag; return catfile($config{videodir}, 'MOVIES', $res->[0]->[2]); } @@ -653,7 +652,7 @@ sub keywords { foreach my $k (@_) { if (lc $k eq 'imdb') { push @ret, qw/title subtitle language imdbid year imgurl - director actors country plot genres rating/; + director actors country plot genres rating istv/; } elsif (lc $k eq 'file') { push @ret, qw/filename filesize filedate @@ -661,10 +660,10 @@ sub keywords { runtime language/; } else { - die "Error: Unknown key `" .$k. "'.\n" + die "Error: Unknown field `" .$k. "'.\n" unless grep { $_ eq $k } qw/title subtitle language imdbid year imgurl - director actors country plot genres rating + director actors country plot genres rating istv filename filesize filedate video_codec audio_codec video_width video_height runtime custom1 custom2 custom3 custom4/; @@ -681,3 +680,26 @@ sub include { return 0 if @only and not (grep {$_ eq $k} @only); return 1; } + +sub runIMDB { + # Returns 1 if there is need to retrieve some data online, 0 otherwise + + foreach (qw/title subtitle language imdbid year imgurl + director actors country plot genres rating istv + custom1 custom2 custom3 custom4/) { + return 1 if &include($_); + } + return 0; +} + +sub runMplayer { + # Returns 1 if there is need to run mplayer, 0 otherwise + + foreach ( qw/filename filesize filedate + video_codec audio_codec video_width video_height + runtime language + custom1 custom2 custom3 custom4/) { + return 1 if &include($_); + } + return 0; +} |