1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | \<?php include('common.inc.php'); function processHourly($hourly) { global $conn; $hfilename = str_replace(' ','_',$hourly['tgid']) . '-' . str_replace(Array(' 00:00:00+10',' 00:00:00+11'), '', $hourly['aday']) . '-' . $hourly['ahour'] . '.3gp'; if (!file_exists("hourly/" . $hfilename)) { $filenames = explode(",", $hourly['filenames']); $cmd = "/usr/local/bin/ffmpeg"; if (count($filenames) > 1) { $cmd .=" -filter_complex concat=n=" . count($filenames) . ":v=0:a=1"; // only concat when more than 1 file } $cmd .=" -i data/" . implode(" -i data/", $filenames) . " -ar 8000 -ab 4.75k -ac 1 hourly/" . $hfilename . ' 2>&1'; //print_r($hourly); exec($cmd, $output, $returncode); echo $cmd . "<br>\n"; if ($returncode != 0) { echo $returncode; print_r($output); unlink("hourly/" . $hfilename); // delete incomplete file // die(); } else { $time = strtotime($hourly['aday'] . ' +' . $hourly['ahour'] . " hours"); $q = " insert into compilations (filename,files,datetime) VALUES ('" . $hfilename . "', ARRAY['" . implode("', '", $filenames) . "'], to_timestamp('" . $time . "') );"; $conn->query($q); //echo $q."\n"; foreach ($filenames as $filename) { $q = "UPDATE recordings SET archived = '$hfilename' WHERE filename = '$filename' ;"; $conn->query($q); //echo $q."\n"; } //die(); } } } /*$sth = $conn->prepare("select tgid, extract(hour from call_timestamp) ahour, date_trunc('day', call_timestamp) aday, count(filename), array_to_string(array_agg(filename order by call_timestamp), ',') filenames from recordings group by tgid, ahour, aday order by aday DESC, ahour, tgid;"); // TODO use tgid categories instead, tgid too specific $sth->execute(); $hourlies = $sth->fetchAll(PDO::FETCH_ASSOC); foreach ($hourlies as $hourly) { processHourly($hourly); } $sth = $conn->prepare("select 'hour' as tgid, extract(hour from call_timestamp) ahour, date_trunc('day', call_timestamp) aday, count(filename), array_to_string(array_agg(filename order by call_timestamp), ',') filenames from recordings group by ahour, aday order by aday DESC, ahour;"); $sth->execute(); $hourlies = $sth->fetchAll(PDO::FETCH_ASSOC); foreach ($hourlies as $hourly) { processHourly($hourly); }*/ $sth = $conn->prepare("select coalesce(category,'unknown') as tgid, extract(hour from call_timestamp) ahour, date_trunc('day', call_timestamp) aday, count(filename), array_to_string(array_agg(filename order by call_timestamp), ',') filenames from recordings inner join tgids on recordings.tgid = tgids.tgid group by category, ahour, aday having count(archived) != count(filename) order by aday DESC, ahour, category;"); $sth->execute(); $hourlies = $sth->fetchAll(PDO::FETCH_ASSOC); foreach($hourlies as $hourly) { processHourly($hourly); } |