The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Video::Filename - Parse filenames for information about the video

SYNOPSIS

  use Video::Filename;

  my $file = Video::Filename::new($filename, [$name, [$season, [$episode]]]);
  my $file = Video::Filename::new($filename, {
                                     name => 'series name',
                                     season => 4,
                                     episode => 5,
                                     spaces => '\s._-',
                                 } );
  # TV or DVD Episode
  $file->{regex}
  $file->{dir}
  $file->{file}
  $file->{name}
  $file->{dvd}
  $file->{season}
  $file->{episode}
  $file->{endep}
  $file->{subep}
  $file->{part}
  $file->{epname}
  $file->{ext}

  # Movie
  $file->{movie}
  $file->{year}
  $file->{imdb}
  $file->{title}

  $file->isDVDshow();
  $file->isTVshow();
  $file->isEpisode();
  $file->isMovie();

  $file->testVideoFilename();

DESCRIPTION

Video::Filename is used to parse information line name/season/episode and such from a video filename. It also does a reasonable job at distinguishing a movie from a tv episode.

$file = Video::Filename::new(FILENAME, [NAME, [SEASON, [EPISODE]]]);

Parse FILENAME and return a Video::Filename object containing the data. If you specify NAME, SEASON, and/or EPISODE it will override what is parsed from FILENAME.

Alternatively, arguments can be passed in a hashref. This also allows the user to specify the option of specifying characters which are replaced with spaces in the parsed 'name', 'epname', 'movie', and 'title' fields.

  my $file = Video::Filename::new('This.is.a.name.s01e01.episode_title.avi', {
                                     season => 4,
                                     spaces => '\s._-',
                                 } );
  print Dumper($file);

  $file = bless( {
                  'epname' => 'episode title',
                  'name' => 'This is a name',
                  'file' => 'This.is.a.name.s01e01.episode_title.avi',
                  'spaces' => '._',
                  'seasonepisode' => 'S04E01',
                  'episode' => 1,
                  'ext' => 'avi',
                  'season' => 4
                }, 'Video::Filename' );

Notice that that the season was overridden in the call to new(), so it's "4" instead of the "1" parsed from the file name.

isDVDshow();

Returns true if the object represents a DVD episode.

isTVshow();

Returns true if the object represents a TV episode.

isEpisode();

Returns true if the object represents an episode (TV or DVD).

isMovie();

Returns true if the object represents a Movie.

testVideoFilename();

Run a series of tests on the rules used to parse filenames. Basically a test harness.

COPYRIGHT

Copyright (c) 2008 by Behan Webster. All rights reserved.

LICENSE

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

AUTHOR

Behan Webster <behanw@websterwood.com>