notadd / neditor

基于 ueditor的更现代化的富文本编辑器,支持HTTPS
https://demo.neditor.notadd.com/
MIT License
1.91k stars 267 forks source link

插入带参数的优酷视频地址后播放BUG解决方案 #124

Closed Skqing closed 5 years ago

Skqing commented 5 years ago

插入优酷视频,地址不同有时不能播放,例如:

https://v.youku.com/v_show/id_XNDE0Nzk2ODE4MA==.html?spm=a2ha1.12675304.m_7182_c_14738.1&scm=20140719.manual.7182.video_XNDE0Nzk2ODE4MA%3D%3D

这种带参数地址无法播放,去掉参数插入后才能播放:

https://v.youku.com/v_show/id_XNDE0Nzk2ODE4MA==.html

怀疑是video.js中的方法convert_url的正则表达式有问题,无法获取正确的地址。 解决方法,去掉视频地址中多余的参数:

function convert_url(url){
        if ( !url ) return '';
        var arr = url.split('?');
        if (arr && arr.length > 1) {
            url = arr[0];
        }
        url = utils.trim(url)
            .replace(/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html/i, 'player.youku.com/player.php/sid/$1/v.swf')
            .replace(/(www\.)?youtube\.com\/watch\?v=([\w\-]+)/i, "www.youtube.com/v/$2")
            .replace(/youtu.be\/(\w+)$/i, "www.youtube.com/v/$1")
            .replace(/v\.ku6\.com\/.+\/([\w\.]+)\.html.*$/i, "player.ku6.com/refer/$1/v.swf")
            .replace(/www\.56\.com\/u\d+\/v_([\w\-]+)\.html/i, "player.56.com/v_$1.swf")
            .replace(/www.56.com\/w\d+\/play_album\-aid\-\d+_vid\-([^.]+)\.html/i, "player.56.com/v_$1.swf")
            .replace(/v\.pps\.tv\/play_([\w]+)\.html.*$/i, "player.pps.tv/player/sid/$1/v.swf")
            .replace(/www\.letv\.com\/ptv\/vplay\/([\d]+)\.html.*$/i, "i7.imgs.letv.com/player/swfPlayer.swf?id=$1&autoplay=0")
            .replace(/www\.tudou\.com\/programs\/view\/([\w\-]+)\/?/i, "www.tudou.com/v/$1")
            .replace(/v\.qq\.com\/cover\/[\w]+\/[\w]+\/([\w]+)\.html/i, "static.video.qq.com/TPout.swf?vid=$1")
            .replace(/v\.qq\.com\/.+[\?\&]vid=([^&]+).*$/i, "static.video.qq.com/TPout.swf?vid=$1")
            .replace(/my\.tv\.sohu\.com\/[\w]+\/[\d]+\/([\d]+)\.shtml.*$/i, "share.vrs.sohu.com/my/v.swf&id=$1");

        return url;
    }
zuohuadong commented 5 years ago

欢迎提交PR ~

Skqing commented 5 years ago

可以,抽空弄一下