#!/usr/bin/perl use strict; use Getopt::Long; use JSON; use Data::Dumper; use utf8; my ($help,$config,$verbose,$dryrun); my $meta_data_script = "lav-outils/podcasts/scripts/make-metadata-image-podcast.sh"; my $verbose; GetOptions ("help" => \$help, "config=s" => \$config, "verbose" => \$verbose, "dryrun" => \$dryrun); if($help) { usage(); } elsif( not $config ) { print " /!\\ Missing config arg\n\n"; usage(); } sub usage { print < }; my $json = JSON->new; my $data = $json->decode($json_text); return $data; } sub process { my ($config,$verbose,$dryrun)=@_; my $data = read_config($config); my $short_date = $data->{short_date}; my $long_date = $data->{long_date}; my $source_name = "libre-a-vous-$short_date"; my $title = "Libre à vous ! du $long_date sur Cause Commune"; my $ffmpeg_bin = $data->{ffmpeg_bin}; for my $chapter (values @{$data->{chapters}}) { my $start = $chapter->{start_timestamp}; my $end = $chapter->{end_timestamp}; my $short_chapter_name = $chapter->{short_chapter_name}; my $chapter_title = $chapter->{chapter_title}; # cutting chapter my $command = "$ffmpeg_bin -y -i $source_name.ogg -vn -acodec copy -ss \"$start\" -to \"$end\" $source_name-$short_chapter_name.ogg"; if($dryrun) { print "$command\n"; } else { my @ret = `$command`; if($?) { print "Error while cutting $short_chapter_name\n"; if($verbose) { print Dumper @ret; print Dumper $data; return 0; } } } # putting metadata my $url = "https://media.april.org/audio/radio-cause-commune/libre-a-vous/emissions/$short_date/$source_name-$short_chapter_name.ogg"; my $command = "$meta_data_script -s \"$source_name-$short_chapter_name.ogg\" -d \"output.ogg\" -u \"$url\" -t \"$title - Partie $chapter_title\" -p \"$ffmpeg_bin\""; if($dryrun) { print "$command\n"; } else { my @ret = `$command`; if($?) { print "Error while setting metadata in $short_chapter_name\n"; if($verbose) { print Dumper @ret; print Dumper $data; return 0; } } } my $command = "mv output.ogg $source_name-$short_chapter_name.ogg"; if($dryrun) { print "$command\n"; } else { my @ret = `$command`; if($?) { print "Error while renaming $short_chapter_name\n"; if($verbose) { print Dumper @ret; print Dumper $data; return 0; } } } } # putting metadata in main podcast my $url = "https://media.april.org/audio/radio-cause-commune/libre-a-vous/emissions/$short_date/$source_name.ogg"; my $command = "$meta_data_script -s \"$source_name.ogg\" -d \"output.ogg\" -u \"$url\" -t \"$title\" -p \"$ffmpeg_bin\""; if($dryrun) { print "$command\n"; } else { my @ret = `$command`; if($?) { print "Error while setting metadata in $source_name\n"; if($verbose) { print Dumper @ret; print Dumper $data; return 0; } } } my $command = "mv output.ogg $source_name.ogg"; if($dryrun) { print "$command\n"; } else { my @ret = `$command`; if($?) { print "Error while renaming $source_name\n"; if($verbose) { print Dumper @ret; print Dumper $data; return 0; } } } } process($config,$verbose,$dryrun);