新增奇遇界面;修复异常
This commit is contained in:
@@ -41,38 +41,108 @@ var playlist = [];
|
||||
var post_playlist = [];
|
||||
var Paused = true;
|
||||
var playLrc = '';
|
||||
var standaloneTrack = false;
|
||||
|
||||
var m_cover = $('.player_mod .m_cover img');
|
||||
var m_title = $('.player_mod .m_info h2');
|
||||
var m_artist = $('.player_mod .m_info small');
|
||||
|
||||
// 将歌曲数据交给主题播放器。source 用于同步文章或片刻中的播放按钮状态。
|
||||
function playPlayerTrack(data, options) {
|
||||
options = options || {};
|
||||
var source = options.source ? $(options.source) : $();
|
||||
var player = source.closest('.pix_player');
|
||||
var audio = audiobox[0];
|
||||
var currentSource = audio.getAttribute('src') || '';
|
||||
|
||||
if (!data || !data.url) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$(document).on('click', '.play_btn', function () {
|
||||
$('.player_box').append(audiobox);
|
||||
$('.pix_player').removeClass('playing');
|
||||
$(this).parents('.pix_player').addClass('playing');
|
||||
var url = $(this).attr('data');
|
||||
var lrc = $(this).attr('lrc');
|
||||
var audio_s = $('#pix_player').attr('src');
|
||||
if (player.length) {
|
||||
player.addClass('playing');
|
||||
}
|
||||
|
||||
var meta = $(this).siblings('.player_meta').find('.title');
|
||||
playLrc = lrc;
|
||||
m_title.text(meta.find('.name').text());
|
||||
m_artist.text(meta.find('.author').text());
|
||||
m_cover.attr('src', $('.pix_player.playing .player_thum img').attr('src'));
|
||||
playLrc = data.lrc || '';
|
||||
m_title.text(data.title || data.name || '未知歌曲');
|
||||
m_artist.text(data.author || data.artist || '未知歌手');
|
||||
if (data.pic) {
|
||||
m_cover.attr('src', data.pic);
|
||||
}
|
||||
|
||||
if (audio_s == '' || audio_s !== url) {
|
||||
$('#pix_player').attr('src', url);
|
||||
audiobox[0].play();
|
||||
} else {
|
||||
standaloneTrack = options.standalone === true;
|
||||
initAudio();
|
||||
if (options.toggle && currentSource === data.url) {
|
||||
pasued();
|
||||
} else {
|
||||
audio.setAttribute('src', data.url);
|
||||
var playPromise = audio.play();
|
||||
if (playPromise && typeof playPromise.catch === 'function') {
|
||||
playPromise.catch(function () {
|
||||
// 浏览器阻止自动播放时,保留播放器状态并等待用户点击播放。
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$(".play_btn").html("<i class='ri-play-line'></i>");
|
||||
return true;
|
||||
}
|
||||
|
||||
initAudio();
|
||||
$(document).on('click', '.play_btn', function () {
|
||||
var meta = $(this).siblings('.player_meta').find('.title');
|
||||
playPlayerTrack({
|
||||
url: $(this).attr('data'),
|
||||
lrc: $(this).attr('lrc'),
|
||||
title: meta.find('.name').text(),
|
||||
author: meta.find('.author').text(),
|
||||
pic: $(this).closest('.pix_player').find('.player_thum img').attr('src')
|
||||
}, {
|
||||
source: this,
|
||||
toggle: true,
|
||||
standalone: false
|
||||
});
|
||||
});
|
||||
|
||||
function musicApiUrl(server, type, id) {
|
||||
var api = Theme.play.pix_mu_api || 'https://api.i-meto.com/meting/api';
|
||||
var separator = api.indexOf('?') === -1 ? '?' : '&';
|
||||
return api + separator + 'server=' + encodeURIComponent(server) +
|
||||
'&type=' + encodeURIComponent(type) + '&id=' + encodeURIComponent(id) +
|
||||
'&r=' + Math.random();
|
||||
}
|
||||
|
||||
// 通过网易云歌曲 ID 获取歌曲数据,并使用主题播放器播放。
|
||||
function play_netease_music(songId) {
|
||||
var id = String(songId == null ? '' : songId).trim();
|
||||
if (!id) {
|
||||
if (typeof cocoMessage !== 'undefined') cocoMessage.error('网易云歌曲ID不能为空');
|
||||
return false;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: 'get',
|
||||
url: musicApiUrl('netease', 'song', id)
|
||||
}).done(function (res) {
|
||||
var data = Array.isArray(res) ? res[0] : res;
|
||||
if (res && !Array.isArray(res) && Array.isArray(res.data)) {
|
||||
data = res.data[0];
|
||||
}
|
||||
if (!data || !data.url) {
|
||||
if (typeof cocoMessage !== 'undefined') cocoMessage.error('网易云歌曲无法播放');
|
||||
return;
|
||||
}
|
||||
playPlayerTrack(data, { standalone: true });
|
||||
}).fail(function () {
|
||||
if (typeof cocoMessage !== 'undefined') cocoMessage.error('网易云歌曲加载失败');
|
||||
});
|
||||
}
|
||||
|
||||
function playNeteaseMusic(songId) {
|
||||
play_netease_music(songId);
|
||||
}
|
||||
|
||||
// 初始化函数
|
||||
function initAudio() {
|
||||
audiobox[0].addEventListener("play", audioplay);
|
||||
@@ -85,6 +155,7 @@ function initAudio() {
|
||||
|
||||
//音乐结束触发
|
||||
function endplay() {
|
||||
if (standaloneTrack || !playlist[0] || playlist[0].length === 0) return;
|
||||
var index = $('.musci_list_box li.active').index() + 1;
|
||||
var max = $('.musci_list_box li').length;
|
||||
var new_mid = 0;
|
||||
@@ -223,6 +294,7 @@ function autoload_music() {
|
||||
type: "get",
|
||||
url: url,
|
||||
success: function (res) {
|
||||
if (standaloneTrack) return;
|
||||
if (res.length > 0) {
|
||||
var new_mid = 0;
|
||||
if (loop == "none") {
|
||||
@@ -255,6 +327,7 @@ function autoload_music() {
|
||||
|
||||
//播放选中音乐
|
||||
function mulist_play(index) {
|
||||
standaloneTrack = false;
|
||||
audiobox[0].removeEventListener("play", audioplay);
|
||||
audiobox[0].removeEventListener("pause", audiopause);
|
||||
$(".pix_player.playing .play_btn").html("<i class='ri-play-line'></i>");
|
||||
@@ -493,6 +566,7 @@ function autoload_posts_music() {
|
||||
$(document).on('click', '.s_play_btn', function () {
|
||||
mu_box_show();
|
||||
// 1. 同步更新文章内播放列表选中状态
|
||||
standaloneTrack = false;
|
||||
$('.posts_mu_list li').removeClass('active');
|
||||
$(this).parent().addClass('active');
|
||||
// 2. 同步更新全局播放列表选中状态(避免后续操作信息混乱)
|
||||
|
||||
Reference in New Issue
Block a user