Files
racalmas/tools/remove-recordings.pl

44 lines
1.0 KiB
Perl

#! /usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
use List::Util qw();
use FindBin qw($Bin);
use lib "$Bin/../lib/calcms";
use config;
use time;
use db;
use File::Basename qw(basename);
my $config = config::get(pop @ARGV);
my $delete = grep {$_ eq "--delete"} @ARGV;
my $dbh = db::connect($config);
my $query = qq{
select start, path
from calcms_events e, calcms_audio_recordings r
where e.id = r.event_id
and e.start > date_add(now(), INTERVAL -14 DAY)
};
my $entries = db::get($dbh, $query);
my %paths = map {normalize($_->{path}) => $_->{start}} @$entries;
my $dir = $config->{locations}->{local_audio_recordings_dir};
for my $file (sort glob("$dir/*")) {
next if $file !~ /\.(mp3|wav|flac|aac|ogg|m4a|aiff|aif|opus|aac)$/i;
next if -M $file < 14;
my $filename = normalize($file);
unless (exists $paths{$filename}) {
print "$filename\n";
unlink $file or die $! if $delete;
}
}
sub normalize {
my $s = shift;
$s = basename $s;
$s =~ s/\.master(\.\w+)$/$1/;
return $s;
}