Archived
1
0
This repository has been archived on 2020-12-10. You can view files and clone it, but cannot push or open issues or pull requests.
old/application/models/YoutubePlayerModel.php

135 lines
5.5 KiB
PHP
Raw Normal View History

2018-10-16 16:28:42 +00:00
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
use Coduo\PHPHumanizer\DateTimeHumanizer;
class YoutubePlayerModel extends CI_Model
{
public function __construct()
{
parent::__construct();
}
public function getRecommendVideos($id)
{
$data = $this->youtubePlayerModel->newestVids('15');
$return = '';
if (!empty($data)) {
foreach ($data as $row) {
$videoId = $row['contentDetails'];
$videoId = $videoId['videoId'];
$title = $this->youtubePlayerModel->getInfos($videoId)['title'];
if ($id == $videoId) {
$return .= '<li>
<a onclick="switchVideo(\'' . $videoId . '\');" style="cursor: pointer;">
<div class="image-container active">
<img src="http://img.youtube.com/vi/' . $videoId . '/maxresdefault.jpg" alt="' . $title . '" class="img-fluid">
<div class="overlay"><span>' . $title . '</span></div>
</div>
</a>
</li>';
} else {
$return .= '<li>
<a onclick="switchVideo(\'' . $videoId . '\');" style="cursor: pointer;">
<div class="image-container">
<img src="http://img.youtube.com/vi/' . $videoId . '/maxresdefault.jpg" alt="' . $title . '" class="img-fluid">
<div class="overlay"><span>' . $title . '</span></div>
</div>
</a>
</li>';
}
// if($id == $videoId) {
// $return .= '<a onClick="switchVideo(\'' . $videoId . '\');" class="btn btn-sm btn-default active raised">' .$title. '</a>';
// } else {
// $return .= '<a onClick="switchVideo(\'' . $videoId . '\');" class="btn btn-sm btn-default raised">' .$title. '</a>';
// }
}
} else {
$return = null;
}
return $return;
}
public function newestVids($vidCount)
{
$data = $this->db->query('SELECT * FROM social_posts WHERE post_plattform = \'YouTube\' ORDER BY post_date DESC LIMIT ?', [$vidCount])->result_array();
if (!empty($data)) {
return $data;
} else {
return null;
}
}
public function getInfos($id)
{
$data = json_decode(@file_get_contents('https://www.googleapis.com/youtube/v3/videos?part=snippet%2Cstatistics&hl=de&id=' . $id . '&regionCode=de&key=AIzaSyAZi6W9FODqd-bjlmV0sGJ8vjvSgFNTXVM'), true)['items'];
$data = $data[0];
$infos = $data['snippet'];
$stats = $data['statistics'];
$return = [];
$return['title'] = $infos['title'];
$description = htmlspecialchars($infos['description']);
$descriptionList = explode(' ', $description);
$description = '';
foreach ($descriptionList as $item) {
if (isset(parse_url($item)['scheme']) && isset(parse_url($item)['host'])) {
$description .= '<a href="' . $item . '" target="_blank">' . $item . '</a> ';
} else {
if ($infos['channelTitle'] == 'KingOfDog') {
$items1 = ['✔️', '', '©'];
$items2 = ['</p><p>✔️', '<br>', '<br>©'];
$description .= str_replace($items1, $items2, $item) . ' ';
} else {
$description .= $item . ' ';
}
}
}
$return['description'] = $description;
$published = strtotime($infos['publishedAt']);
$return['published'] = DateTimeHumanizer::difference(new \DateTime(), new \DateTime("@$published"), $_SESSION['site_lang']);
$return['channelName'] = $infos['channelTitle'];
$return['channelUrl'] = 'http://youtube.com/channel/' . $infos['channelId'];
$return['views'] = number_format($stats['viewCount'], 0, ',', '.');
$return['likes'] = $stats['likeCount'];
$return['dislikes'] = $stats['dislikeCount'];
$return['comments'] = number_format($stats['commentCount'], 0, ',', '.');
$rateCount = intval($return['likes']) + intval($return['dislikes']);
if (intval($return['likes']) > 0 && intval($return['dislikes']) > 0) {
$return['likeWidth'] = intval($return['likes']) / $rateCount * 100;
$return['dislikeWidth'] = intval($return['dislikes']) / $rateCount * 100;
$return['grayWidth'] = 0;
} elseif (intval($return['likes']) == 0 && intval($return['dislikes']) == 0) {
$return['likeWidth'] = 0;
$return['dislikeWidth'] = 0;
$return['grayWidth'] = 100;
} elseif (intval($return['likes']) == 0) {
$return['likeWidth'] = 0;
$return['dislikeWidth'] = 100;
$return['grayWidth'] = 0;
} else {
$return['likeWidth'] = 100;
$return['dislikeWidth'] = 0;
$return['grayWidth'] = 0;
}
$return['thumbnails'] = $infos['thumbnails'];
return $return;
}
public function checkVideo($videoID)
{
$data = json_decode(@file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=" . $videoID . "&key=AIzaSyAZi6W9FODqd-bjlmV0sGJ8vjvSgFNTXVM"));
return $data->pageInfo->totalResults !== 0;
}
}