让WordPress视频播放插件Smartideo支持B站BV号

Plugins376.1K阅读模式

B站(bilibili)近期调整视频链接ID为BV开头,B站说是为了保护稿件信息安全,容纳更多投稿,维护UP主的权益。但升级后的链接造成WordPres视频播放插件Smartideo中的正则无法获取由数字和大小写字母组成的字符串,原来直接复制粘贴视频地址到文章中调用视频的方法失效,有用户已在插件作者网站反映,作者并没有回应,可能因各视频站更新升级频繁,Smartideo插件很多视频站点都已不支持,估计作者已放弃更新了。

让WordPress视频播放插件Smartideo支持B站BV号

上篇《B站BV号链接转av号》中教大家如何获取原来av开头的链接地址。这篇教大家修改视频播放插件 Smartideo 让其支持B站BV号。

应读者要求已直接提供修改后的插件下载,下面的修改说明留给动手能力较强的朋友吧。

于2020年5月23日更新,修正去B站观看链接错误。

查看修改方法

展开收缩

打开Smartideo插件smartideo.php文件,在大约87行:

array($this, 'smartideo_embed_handler_bilibili') );

下面添加:

wp_embed_register_handler( 'smartvideo_bilibili_bv',
	'#https?://www\.bilibili\.com/video/BV(?:(?<video_id1>[a-z0-9_=\-]+)/(?:index_|\#page=)(?<video_id2>[a-z0-9_=\-]+)|(?<video_id>[a-z0-9_=\-]+))#i',
	array($this, 'smartvideo_embed_handler_bilibili_bv') );

接下来在大约195行找到:

return apply_filters( 'embed_bilibili', $embed, $matches, $attr, $url, $rawattr );

在其下面“}”大括号下面添加:

public function smartvideo_embed_handler_bilibili_bv( $matches, $attr, $url, $rawattr ) {
	$matches['video_id'] = ($matches['video_id1'] == '') ? $matches['video_id'] : $matches['video_id1'];
	$page = ($matches['video_id2'] > 1) ? $matches['video_id2'] : 1;
	$cid = '';
	$embed = $this->get_iframe("//player.bilibili.com/player.html?bvid=BV{$matches['video_id']}&cid={$cid}&page={$page}", $url);
	return apply_filters( 'embed_bilibili', $embed, $matches, $attr, $url, $rawattr );
}

之后直接在文章中添加B站视频地址:

https://www.bilibili.com/video/BV1WW411b7NQ

试试吧,可以加载播放视频了。


不过发现插件貌似也不支原来的av地址呢,难道在高级功能里?没试过。

https://www.bilibili.com/video/av17792443

再接着修改一下吧,将:

public function smartideo_embed_handler_bilibili( $matches, $attr, $url, $rawattr ) {
    $matches['video_id'] = ($matches['video_id1'] == '') ? $matches['video_id'] : $matches['video_id1'];
    $page = ($matches['video_id2'] > 1) ? $matches['video_id2'] : 1;
    $cid = '';
    /*
    try{
        $request = new WP_Http();
        $url = "https://api.bilibili.com/view?type=jsonp&appkey=8e9fc618fbd41e28&id=" . $matches['video_id'];
        $data = (array)$request->request($url, array('timeout' => 3));
        $json = json_decode($data['body'], true);
        $cid = $json['cid'];

    }catch(Exception $e){}
    */
    if(wp_is_mobile() || $this->bilibili_pc_player == 1){
        $embed = $this->get_iframe("//player.bilibili.com/player.html?aid={$matches['video_id']}&cid={$cid}&page={$page}", $url);
    }else{
        $embed = $this->get_link($url);
    }
    return apply_filters( 'embed_bilibili', $embed, $matches, $attr, $url, $rawattr );
}

直接改为:

public function smartideo_embed_handler_bilibili( $matches, $attr, $url, $rawattr ) {
    $matches['video_id'] = ($matches['video_id1'] == '') ? $matches['video_id'] : $matches['video_id1'];
    $page = ($matches['video_id2'] > 1) ? $matches['video_id2'] : 1;
    $cid = '';
        $embed = $this->get_iframe("//player.bilibili.com/player.html?aid={$matches['video_id']}&cid={$cid}&page={$page}", $url);
    return apply_filters( 'embed_bilibili', $embed, $matches, $attr, $url, $rawattr );
}


补充:防止选择清晰度或者点击图标时跳转到B站。

打开Smartideo插件smartideo.php文件找到:

<iframe src="' . $url . '" width="100%" height="100%" frameborder="0" allowfullscreen="true"></iframe>

修改为:

<iframe src="' . $url . '" width="100%" height="100%" frameborder="0" allowfullscreen="true"  sandbox="allow-top-navigation allow-same-origin allow-forms allow-scripts"></iframe>

修改后会影响其它视频正常加载。


修改后同时兼容av和BV号。

因国内视频网站格局已定,再也不需要大家帮忙分享推荐,估计不远的将来,各大视频网站会通过各种手段,只让你发链接跳转到主站播放,在自己的网站引用视频必将成为过去式。

