created database to store all relevant data
This commit is contained in:
		@@ -18,6 +18,8 @@
 | 
			
		||||
    background-color: #7F7F7F;
 | 
			
		||||
    cursor: pointer;
 | 
			
		||||
    opacity: 0.9;
 | 
			
		||||
    border: 10px;
 | 
			
		||||
    border-radius: 20px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.videopreview:hover {
 | 
			
		||||
@@ -27,10 +29,12 @@
 | 
			
		||||
 | 
			
		||||
.previewtitle {
 | 
			
		||||
    height: 10%;
 | 
			
		||||
    color: white;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.previewpic {
 | 
			
		||||
    height: 90%;
 | 
			
		||||
    height: 80%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.hideit {
 | 
			
		||||
@@ -38,6 +42,11 @@
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.closebutton {
 | 
			
		||||
    height: 15px;
 | 
			
		||||
    color: white;
 | 
			
		||||
    height: 35px;
 | 
			
		||||
    width: 90px;
 | 
			
		||||
    margin-right: 80px;
 | 
			
		||||
    float: right;
 | 
			
		||||
    background-color: #FF0000;
 | 
			
		||||
    cursor: pointer;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								database.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								database.sql
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
create table if not exists videos
 | 
			
		||||
(
 | 
			
		||||
    movie_id   int auto_increment
 | 
			
		||||
        primary key,
 | 
			
		||||
    movie_name varchar(200)  null,
 | 
			
		||||
    movie_url  varchar(200)  null,
 | 
			
		||||
    thumbnail  mediumblob    null,
 | 
			
		||||
    likes      int default 0 null
 | 
			
		||||
);
 | 
			
		||||
@@ -14,9 +14,7 @@
 | 
			
		||||
<body>
 | 
			
		||||
<h1>lukis pornhub</h1>
 | 
			
		||||
<div class="videopagewrapper hideit">
 | 
			
		||||
    <div class="closebutton">
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="closebutton">Close</div>
 | 
			
		||||
    <div class="videowrapper"></div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										75
									
								
								js/index.js
									
									
									
									
									
								
							
							
						
						
									
										75
									
								
								js/index.js
									
									
									
									
									
								
							@@ -1,10 +1,11 @@
 | 
			
		||||
var videos;
 | 
			
		||||
var loadindex = 0;
 | 
			
		||||
var scrollposition = 0;
 | 
			
		||||
let videos;
 | 
			
		||||
let loadindex = 0;
 | 
			
		||||
let scrollposition = 0;
 | 
			
		||||
 | 
			
		||||
$(document).ready(function () {
 | 
			
		||||
    $.post('php/videoload.php', 'action', function (data) {
 | 
			
		||||
    $.post('php/videoload.php', 'action=getMovies', function (data) {
 | 
			
		||||
        videos = data;
 | 
			
		||||
        console.log(videos);
 | 
			
		||||
        loadPreviewBlock(12);
 | 
			
		||||
    }, 'json');
 | 
			
		||||
 | 
			
		||||
@@ -28,44 +29,48 @@ $(window).scroll(function () {
 | 
			
		||||
function loadPreviewBlock(nr) {
 | 
			
		||||
    for (let i = 0; i < nr; i++) {
 | 
			
		||||
        if (loadindex + i < videos.length) {
 | 
			
		||||
            if (videos[loadindex + i] != "." && videos[loadindex + i] != "..") {
 | 
			
		||||
                loadPreview(videos[loadindex + i]);
 | 
			
		||||
            } else {
 | 
			
		||||
                nr++;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            loadPreview(videos[loadindex + i]);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    loadindex += nr;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function loadPreview(src) {
 | 
			
		||||
    var preview = $("<div class='videopreview'><div class='previewtitle'>" + src + "</div><div class='previewpic'><img style='width:100%;height:100%' src=\"videos/thumbnails/" + src + ".jpg\" alt='no thumbnail found'></img></div></div>");
 | 
			
		||||
    preview.attr('videourl', "videos/prn/" + src);
 | 
			
		||||
    preview.attr('thumbnailurl', "videos/thumbnails/" + src);
 | 
			
		||||
    preview.click(function () {
 | 
			
		||||
        console.log("preview clicked");
 | 
			
		||||
        scrollposition = $(window).scrollTop();
 | 
			
		||||
        loadVideo($(this).attr("videourl"), $(this).attr("thumbnailurl") + ".jpg");
 | 
			
		||||
    });
 | 
			
		||||
    $(".previewcontainer").append(preview);
 | 
			
		||||
    $.post('php/videoload.php', 'action=readThumbnail&movieid=' + src.movie_id, function (data) {
 | 
			
		||||
        var preview = $(`
 | 
			
		||||
<div class='videopreview'>
 | 
			
		||||
    <div class='previewtitle'>${src.movie_name}</div>
 | 
			
		||||
    <div class='previewpic'>
 | 
			
		||||
        <img style='width:100%;height:100%' src="${data}" alt='no thumbnail found'/>
 | 
			
		||||
    </div>
 | 
			
		||||
</div>`);
 | 
			
		||||
        preview.attr('movie_id', src.movie_id);
 | 
			
		||||
        preview.click(function () {
 | 
			
		||||
            console.log("preview clicked");
 | 
			
		||||
            scrollposition = $(window).scrollTop();
 | 
			
		||||
            loadVideo($(this).attr("movie_id"));
 | 
			
		||||
        });
 | 
			
		||||
        $(".previewcontainer").append(preview);
 | 
			
		||||
    }, 'text');
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function loadVideo(src, posterlink) {
 | 
			
		||||
    $(".videowrapper").html("<div class='myvideo'><video controls crossorigin playsinline id='player'></video></div>");
 | 
			
		||||
function loadVideo(movieid) {
 | 
			
		||||
    $.post('php/videoload.php', 'action=loadVideo&movieid=' + movieid, function (data) {
 | 
			
		||||
        $(".videowrapper").html("<div class='myvideo'><video controls crossorigin playsinline id='player'></video></div>");
 | 
			
		||||
 | 
			
		||||
    const player = new Plyr('#player');
 | 
			
		||||
    player.source = {
 | 
			
		||||
        type: 'video',
 | 
			
		||||
        sources: [
 | 
			
		||||
            {
 | 
			
		||||
                src: src,
 | 
			
		||||
                type: 'video/mp4',
 | 
			
		||||
                size: 1080,
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        poster: posterlink
 | 
			
		||||
    };
 | 
			
		||||
    $(".videopagewrapper").show();
 | 
			
		||||
    $(".previewcontainer").hide();
 | 
			
		||||
        const player = new Plyr('#player');
 | 
			
		||||
        player.source = {
 | 
			
		||||
            type: 'video',
 | 
			
		||||
            sources: [
 | 
			
		||||
                {
 | 
			
		||||
                    src: data.movie_url,
 | 
			
		||||
                    type: 'video/mp4',
 | 
			
		||||
                    size: 1080,
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            poster: data.thumbnail
 | 
			
		||||
        };
 | 
			
		||||
        $(".videopagewrapper").show();
 | 
			
		||||
        $(".previewcontainer").hide();
 | 
			
		||||
    }, "json");
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								php/Database.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								php/Database.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
class Database
 | 
			
		||||
{
 | 
			
		||||
    private static $instance = null;
 | 
			
		||||
    private $conn;
 | 
			
		||||
 | 
			
		||||
    private $servername = "192.168.0.30";
 | 
			
		||||
    private $username = "root";
 | 
			
		||||
    private $password = "1qayxsw2";
 | 
			
		||||
    private $dbname = "hub";
 | 
			
		||||
 | 
			
		||||
    // The db connection is established in the private constructor.
 | 
			
		||||
    private function __construct()
 | 
			
		||||
    {
 | 
			
		||||
        // Create connection
 | 
			
		||||
        $this->conn = new mysqli($this->servername, $this->username, $this->password, $this->dbname);
 | 
			
		||||
 | 
			
		||||
        if ($this->conn->connect_errno) {
 | 
			
		||||
            echo "connecton failed... nr: " . $this->conn->connect_errno . " -- " . $this->conn->connect_error;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function getInstance()
 | 
			
		||||
    {
 | 
			
		||||
        if (!self::$instance) {
 | 
			
		||||
            self::$instance = new Database();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return self::$instance;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getConnection()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->conn;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,41 @@
 | 
			
		||||
<?php
 | 
			
		||||
require 'Database.php';
 | 
			
		||||
 | 
			
		||||
$conn = Database::getInstance()->getConnection();
 | 
			
		||||
 | 
			
		||||
$arr = scandir("../videos/prn/");
 | 
			
		||||
 | 
			
		||||
$all = 0;
 | 
			
		||||
$added = 0;
 | 
			
		||||
$failed = 0;
 | 
			
		||||
 | 
			
		||||
foreach ($arr as $elem) {
 | 
			
		||||
    shell_exec("ffmpeg -ss 00:04:00 -i \"../videos/prn/$elem\" -vframes 1 -q:v 2 \"$elem.jpg\"");
 | 
			
		||||
    if ($elem != "." && $elem != "..") {
 | 
			
		||||
 | 
			
		||||
        $query = "SELECT * FROM videos WHERE movie_name = '" . mysqli_real_escape_string($conn, $elem) . "'";
 | 
			
		||||
        $result = $conn->query($query);
 | 
			
		||||
        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;
 | 
			
		||||
            $conn = Database::getInstance()->getConnection();
 | 
			
		||||
 | 
			
		||||
            $query = "INSERT INTO videos(movie_name,movie_url,thumbnail) VALUES ('" . mysqli_real_escape_string($conn, $elem) . "','" . mysqli_real_escape_string($conn, 'videos/prn/' . $elem) . "','$image')";
 | 
			
		||||
 | 
			
		||||
            if ($conn->query($query) === TRUE) {
 | 
			
		||||
                echo('successfully added ' . $elem . " to video gravity\n");
 | 
			
		||||
                $added++;
 | 
			
		||||
            } else {
 | 
			
		||||
                echo('{"data":"' . $conn->error . '"}');
 | 
			
		||||
                $failed++;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        $all++;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
echo "Total gravity: " . $all . "\n";
 | 
			
		||||
echo "added in this run: " . $added . "\n";
 | 
			
		||||
echo "errored in this run: " . $failed . "\n";
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
$server = "172.17.0.2";
 | 
			
		||||
$user = "mwit";
 | 
			
		||||
$password = "3MnDApF3bu6XDGOE";
 | 
			
		||||
$database = "mwitdb";
 | 
			
		||||
 | 
			
		||||
$mysqli = new mysqli($server, $user, $password, $database);
 | 
			
		||||
if ($mysqli->connect_errno) {
 | 
			
		||||
    echo "connecton failed... nr: " . $mysqli->connect_errno . " -- " . $mysqli->connect_error;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,8 +1,61 @@
 | 
			
		||||
<?php
 | 
			
		||||
require 'Database.php';
 | 
			
		||||
 | 
			
		||||
$conn = Database::getInstance()->getConnection();
 | 
			
		||||
 | 
			
		||||
$arr = scandir("../videos/prn/");
 | 
			
		||||
echo(json_encode($arr));
 | 
			
		||||
 | 
			
		||||
if (isset($_POST['action'])) {
 | 
			
		||||
    $action = $_POST['action'];
 | 
			
		||||
    switch ($action) {
 | 
			
		||||
        case "getMovies":
 | 
			
		||||
            $query = "SELECT movie_id,movie_name FROM videos ORDER BY likes DESC,movie_name ASC";
 | 
			
		||||
            $result = $conn->query($query);
 | 
			
		||||
            $rows = array();
 | 
			
		||||
            while ($r = mysqli_fetch_assoc($result)) {
 | 
			
		||||
                array_push($rows,$r);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            echo(json_encode($rows));
 | 
			
		||||
            break;
 | 
			
		||||
        case "loadVideo":
 | 
			
		||||
            $query = "SELECT movie_url,thumbnail FROM videos WHERE movie_id='" . $_POST['movieid'] . "'";
 | 
			
		||||
 | 
			
		||||
            $result = $conn->query($query);
 | 
			
		||||
            $row = $result->fetch_assoc();
 | 
			
		||||
 | 
			
		||||
            $arr = array();
 | 
			
		||||
            $arr["thumbnail"] = $row["thumbnail"];
 | 
			
		||||
            $arr["movie_url"] = $row["movie_url"];
 | 
			
		||||
            echo(json_encode($arr));
 | 
			
		||||
 | 
			
		||||
            break;
 | 
			
		||||
        case "getDbSize":
 | 
			
		||||
            $query = "SELECT table_schema AS \"Database\", 
 | 
			
		||||
                        ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS \"Size\" 
 | 
			
		||||
                        FROM information_schema.TABLES 
 | 
			
		||||
                        WHERE TABLE_SCHEMA='test'
 | 
			
		||||
                        GROUP BY table_schema;";
 | 
			
		||||
            $result = $conn->query($query);
 | 
			
		||||
 | 
			
		||||
            if ($result->num_rows == 1) {
 | 
			
		||||
                $row = $result->fetch_assoc();
 | 
			
		||||
 | 
			
		||||
                echo '{"data":"' . $row["Size"] . '"}';
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            break;
 | 
			
		||||
        case "readThumbnail":
 | 
			
		||||
            $query = "SELECT thumbnail FROM videos WHERE movie_id='" . $_POST['movieid'] . "'";
 | 
			
		||||
 | 
			
		||||
            $result = $conn->query($query);
 | 
			
		||||
            $row = $result->fetch_assoc();
 | 
			
		||||
 | 
			
		||||
            echo($row["thumbnail"]);
 | 
			
		||||
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
} else {
 | 
			
		||||
    echo('{"data":"error"}');
 | 
			
		||||
}
 | 
			
		||||
return;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user