Skip to content

Commit

Permalink
v.2.8
Browse files Browse the repository at this point in the history
- Обновлен режим на ТВ (Стало красивее)
- Добавлен плейлист дня
  • Loading branch information
SmoKE585 committed May 11, 2020
1 parent a4fc5dc commit 2ac4420
Show file tree
Hide file tree
Showing 4 changed files with 170 additions and 58 deletions.
5 changes: 4 additions & 1 deletion modules/yamusic/json.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,15 @@
if($_GET['mode'] == 'track') {
$songID = $_GET['songID'];
$playlist = $_GET['playlist'];
$owner = $_GET['owner'];
$count = $_GET['count'];
$next = $_GET['next'];
$prev = $_GET['prev'];
$shaffle = $_GET['shaffle'];
$sizecover = $_GET['sizecover'];

$class = new yamusic();
$array = $class->generateTrack($playlist, $owner, $songID, $count, $shaffle, $next, $prev);
$array = $class->generateTrack($playlist, $owner, $songID, $count, $shaffle, $next, $prev, $sizecover);
echo json_encode($array);
}

Expand Down
33 changes: 26 additions & 7 deletions modules/yamusic/sendOnTV.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,31 @@
$shaffle = strip_tags($_GET['shaffle']);
$songID = strip_tags($_GET['songID']);

if($shaffle) $shaffle = 0;

if(empty($owner) || empty($playlist)) {
http_response_code(404);
die();
}

error_reporting(0);

chdir (dirname (__FILE__) . '/../../');

include_once ('./config.php');
include_once ('./lib/loader.php');


require('yamusic.class.php');
$class = new yamusic();

$class->getConfig();

?>
<html>
<head>
<script type="text/javascript" src="/3rdparty/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="/templates/yamusic/js/jquery.fullscreen.js"></script>
<link rel="stylesheet" href="/3rdparty/bootstrap/css/bootstrap.min.css" type="text/css">
<script type="text/javascript" src="/3rdparty/bootstrap/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="/templates/yamusic/css/line-awesome.min.css">
Expand All @@ -35,11 +51,11 @@ function startPlayMusic(command) {
songID = '&songID='+$('#playSongCommand').text();

if(command == 'prev') {
urlGenerate = '/modules/yamusic/json.php?mode=track&playlist='+playlist+'&count=1&owner='+onwer+'&shaffle='+isShaffle+'&prev='+prev+songID;
urlGenerate = '/modules/yamusic/json.php?mode=track&sizecover=1000x1000&playlist='+playlist+'&count=1&owner='+onwer+'&shaffle='+isShaffle+'&prev='+prev+songID;
} else if(command == 'next') {
urlGenerate = '/modules/yamusic/json.php?mode=track&playlist='+playlist+'&count=1&owner='+onwer+'&shaffle='+isShaffle+'&next='+next+songID;
urlGenerate = '/modules/yamusic/json.php?mode=track&sizecover=1000x1000&playlist='+playlist+'&count=1&owner='+onwer+'&shaffle='+isShaffle+'&next='+next+songID;
} else {
urlGenerate = '/modules/yamusic/json.php?mode=track&playlist='+playlist+'&count=1&owner='+onwer+'&shaffle='+isShaffle+songID;
urlGenerate = '/modules/yamusic/json.php?mode=track&sizecover=1000x1000&playlist='+playlist+'&count=1&owner='+onwer+'&shaffle='+isShaffle+songID;
}

//Запрос нужного трека
Expand Down Expand Up @@ -75,7 +91,7 @@ function startPlayMusic(command) {
$('#nextTrack').show();
if(isShaffle != 1) $('#prevTrack').show();

$('#backgroundCoverBlur').attr('style', 'position: absolute;background-image: url('+responce[0].COVER+');filter: blur(35px);background-size: cover;background-position: center center;background-repeat: no-repeat;height: 100%;width: 100%;bottom: 0;right: 0;');
$('#backgroundCoverBlur').attr('style', 'position: absolute;background-image: url('+responce[0].COVER_SIZED+');-webkit-filter: blur(15px);-moz-filter: blur(15px);filter: blur(15px);background-size: cover;background-position: center center;background-repeat: no-repeat;height: 100%;width: 100%;bottom: 0;right: 0;');
$('#backgroundCoverBlur').show();
})