本站文章大部分始于原创,用于个人学习记录,可能对您有所帮助,仅供参考!

weinxin
我的微信
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
 
知更鸟
评论  37  访客  27  作者  10
    • 奶爸建网站笔记
      奶爸建网站笔记 4

      这个插件我用过,挺好用的,非常方便。

        • 慕容云翔
          慕容云翔 1

          @ 奶爸建网站笔记 选择清晰度或者点击图标时跳转到B站,无法正常打开B站

        • Clinton
          Clinton 0

          折腾一下试试 :grin:

          • 卡卡
            卡卡 0

            太牛了,感谢知更鸟

            • 歪?是3.1415926吗
              歪?是3.1415926吗 0

              谢谢鸟叔分享 :razz:

              • maqingxi
                maqingxi 5

                要年轻,上B站。他们是属于99/00年代人的乐园。

                • 飞飞
                  飞飞 1

                  赞赞赞

                  • 静水流深
                    静水流深 0

                    厉害,太感谢了

                    • 遇见台儿庄
                      遇见台儿庄 5

                      万分感谢鸟哥~~~

                      • 遇见台儿庄
                        遇见台儿庄 5

                        鸟哥的主题只要修改前面俩就可以了吧 :shock:

                          • 知更鸟
                            知更鸟

                            @ 遇见台儿庄 可以找我要替换文件

                              • mhon
                                mhon 1

                                @ 知更鸟 鸟哥,能否屏蔽视频上的按钮,不要跳转回B站,现在切换清晰度的时候会跳转回B站

                                  • 知更鸟
                                    知更鸟

                                    @ mhon 方法加文章中了

                                      • mhon
                                        mhon 1

                                        @ 知更鸟 鸟哥能否发一下替换文件,谢谢,自己试着改的没法播放 :sad: 11475070@qq.com

                                      • 知更鸟
                                        知更鸟

                                        @ mhon 文章中已提供修改后的下载地址

                                  • 造价圈
                                    造价圈 4

                                    找鸟叔要一下替换文件,thubby@qq.com

                                    • 沙雕龟
                                      沙雕龟 0

                                      同求替换文件,自己改了然后会报错

                                      • 逸轩
                                        逸轩 0

                                        老大啥时候出个小程序,买了其他的wp小程序,对begin兼容性都不太好,真心希望作者可以出个小程序,第一个买 :oops:

                                          • 悟
                                            3

                                            @ 逸轩 是的,目前wp小程序就那两个,799-1599不等,不只是对知更鸟模版,很多地方兼容性都不太好

                                          • wp trant
                                            wp trant 0

                                            文件替换成功了,可以正常播放AV和BV号了,就是BV号点击去bliliblili播放中,显示页面的不到,这个有办法修复吗

                                              • 慕容云翔
                                                慕容云翔 1

                                                @ wp trant 相同的问题,网站无法打开,少了BV两个英文

                                              • 阿里舞台
                                                阿里舞台 2

                                                鸟哥,目前使用的是上面分享的修改版插件,但在使用时,能看的是默认最渣清画质,切换画质时去到B站了。另外多P的视频似乎无法解决,就是复制后面P的视频链接,也全是播放第一P的视频内容。

                                                • 知更鸟
                                                  知更鸟

                                                  wp默认支持MP4视频,与这个插件无关

                                                  • 遇见台儿庄
                                                    遇见台儿庄 5

                                                    鸟哥啊,腾讯视频怎么弄成H5播放啊?现在的插件展示的腾讯视频都是flash,edge都不支持了 :arrow:

                                                    • 学乐器网
                                                      学乐器网 1

                                                      挺不错的插件,如果能把那个去吐槽遮蔽了就好了

                                                      • 学乐器网
                                                        学乐器网 1

                                                        怎么改防止选择清晰度或者点击图标时跳转到爱奇艺啊。

                                                          • 知更鸟
                                                            知更鸟

                                                            @ 学乐器网 貌似这插件目前不能添加爱奇艺
                                                            如果是B站,答案是不能

                                                          • 网中人
                                                            网中人 0

                                                            可惜梨视频的

                                                            • 前尘忆梦
                                                              前尘忆梦 1

                                                              链接挂了呀,打不开了。

                                                              • If Only。
                                                                If Only。 0

                                                                老板,我用的主题在文章编辑的时候加入B站的视频链接能正常显示视频,发布后在文章里只能显示视频链接,请问应该怎么处理呀

                                                                • Boom
                                                                  Boom 0

                                                                  代码加上了默认最高外链清晰度720P和取消弹幕

                                                                  • 众科网络
                                                                    众科网络 2

                                                                    怎么控制电脑端视频不让它自动播放呢?手机端没问题,电脑端打开页面就自动播放。升级到wordpress6.1.3版本了

                                                                  匿名

                                                                  发表评论

                                                                  匿名网友
                                                                  :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

                                                                  拖动滑块以完成验证