2020-05-16 20:18:32 +02:00
<? php
2020-05-23 23:47:15 +02:00
require 'Database.php' ;
2020-06-02 16:15:12 +02:00
$ffmpeg = 'ffmpeg' ; //or: /usr/bin/ffmpeg , or /usr/local/bin/ffmpeg - depends on your installation (type which ffmpeg into a console to find the install path)
2020-05-23 23:47:15 +02:00
$conn = Database :: getInstance () -> getConnection ();
2020-05-16 20:18:32 +02:00
$arr = scandir ( "../videos/prn/" );
2020-05-23 23:47:15 +02:00
$all = 0 ;
$added = 0 ;
2020-05-27 21:35:02 +02:00
$deleted = 0 ;
2020-05-23 23:47:15 +02:00
$failed = 0 ;
2020-05-16 20:18:32 +02:00
foreach ( $arr as $elem ) {
2020-05-23 23:47:15 +02:00
if ( $elem != "." && $elem != ".." ) {
$query = "SELECT * FROM videos WHERE movie_name = '" . mysqli_real_escape_string ( $conn , $elem ) . "'" ;
$result = $conn -> query ( $query );
2020-05-27 21:35:02 +02:00
// insert if not available in db
2020-05-23 23:47:15 +02:00
if ( ! mysqli_fetch_assoc ( $result )) {
$pic = shell_exec ( "ffmpeg -hide_banner -loglevel panic -ss 00:04:00 -i \" ../videos/prn/ $elem \" -vframes 1 -q:v 2 -f singlejpeg pipe:1 2>/dev/null" );
$image_base64 = base64_encode ( $pic );
$image = 'data:image/jpeg;base64,' . $image_base64 ;
2020-06-02 16:15:12 +02:00
$video_attributes = _get_video_attributes ( $elem );
$duration = 60 * $video_attributes [ 'hours' ] + $video_attributes [ 'mins' ];
$query = "INSERT INTO videos(movie_name,movie_url,thumbnail,quality,length)
VALUES ('" . mysqli_real_escape_string ( $conn , $elem ) . "',
'" . mysqli_real_escape_string ( $conn , 'videos/prn/' . $elem ) . "',
' $image ',
'" . $video_attributes [ 'height' ] . "',
' $duration ')" ;
2020-05-23 23:47:15 +02:00
if ( $conn -> query ( $query ) === TRUE ) {
echo ( 'successfully added ' . $elem . " to video gravity \n " );
2020-06-02 16:15:12 +02:00
$last_id = $conn -> insert_id ;
// full hd
if ( $video_attributes [ 'height' ] >= 1080 ) {
$query = "INSERT INTO video_tags(video_id,tag_id) VALUES ( $last_id ,2)" ;
if ( $conn -> query ( $query ) !== TRUE ) {
echo "failed to add tag here. \n " ;
}
}
if ( $video_attributes [ 'height' ] >= 720 && $video_attributes [ 'height' ] < 1080 ) {
$query = "INSERT INTO video_tags(video_id,tag_id) VALUES ( $last_id ,4)" ;
if ( $conn -> query ( $query ) !== TRUE ) {
echo "failed to add tag here. \n " ;
}
}
if ( $video_attributes [ 'height' ] < 720 ) {
$query = "INSERT INTO video_tags(video_id,tag_id) VALUES ( $last_id ,3)" ;
if ( $conn -> query ( $query ) !== TRUE ) {
echo "failed to add tag here. \n " ;
}
}
2020-05-23 23:47:15 +02:00
$added ++ ;
2020-05-27 21:35:02 +02:00
$all ++ ;
2020-05-23 23:47:15 +02:00
} else {
2020-05-27 21:35:02 +02:00
echo ( 'errored item: ' . $elem . " \n " );
echo ( '{"data":"' . $conn -> error . '"}\n' );
2020-05-23 23:47:15 +02:00
$failed ++ ;
}
2020-05-27 21:35:02 +02:00
} else {
$all ++ ;
2020-05-23 23:47:15 +02:00
}
}
2020-05-16 20:18:32 +02:00
}
2020-05-23 23:47:15 +02:00
2020-05-27 21:35:02 +02:00
$query = "SELECT COUNT(*) as count FROM videos" ;
$result = $conn -> query ( $query );
$r = mysqli_fetch_assoc ( $result );
if ( $all < $r [ 'count' ]) {
echo "should be in gravity: " . $all . " \n " ;
echo "really in gravity: " . $r [ 'count' ] . " \n " ;
echo "cleaning up gravity \n " ;
$query = "SELECT movie_id,movie_url FROM videos" ;
$result = $conn -> query ( $query );
while ( $r = mysqli_fetch_assoc ( $result )) {
if ( ! file_exists ( "../" . $r [ 'movie_url' ])) {
$query = "DELETE FROM videos WHERE movie_id='" . $r [ 'movie_id' ] . "'" ;
if ( $conn -> query ( $query ) === TRUE ) {
echo ( 'successfully deleted ' . $r [ 'movie_url' ] . " from video gravity \n " );
$deleted ++ ;
} else {
echo "failed to delete " . $r [ 'movie_url' ] . " from gravity: " . $conn -> error . " \n " ;
}
}
}
}
// calculate size of databse here
$size = - 1 ;
$query = "SELECT table_schema AS \" Database \" ,
ROUND(SUM(data_length + index_length) / 1024 / 1024, 3) AS \" Size \"
FROM information_schema.TABLES
WHERE TABLE_SCHEMA='hub'
GROUP BY table_schema;" ;
$result = $conn -> query ( $query );
if ( $result -> num_rows == 1 ) {
$row = $result -> fetch_assoc ();
$size = $row [ "Size" ];
}
2020-05-23 23:47:15 +02:00
echo "Total gravity: " . $all . " \n " ;
2020-05-27 21:35:02 +02:00
echo "Size of Databse is: " . $size . "MB \n " ;
2020-05-23 23:47:15 +02:00
echo "added in this run: " . $added . " \n " ;
2020-05-27 21:35:02 +02:00
echo "deleted in this run: " . $deleted . " \n " ;
2020-06-02 16:15:12 +02:00
echo "errored in this run: " . $failed . " \n " ;
function _get_video_attributes ( $video )
{
global $ffmpeg ;
$command = " $ffmpeg -i \" ../videos/prn/ $video \" -vstats 2>&1" ;
$output = shell_exec ( $command );
$regex_sizes = "/Video: ([^,]*), ([^,]*), ([0-9]{1,4})x([0-9]{1,4})/" ; // or : $regex_sizes = "/Video: ([^\r\n]*), ([^,]*), ([0-9]{1,4})x([0-9]{1,4})/"; (code from @1owk3y)
if ( preg_match ( $regex_sizes , $output , $regs )) {
$codec = $regs [ 1 ] ? $regs [ 1 ] : null ;
$width = $regs [ 3 ] ? $regs [ 3 ] : null ;
$height = $regs [ 4 ] ? $regs [ 4 ] : null ;
}
$regex_duration = "/Duration: ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}).([0-9]{1,2})/" ;
if ( preg_match ( $regex_duration , $output , $regs )) {
$hours = $regs [ 1 ] ? $regs [ 1 ] : null ;
$mins = $regs [ 2 ] ? $regs [ 2 ] : null ;
$secs = $regs [ 3 ] ? $regs [ 3 ] : null ;
$ms = $regs [ 4 ] ? $regs [ 4 ] : null ;
}
return array ( 'codec' => $codec ,
'width' => $width ,
'height' => $height ,
'hours' => $hours ,
'mins' => $mins ,
'secs' => $secs ,
'ms' => $ms
);
}