Expand Down Expand Up @@ -134,16 +150,19 @@ function shaffleMusicTrack() {


$(function() {
audio = document.querySelector('audio');
audio.volume = <?php echo $class->config['VOLUME_TVLG']; ?>;

startPlayMusic();
});
</script>
</head>
<body>
<body id="fullDisplay">
<div id="backgroundCoverBlur" style=""></div>

<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="row" style="margin-top: 300px;background: white;border-radius: 0.25rem !important;border: 1px solid #e2e2e2;width: 100%;margin-right: 0px;margin-left: 0px;padding: 5px;">
<div class="row" style="margin-top: 340px;background: white;border-radius: 0.25rem !important;border: 20px solid #ffcc00;width: 100%;margin-right: 0px;margin-left: 0px;padding: 5px;">
<div class="col-xl-4 col-lg-4 col-md-4 col-sm-12 col-12" style="padding: 0px;">
<div style="float: left;">
<img id="coverSong" src="/img/modules/yamusic.png" style="width: 100px;">
Expand All @@ -166,7 +185,7 @@ function shaffleMusicTrack() {

<div id="currentMusicTrack" style="display: none;">0</div>
<div id="playSongCommand" style="display: none;"><?php echo $songID;?></div>
<div id="shaffleMusic" style="display: none;">0</div>
<div id="shaffleMusic" style="display: none;"><?php echo $shaffle;?></div>
<div id="ownerMusic" style="display: none;"><?php echo $owner;?></div>
<div id="playlistMusic" style="display: none;"><?php echo $playlist;?></div>

Expand Down
132 changes: 107 additions & 25 deletions modules/yamusic/yamusic.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ function __construct() {
$this->name="yamusic";
$this->title="Яндекс.Музыка";
$this->module_category="<#LANG_SECTION_APPLICATIONS#>";
$this->version = '2.7 Beta';
$this->version = '2.8 Beta';
$this->checkInstalled();
}

Expand Down Expand Up @@ -97,7 +97,7 @@ function loadAllUser() {
return $selectUser;
}

function generateTrack($playlist, $owner, $songID = '', $count = 1, $shaffle = 0, $next = '', $prev = '') {
function generateTrack($playlist, $owner, $songID = '', $count = 1, $shaffle = 0, $next = '', $prev = '', $sizeCover = '200x200') {
if(empty($playlist) || empty($owner)) die();

if($shaffle >= 2) $shaffle = 0;
Expand Down Expand Up @@ -127,6 +127,7 @@ function generateTrack($playlist, $owner, $songID = '', $count = 1, $shaffle = 0
foreach($selectMusic as $key => $value) {
$selectMusic[$key]['LINK'] = $this->getDirectLink($value['SONGID'], $loadUserInfo['TOKEN']);
$selectMusic[$key]['DURATION'] = $this->microTimeConvert($value['DURATION']);
$selectMusic[$key]['COVER_SIZED'] = str_ireplace("200x200", $sizeCover, $value['COVER']);;
}

return $selectMusic;
Expand Down Expand Up @@ -199,7 +200,7 @@ function loadUserMusic($userToken, $userUID, $playlistID) {
}
}
} else {
$loadUserMusic = $newDOM->usersPlaylists($playlistID);
$loadUserMusic = $newDOM->usersPlaylists($playlistID, $userUID);
$loadUserMusic = $loadUserMusic->result[0]->tracks;

foreach($loadUserMusic as $key => $value) {
Expand Down Expand Up @@ -272,6 +273,42 @@ function setAudioVolume($chanel, $value) {
return;
}

function loadUserMusicPlaylistOnDay($userToken, $userUID, $reload = 0) {
//Запрашиваем плейлист дня
require_once(DIR_MODULES.$this->name.'/client.php');
$newDOM = new Client($userToken);
//ИД плейлиста, сохраним его в конфиг, чтобы потом удалить
$playlistOnDayArray = $newDOM->landing('personalplaylists');
$playlistID = $playlistOnDayArray->blocks[0]->entities[0]->data->data->kind;
$playlistModify = $playlistOnDayArray->blocks[0]->entities[0]->data->data->modified;
$playlistOwner = $playlistOnDayArray->blocks[0]->entities[0]->data->data->owner->uid;

//Удалим старые треки из БД
SQLExec("DELETE FROM `yamusic_music` WHERE `OWNER` = '".$playlistOwner."' AND `PLAYLISTID` = '".$playlistID."'");
//Разные даты, а значит надо заного обновлять
$loadUserMusic = $newDOM->usersPlaylists($playlistID, $playlistOwner);
$loadUserMusic = $loadUserMusic->result[0]->tracks;

foreach($loadUserMusic as $key => $value) {
//Получим ID треков
$idTrack = $value->id;
//Получим обложку и название
$getCover = $newDOM->tracks($idTrack);

//Если нет инфы о треке - пропускае, он удален
if(!$getCover[0]->durationMs) continue;

//Генерируем массив песен
$cover = mb_strlen($getCover[0]->coverUri)-2;
$cover = substr($getCover[0]->coverUri, 0, $cover);

//Записываем НО меняем владельца плейлиста
SQLExec("INSERT INTO `yamusic_music` (`SONGID`,`PLAYLISTID`,`OWNER`,`NAMESONG`,`ARTISTS`,`COVER`,`DURATION`,`ADDTIME`) VALUES ('".dbSafe($idTrack)."','".dbSafe($playlistID)."','".dbSafe($userUID)."','".dbSafe($getCover[0]->title)."','".dbSafe($getCover[0]->artists[0]->name)."','https://".dbSafe($cover)."200x200','".dbSafe($getCover[0]->durationMs)."','".time()."');");
}

return;
}

function admin(&$out) {
$this->getConfig();

Expand Down Expand Up @@ -370,31 +407,74 @@ function admin(&$out) {
die();
}

if($this->mode != 'loadPlayList') $this->playlistID = '-1'.$loadUserInfo['UID'];

$selectMusic = SQLSelect("SELECT * FROM `yamusic_music` WHERE `PLAYLISTID` = '".$this->playlistID."' AND `OWNER` = '".$loadUserInfo['UID']."'");
$selectPlaylist = SQLSelectOne("SELECT * FROM `yamusic_playlist` WHERE `PLAYLISTID` = '".$this->playlistID."' AND `OWNER` = '".$loadUserInfo['UID']."'");

if($selectMusic[0]['SONGID']) {
//Выгрузим музыку пользователя
$countMusicList = 0;
$countShowMusicList = SQLSelectOne("SELECT COUNT(`ID`) FROM `yamusic_music` WHERE `PLAYLISTID` = '".$this->playlistID."' AND `OWNER` = '".$loadUserInfo['UID']."'");
if(empty($this->mode)) $this->playlistID = '-1'.$loadUserInfo['UID'];

foreach($selectMusic as $key => $value) {
$selectMusic[$key]['DURATION'] = $this->microTimeConvert($value['DURATION']);
$countMusicList++;
}
if($this->mode == 'playlistOnDay') {
//Запрашиваем плейлист дня
require_once(DIR_MODULES.$this->name.'/client.php');
$newDOM = new Client($loadUserInfo['TOKEN']);
//ИД плейлиста, сохраним его в конфиг, чтобы потом удалить
$playlistOnDay = $newDOM->landing('personalplaylists');
$playlistOnDay_ID = $playlistOnDay->blocks[0]->entities[0]->data->data->kind;
$playlistOnDay_Modify = $playlistOnDay->blocks[0]->entities[0]->data->data->modified;
$playlistOnDay_Owner = $playlistOnDay->blocks[0]->entities[0]->data->data->owner->uid;

//В выдачу
$out['PLAYLIST_MUSICLIST'] = $selectMusic;
$out['PLAYLIST_CURRENT'] = $this->playlistID;
$out['PLAYLIST_CURRENT_NAME'] = $selectPlaylist['TITLE'];
$out['TOTAL_PLAYLIST_TRACKS'] = $countShowMusicList['COUNT(`ID`)'];
$out['TOTAL_PLAYLIST_SHOWTRACKS'] = $countMusicList;
//Сравним тот же плейлист пытаются выкачать или нет
$this->getConfig();
$oldPlaylist_Modify = $this->config['PLAYLIST_ON_DAY_MODIFY_'.$loadUserInfo['UID']];

if($oldPlaylist_Modify != $playlistOnDay_Modify || $this->view_mode == 'reload') {
//Разные даты, а значит надо заного обновлять
$this->loadUserMusicPlaylistOnDay($loadUserInfo['TOKEN'], $loadUserInfo['UID']);

$this->config['PLAYLIST_ON_DAY_MODIFY_'.$loadUserInfo['UID']] = $playlistOnDay_Modify;
$this->saveConfig();

$this->redirect("?&md=yamusic&inst=adm&mode=playlistOnDay");
} else {
$selectMusic = SQLSelect("SELECT * FROM `yamusic_music` WHERE `PLAYLISTID` = '".$playlistOnDay_ID."'");

//Выгрузим музыку пользователя
$countMusicList = 0;
$countShowMusicList = SQLSelectOne("SELECT COUNT(`ID`) FROM `yamusic_music` WHERE `PLAYLISTID` = '".$playlistOnDay_ID."'");

foreach($selectMusic as $key => $value) {
$selectMusic[$key]['DURATION'] = $this->microTimeConvert($value['DURATION']);
$countMusicList++;
}

//В выдачу
$out['PLAYLIST_MUSICLIST'] = $selectMusic;
$out['PLAYLIST_CURRENT'] = $playlistOnDay_ID;
$out['PLAYLIST_CURRENT_NAME'] = 'Плейлист дня';
$out['TOTAL_PLAYLIST_TRACKS'] = $countShowMusicList['COUNT(`ID`)'];
$out['TOTAL_PLAYLIST_SHOWTRACKS'] = $countMusicList;
}
} else {
//Музыки загруженой нет, загружаем
$this->loadUserMusic($loadUserInfo['TOKEN'], $loadUserInfo['UID'], $this->playlistID);
$selectMusic = SQLSelect("SELECT * FROM `yamusic_music` WHERE `PLAYLISTID` = '".$this->playlistID."' AND `OWNER` = '".$loadUserInfo['UID']."'");
$selectPlaylist = SQLSelectOne("SELECT * FROM `yamusic_playlist` WHERE `PLAYLISTID` = '".$this->playlistID."' AND `OWNER` = '".$loadUserInfo['UID']."'");

if($selectMusic[0]['SONGID']) {
//Выгрузим музыку пользователя
$countMusicList = 0;
$countShowMusicList = SQLSelectOne("SELECT COUNT(`ID`) FROM `yamusic_music` WHERE `PLAYLISTID` = '".$this->playlistID."' AND `OWNER` = '".$loadUserInfo['UID']."'");

foreach($selectMusic as $key => $value) {
$selectMusic[$key]['DURATION'] = $this->microTimeConvert($value['DURATION']);
$countMusicList++;
}

//В выдачу
$out['PLAYLIST_MUSICLIST'] = $selectMusic;
$out['PLAYLIST_CURRENT'] = $this->playlistID;
$out['PLAYLIST_CURRENT_NAME'] = $selectPlaylist['TITLE'];
$out['TOTAL_PLAYLIST_TRACKS'] = $countShowMusicList['COUNT(`ID`)'];
$out['TOTAL_PLAYLIST_SHOWTRACKS'] = $countMusicList;

} else {
//Музыки загруженой нет, загружаем
$this->loadUserMusic($loadUserInfo['TOKEN'], $loadUserInfo['UID'], $this->playlistID);
}
}

//Посмотрим в БД есть ли ТВ LG
Expand All @@ -421,12 +501,14 @@ function admin(&$out) {
}

//Лечим косяк MJDM
if($this->md != 'yamusic') $this->redirect("?mode=loadPlayList&playlistID=".$this->playlistID);
//if($this->md != 'yamusic') $this->redirect("?mode=loadPlayList&playlistID=".$this->playlistID);

//Выгружаем громкость
$this->getConfig();
$out['VOLUME_PUANDSCENE'] = $this->config['VOLUME_PUANDSCENE'];
if(empty($out['VOLUME_PUANDSCENE'])) $out['VOLUME_PUANDSCENE'] = 1;
$out['VOLUME_TVLG'] = $this->config['VOLUME_TVLG'];
if(empty($out['VOLUME_TVLG'])) $out['VOLUME_TVLG'] = 1;
} else {
//Метка, что юзера НЕТ в БД
$out['ISUSER'] = 0;
Expand Down
Loading

0 comments on commit 2ac4420

Please sign in to comment.