Skip to content

Commit

Permalink
XiaMiPlayer:使用短代码插入,修正链接自动替换等问题。
Browse files Browse the repository at this point in the history
  • Loading branch information
jzwalk committed Jul 30, 2018
1 parent ed015b7 commit 5fd597e
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 30 deletions.
61 changes: 35 additions & 26 deletions XiaMiPlayer/Plugin.php
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php
/**
* 虾米音乐播放器:虾米音乐搜索+引用 (复活版<a href="http://www.yzmb.me" target="_blank">@羽中</a>)
* 虾米音乐播放器:虾米音乐搜索+引用
*
* @package XiaMiPlayer
* @author 公子
* @version 3.1.3
* @link http://zh.eming.li/#typecho
* @version 3.1.4
* @link https://imnerd.org
*/
class XiaMiPlayer_Plugin implements Typecho_Plugin_Interface
{
Expand Down Expand Up @@ -273,10 +273,9 @@ function show(id, name) {
else
$('ul#playlist').append('<li data-id="'+id+'">'+name+'</li>');
} else {
rm();
var c = '<script type="text/javascript" src="<?php echo $music; ?>?songs='+id+'<?php if($color) echo "&setting=$color"; ?>"><\/script>';
$('#text').val($('#text').val() + c);
var c = '[xiami <?php echo $music; ?>?songs='+id+'<?php if($color) echo "&setting=$color"; ?>]';
editor(c);
rm();
}
}

Expand All @@ -289,14 +288,18 @@ function insert_link() {
else
$('ul#playlist').append('<li data-url="'+link+'">'+name+'</li>');
} else {
var c = '<script type="text/javascript" src="<?php echo $music; ?>?songs='+link+'|'+name+'<?php if($color) echo "&setting=$color"; ?>"><\/script>';
$('#text').val($('#text').val()+c);
var c = '[xiami <?php echo $music; ?>?songs='+link+'|'+name+'<?php if($color) echo "&setting=$color"; ?>]';
editor(c);
rm();
}
}

function editor(c) {
var textarea = $('#text'),
sel = textarea.getSelection(),
offset = (sel ? sel.start : 0)+c.length;
textarea.replaceSelection(c);
textarea.setSelection(offset,offset);
if (window.frames.length > 0) {
if (fck = window.frames['text___Frame'])
var _c = fck.document.getElementsByTagName('iframe')[0].contentDocument.body;
Expand Down Expand Up @@ -402,45 +405,51 @@ public static function ParseXiaMi($content, $widget, $lastResult) {
$color = '';
break;
}
/** Markdown 支持 **/
$number = preg_match_all("/<a rel=\"nofollow\" href=\"(http:\/\/(www.)?xiami\.com\/([a-z]+)\/([0-9]+).*?)\">\\1<\/a>/im", $content, $match);
/** 短代码替换 **/
$number = preg_match_all('/\[xiami (.*?)\]/si', $content, $match);
if($number) {foreach($match[0] as $key => $string) {
$content = str_replace($string, '<script type="text/javascript" src="'.strip_tags($match[1][$key]).'"></script>', $content);
}}

/** Markdown替换 **/
$number = preg_match_all("/<a href=\"(https:\/\/(www.)?xiami\.com\/([a-z]+)\/([a-zA-Z0-9]+))\">\\1<\/a>/im", $content, $match);
if($number) {foreach($match[0] as $key => $string) {
$type = $match[3][$key];
$type = $match[3][$key]=='song' ? 'songs' : $match[3][$key];
$id = $match[4][$key];
$result = json_decode(file_get_contents($ajax.'?type='.$type.'&id='.$id), true);
if(in_array($type, array("album", "collect"))) {
if(empty($result['songs'])) continue;
$songs = array();
foreach($result['songs'] as $song) $songs[] = $song['song_id'];
$url .= "?songs=".implode(',', $songs);
if($color) $url .= "&setting=$color";
$content = str_replace($string, '<script type="text/javascript" src="'.$url.'"></script>', $content);
$lurl = $url."?songs=".implode(',', $songs);
if($color) $lurl .= "&setting=$color";
$content = str_replace($string, '<script type="text/javascript" src="'.$lurl.'"></script>', $content);
} else {
if(!$result['song_id']) continue;
$url .= "?songs=".$result['song_id'];
if($color) $url .= "&setting=$color";
$content = str_replace($string, '<script type="text/javascript" src="'.$url.'"></script>', $content);
$surl = $url."?songs=".$result['song_id'];
if($color) $surl .= "&setting=$color";
$content = str_replace($string, '<script type="text/javascript" src="'.$surl.'"></script>', $content);
}
}}

/** 非Markdown 支持 **/
$number = preg_match_all("/http:\/\/(www.)?xiami\.com\/([a-z]+)\/([0-9]+)/im", $content, $match);
/** 非Markdown替换 **/
$number = preg_match_all("/https:\/\/(www.)?xiami\.com\/([a-z]+)\/([a-zA-Z0-9]+)/im", $content, $match);
if($number) {foreach($match[0] as $key => $string) {
$type = $match[2][$key];
$type = $match[2][$key]=='song' ? 'songs' : $match[2][$key];
$id = $match[3][$key];
$result = json_decode(file_get_contents($ajax.'?type='.$type.'&id='.$id), true);
if(in_array($type, array("album", "collect"))) {
if(empty($result['songs'])) continue;
$songs = array();
foreach($result['songs'] as $song) $songs[] = $song['song_id'];
$url .= "?songs=".implode(',', $songs);
if($color) $url .= "&setting=$color";
$content = str_replace($string, '<script type="text/javascript" src="'.$url.'"></script>', $content);
$lurl = $url."?songs=".implode(',', $songs);
if($color) $lurl .= "&setting=$color";
$content = str_replace($string, '<script type="text/javascript" src="'.$lurl.'"></script>', $content);
} else {
if(!$result['song_id']) continue;
$url .= "?songs=".$result['song_id'];
if($color) $url .= "&setting=$color";
$content = str_replace($string, '<script type="text/javascript" src="'.$url.'"></script>', $content);
$surl = $url."?songs=".$result['song_id'];
if($color) $surl .= "&setting=$color";
$content = str_replace($string, '<script type="text/javascript" src="'.$surl.'"></script>', $content);
}
}}
return $content;
Expand Down
13 changes: 9 additions & 4 deletions XiaMiPlayer/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
### 迷你版虾米点播插件XiaMiPlayer v3.1.3
### 迷你版虾米点播插件XiaMiPlayer v3.1.4

撰写文章时可在线搜索虾米歌曲组成列表一键嵌入,采用jplayer迷你多彩播放器,支持快捷键。
通过编辑器按钮在线搜索虾米歌曲或输入mp3链接组成列表插入文章,采用jplayer迷你多彩播放器,支持快捷键。

- 3.1.3复活版(17-2-16)更新:整合[XiamiMusicAPI](https://github.com/metowolf/XiamiMusicAPI)内置action调用核心功能。([@羽中](https://github.com/jzwalk)
:warning:lyric.php缺失,暂时无法显示歌词。
:warning:由于原服务端lyric.php缺失暂时无法显示歌词。

- v3.1.4(18-7-25):([@羽中](https://github.com/jzwalk)
使用短代码替换兼容Typecho1.1+版Markdown解析,修正虾米地址自动替换和编辑区焦点定位等问题。

- v3.1.3复活版(17-2-16):
整合[XiamiMusicAPI](https://github.com/metowolf/XiamiMusicAPI)内置action调用核心功能。

- 补更至v3.1.2。

Expand Down

0 comments on commit 5fd597e

Please sign in to comment.