#!/usr/bin/perl -w # # Given name of .avi file just generated for new episode, make the # link to the "../airdate-*.avi" file. use strict; # Get PATH set to include this script's directory and other useful bits my $newpath=`dirname $0`; chomp($newpath); $newpath=`$newpath/echo-path`; chomp($newpath); $ENV{'PATH'}=$newpath; my $topdir="/huge/vids"; my $whodir="$topdir/DoctorWho"; my $dbdir="$whodir/.data"; my $dbfile="$dbdir/allinfo.txt"; my $basefile=`basename $ARGV[0] .avi`; chomp($basefile); my $basedir=`dirname $ARGV[0]`; chomp($basedir); chdir($basedir); # Read in the database of all the episode information and fetch airdate # sub fetch_airdate { my $basefile = shift; my $airdate; my %db; my $fh; my $r; if (open($fh, '<', $dbfile)) { while (<$fh>) { chomp; if (/^\[(.+)\]$/) { my $basename = $1; $r = {}; $db{$basename} = $r; } elsif (/^([A-Za-z0-9_]+)=(.+)$/) { if (defined($r)) { my $key = $1; my $val = $2; $r->{$key} = $val; } } } close($fh); undef($fh); undef($r); } $r = $db{$basefile}; if (defined($r)) { $airdate = $r->{'airdate'}; } return $airdate; } my $airdate = fetch_airdate($basefile); if (! defined($airdate)) { # First attempt didn't work, try to download new airdate info system("update-airdates"); $airdate = fetch_airdate($basefile); } if (! defined($airdate)) { $airdate = 'YYYY-MM-DD'; } unlink("../$airdate-$basefile.avi"); link("$basefile.avi", "../$airdate-$basefile.avi");