Skip to content

Commit 5fd597e

Browse files
committed
XiaMiPlayer:使用短代码插入,修正链接自动替换等问题。
1 parent ed015b7 commit 5fd597e

File tree

2 files changed

+44
-30
lines changed

2 files changed

+44
-30
lines changed

XiaMiPlayer/Plugin.php

+35-26
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<?php
22
/**
3-
* 虾米音乐播放器:虾米音乐搜索+引用 (复活版<a href="http://www.yzmb.me" target="_blank">@羽中</a>)
3+
* 虾米音乐播放器:虾米音乐搜索+引用
44
*
55
* @package XiaMiPlayer
66
* @author 公子
7-
* @version 3.1.3
8-
* @link http://zh.eming.li/#typecho
7+
* @version 3.1.4
8+
* @link https://imnerd.org
99
*/
1010
class XiaMiPlayer_Plugin implements Typecho_Plugin_Interface
1111
{
@@ -273,10 +273,9 @@ function show(id, name) {
273273
else
274274
$('ul#playlist').append('<li data-id="'+id+'">'+name+'</li>');
275275
} else {
276-
rm();
277-
var c = '<script type="text/javascript" src="<?php echo $music; ?>?songs='+id+'<?php if($color) echo "&setting=$color"; ?>"><\/script>';
278-
$('#text').val($('#text').val() + c);
276+
var c = '[xiami <?php echo $music; ?>?songs='+id+'<?php if($color) echo "&setting=$color"; ?>]';
279277
editor(c);
278+
rm();
280279
}
281280
}
282281

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

299297
function editor(c) {
298+
var textarea = $('#text'),
299+
sel = textarea.getSelection(),
300+
offset = (sel ? sel.start : 0)+c.length;
301+
textarea.replaceSelection(c);
302+
textarea.setSelection(offset,offset);
300303
if (window.frames.length > 0) {
301304
if (fck = window.frames['text___Frame'])
302305
var _c = fck.document.getElementsByTagName('iframe')[0].contentDocument.body;
@@ -402,45 +405,51 @@ public static function ParseXiaMi($content, $widget, $lastResult) {
402405
$color = '';
403406
break;
404407
}
405-
/** Markdown 支持 **/
406-
$number = preg_match_all("/<a rel=\"nofollow\" href=\"(http:\/\/(www.)?xiami\.com\/([a-z]+)\/([0-9]+).*?)\">\\1<\/a>/im", $content, $match);
408+
/** 短代码替换 **/
409+
$number = preg_match_all('/\[xiami (.*?)\]/si', $content, $match);
410+
if($number) {foreach($match[0] as $key => $string) {
411+
$content = str_replace($string, '<script type="text/javascript" src="'.strip_tags($match[1][$key]).'"></script>', $content);
412+
}}
413+
414+
/** Markdown替换 **/
415+
$number = preg_match_all("/<a href=\"(https:\/\/(www.)?xiami\.com\/([a-z]+)\/([a-zA-Z0-9]+))\">\\1<\/a>/im", $content, $match);
407416
if($number) {foreach($match[0] as $key => $string) {
408-
$type = $match[3][$key];
417+
$type = $match[3][$key]=='song' ? 'songs' : $match[3][$key];
409418
$id = $match[4][$key];
410419
$result = json_decode(file_get_contents($ajax.'?type='.$type.'&id='.$id), true);
411420
if(in_array($type, array("album", "collect"))) {
412421
if(empty($result['songs'])) continue;
413422
$songs = array();
414423
foreach($result['songs'] as $song) $songs[] = $song['song_id'];
415-
$url .= "?songs=".implode(',', $songs);
416-
if($color) $url .= "&setting=$color";
417-
$content = str_replace($string, '<script type="text/javascript" src="'.$url.'"></script>', $content);
424+
$lurl = $url."?songs=".implode(',', $songs);
425+
if($color) $lurl .= "&setting=$color";
426+
$content = str_replace($string, '<script type="text/javascript" src="'.$lurl.'"></script>', $content);
418427
} else {
419428
if(!$result['song_id']) continue;
420-
$url .= "?songs=".$result['song_id'];
421-
if($color) $url .= "&setting=$color";
422-
$content = str_replace($string, '<script type="text/javascript" src="'.$url.'"></script>', $content);
429+
$surl = $url."?songs=".$result['song_id'];
430+
if($color) $surl .= "&setting=$color";
431+
$content = str_replace($string, '<script type="text/javascript" src="'.$surl.'"></script>', $content);
423432
}
424433
}}
425434

426-
/** 非Markdown 支持 **/
427-
$number = preg_match_all("/http:\/\/(www.)?xiami\.com\/([a-z]+)\/([0-9]+)/im", $content, $match);
435+
/** 非Markdown替换 **/
436+
$number = preg_match_all("/https:\/\/(www.)?xiami\.com\/([a-z]+)\/([a-zA-Z0-9]+)/im", $content, $match);
428437
if($number) {foreach($match[0] as $key => $string) {
429-
$type = $match[2][$key];
438+
$type = $match[2][$key]=='song' ? 'songs' : $match[2][$key];
430439
$id = $match[3][$key];
431440
$result = json_decode(file_get_contents($ajax.'?type='.$type.'&id='.$id), true);
432441
if(in_array($type, array("album", "collect"))) {
433442
if(empty($result['songs'])) continue;
434443
$songs = array();
435444
foreach($result['songs'] as $song) $songs[] = $song['song_id'];
436-
$url .= "?songs=".implode(',', $songs);
437-
if($color) $url .= "&setting=$color";
438-
$content = str_replace($string, '<script type="text/javascript" src="'.$url.'"></script>', $content);
445+
$lurl = $url."?songs=".implode(',', $songs);
446+
if($color) $lurl .= "&setting=$color";
447+
$content = str_replace($string, '<script type="text/javascript" src="'.$lurl.'"></script>', $content);
439448
} else {
440449
if(!$result['song_id']) continue;
441-
$url .= "?songs=".$result['song_id'];
442-
if($color) $url .= "&setting=$color";
443-
$content = str_replace($string, '<script type="text/javascript" src="'.$url.'"></script>', $content);
450+
$surl = $url."?songs=".$result['song_id'];
451+
if($color) $surl .= "&setting=$color";
452+
$content = str_replace($string, '<script type="text/javascript" src="'.$surl.'"></script>', $content);
444453
}
445454
}}
446455
return $content;

XiaMiPlayer/README.md

+9-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
1-
### 迷你版虾米点播插件XiaMiPlayer v3.1.3
1+
### 迷你版虾米点播插件XiaMiPlayer v3.1.4
22

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

5-
- 3.1.3复活版(17-2-16)更新:整合[XiamiMusicAPI](https://github.com/metowolf/XiamiMusicAPI)内置action调用核心功能。([@羽中](https://github.com/jzwalk)
6-
:warning:lyric.php缺失,暂时无法显示歌词。
5+
:warning:由于原服务端lyric.php缺失暂时无法显示歌词。
6+
7+
- v3.1.4(18-7-25):([@羽中](https://github.com/jzwalk)
8+
使用短代码替换兼容Typecho1.1+版Markdown解析,修正虾米地址自动替换和编辑区焦点定位等问题。
9+
10+
- v3.1.3复活版(17-2-16):
11+
整合[XiamiMusicAPI](https://github.com/metowolf/XiamiMusicAPI)内置action调用核心功能。
712

813
- 补更至v3.1.2。
914

0 commit comments

Comments
 (0)