稀里糊涂地注册了两个网易账号,一个云音乐一个相册。于是需要把原原云音乐之前收藏的歌单复制到新账号。问题是,收藏我旧账号的歌单,它出现在收藏栏,意思不是我自己创建的了,所以我只好按旧账号创建歌单的名重新创建歌单,那里面的歌曲要一首一首收藏回来。。
这当然不行,我也收藏到歌单许多歌,一首首点收藏累死我。好吧,还是祭出javascript大脚本吧。
批量收藏云音乐到自己创建的歌单

思路是这样的,浏览别人账号某一个歌单页面,脚本取得歌单元素<div id="song-list-pre-cache" …下面的每一首哥的"收藏"按钮所在的span元素<span data-res-action="fav" class="icn icn-fav" title="收藏" …,用click()模拟点击事件,就跟人一首首点了收藏一样,把歌曲依次收藏到自己的歌单上。
脚本代码如下:

try {
    var EtableTRs = document.getElementById('song-list-pre-cache').querySelectorAll('table.m-table tbody tr');
    var Nlyct = 1, Nlist = EtableTRs.length, Ttime;
    function FLyctClick() {
        try {
            document.querySelectorAll('div.lyct.m-favgd.f-cb ul li')[Nlyct].querySelector('div.item.f-cb').click();
        } catch (Oerr2) {
            console.log('【警告】第 '+ (Nlist + 1) +' 首歌可能因版权不允许添加');
        }
        Ttime = setTimeout(FsongList, 9000);
    }
    function FsongList() {
        if (0 > --Nlist) {
            Ttime = null;
            alert('OK, 列表歌曲已撸一遍');
        } else {
            EtableTRs[Nlist].querySelector('span.icn.icn-fav').click();
            console.log('添加第 '+ (Nlist + 1) +' 首歌曲…');
            Ttime = setTimeout(FLyctClick, 4000);
        }
    }
    FsongList();
} catch (Oerr) {
    console.log('【出错】请手动查找一次页面中元素');
}

这里我遇到一个奇怪的现象就是document.getElementById('song-list-pre-cache')获取元素总是获取不到,但是在F12开发者工具用元素查找工具在页面中找过某一元素后,脚本就可以正确获取页面上各元素了,所以干脆在代码中写了行console.log('【出错】请手动查找一次页面中元素')。另外,实践中遇到收藏某些已经变灰色的歌曲不成功,网易提示“因版权不允许收藏”,所以代码中用了try-catch语句来允许某些歌曲不能点收藏的问题。
批量收藏云音乐到自己创建的歌单

嗯,妈妈再也不用担心要收藏的歌曲多啦。尤其是撸“喜欢的音乐”这个歌单,200来首,省了很大力气,倍儿爽。
最后给自己打个广告,我网易云音乐账号“咸菜一点米”,欢迎相互关注哈。

Next Post Previous Post