返回首頁 

Greasy Fork is available in English.

Moe-FM Fav-Songs Random Play

随机播放萌否电台中收藏的音乐的小脚本( ̄▽ ̄")……

  1. // ==UserScript==// @name Moe-FM Fav-Songs Random Play// @version 1.3// @author 864907600cc// @description 随机播放萌否电台中收藏的音乐的小脚本( ̄▽ ̄")……// @include http://moe.fm/home/*// @include http://moe.fm/listen*// @exclude http://moe.fm/listen/playlist*// @icon http://nyan.moefou.org/avatar_group/00/00/000074.jpg// @grant none// @namespace https://greasyfork.org/users/141// ==/UserScript==if(!window.localStorage.getItem('rp-setting'))window.localStorage.setItem('rp-setting','{"s1":1,"s2":0,"s3":50,"s4":0}');var rps=JSON.parse(window.localStorage.getItem('rp-setting'));if(rps.s4==null||rps.s4==undefined)rps.s4=1;if(/moe.fm\/listen/.test(window.location.href)){if(window.sessionStorage.length>0)window.sessionStorage.clear();var clickb=document.createElement('li'),issetting=0;clickb.innerHTML='<style>.random-play .random-play-setting{position:absolute;right:10px;display:none}.random-play:hover .random-play-setting{display:inline;color:#0069D6;}.random-play .random-play-setting:hover{color:#444}</style><a class="radio-menu-fav-song random-play" style="cursor:pointer">随机播放收藏曲目<span class="random-play-setting">设置</span></a>';clickb.className='b-b';document.getElementsByClassName('radio-menu-container')[0].getElementsByTagName('ul')[0].appendChild(clickb);clickb.getElementsByTagName('span')[0].onclick=function(event){issetting=1;setting();}clickb.onclick=function(event){if(issetting!=1){if(!window.localStorage.getItem('rp-favsong-data')){window.sessionStorage.setItem('rp-fetch','true');/*rps.s4==0?*/getting()/*:getting_xml()*/;}else if(rps.s1==1){if(rps.s2==1)window.localStorage.removeItem('rp-favsong-data');window.sessionStorage.setItem('rp-fetch','true');/*rps.s4==0?*/getting()/*:getting_xml()*/;}else run();}}}if(window.sessionStorage.getItem('rp-fetch'))getting();function getting(){var user=document.getElementsByClassName('navi-panel-content')[0].getElementsByTagName('a')[0].href.split('moe.fm/home/')[1],src='http://moe.fm/home/'+user+'/songs';if(!window.sessionStorage.getItem('rp-page')){window.sessionStorage.setItem('rp-page','1');window.location.href=src;}else{if(!window.sessionStorage.getItem('rp-lastpage')){var page_a=document.getElementsByClassName('pages')[0].getElementsByTagName('a');var lastpage=page_a[page_a.length-1].href.split('page/')[1];window.sessionStorage.setItem('rp-lastpage',lastpage);}var _=document.createElement('div');_.id='rp_tips';document.body.appendChild(_);_.innerHTML='<style>#rp_tips{width:100%;text-align:center;color:white;font-size:32px;top:50%;margin-top:-59px;vertical-align:middle;position:fixed;z-index:99999;-webkit-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none;pointer-events:none;font-family:"微软雅黑","Microsoft Yahei Font","微軟細黑"}#rp_tips p{background:rgba(255,119,119,.5);padding-top:50px;padding-bottom:50px;text-shadow:red 0 0 5px,red 0 0 5px,red 0 0 7px,red 0 0 7px,red 0 0 10px,red 0 0 10px,red 0 0 15px,red 0 0 15px;}</style><p id="rp_tips_t">正在获取第 '+window.sessionStorage.getItem('rp-page')+' 页数据,共 '+window.sessionStorage.getItem('rp-lastpage')+' 页,请稍候......</p>';if(!window.localStorage.getItem('rp-favsong-data'))window.localStorage.setItem('rp-favsong-data','');var button=document.getElementsByClassName('fav-song');for(var i=0;i<button.length-1;i++){var data=button[i].href.split('song/')[1].split('?')[0];if(!RegExp(data).test(window.localStorage.getItem('rp-favsong-data'))){r###lt=1;window.localStorage.setItem('rp-favsong-data',data+'|'+window.localStorage.getItem('rp-favsong-data'));}else{r###lt=2;//break;}}if(r###lt==1){window.sessionStorage.setItem('rp-page',parseInt(window.sessionStorage.getItem('rp-page'),10)+1);var page=parseInt(window.sessionStorage.getItem('rp-page'),10),lastpage=parseInt(window.sessionStorage.getItem('rp-lastpage'),10);if(page<=lastpage)window.location.href=src+'/page/'+page;else redir();}else if(r###lt==2)redir();}}function getting_xml(){var str='http://moe.fm/listen/playlist?api=json&api_key=2cbd62a82755d15d054525b1646af0b30517cafd2&fav=song&perpage=30&page=',xhr=new XMLHttpRequest(),p=1,_=document.createElement('div'),l,r###lt;if(!window.localStorage.getItem('rp-favsong-data'))window.localStorage.setItem('rp-favsong-data','');_.id='rp_tips';document.body.appendChild(_);_.innerHTML='<style>#rp_tips{width:100%;text-align:center;color:white;font-size:32px;bottom:0;vertical-align:middle;position:fixed;z-index:99999;-webkit-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none;pointer-events:none;font-family:"微软雅黑","Microsoft Yahei Font","微軟細黑"}#rp_tips p{background:rgba(255,119,119,.5);padding-top:50px;padding-bottom:50px;text-shadow:red 0 0 5px,red 0 0 5px,red 0 0 7px,red 0 0 7px,red 0 0 10px,red 0 0 10px,red 0 0 15px,red 0 0 15px;}</style><p id="rp_tips_t">正在获取第 <span id="rp_tips_t_n">1</span> 页数据,请稍候......</p>';xhr.onreadystatechange=function(){if(xhr.readyState==4&&xhr.status==200){l=JSON.parse(xhr.responseText).response;if(l){var ls=l.playlist;for(var i=0;i<ls.length;i++){if(window.localStorage.getItem('rp-favsong-data').indexOf(ls[i].sub_id)<0){window.localStorage.setItem('rp-favsong-data',ls[i].sub_id+'|'+window.localStorage.getItem('rp-favsong-data'));r###lt=1;}else{//break;r###lt=2;}}if(l.information.may_have_next==true)p++;else r###lt=2;console.log(p)if(r###lt==1){document.getElementById('rp_tips_t_n').innerHTML=p;xhr.open('GET',str+p);xhr.send();}else redir();}else{alert('通过 API 获取数据失败,尝试使用默认方式获取收藏曲目数据……');getting();}}}xhr.open('GET',str+p);xhr.send();}function redir(){document.getElementById('rp_tips_t').innerHTML='数据更新完毕! 正在跳转至播放页......';window.sessionStorage.removeItem('rp-fetch');window.sessionStorage.removeItem('rp-page');window.sessionStorage.removeItem('rp-lastpage');window.sessionStorage.removeItem('rp-getdata');run();}function run(){var data=window.localStorage.getItem('rp-favsong-data').split('|'),playlist='';for(var i=0;i<rps.s3;i++){var num=parseInt(Math.random()*(data.length-2));playlist+=data[num]+',';}window.location.href='http://moe.fm/listen?song='+playlist;}function setting(){var s_bg=document.createElement('div');s_bg.style.cssText='position:fixed;width:100%;height:100%;z-index:99990;top:0;left:0';document.body.appendChild(s_bg);var s_container=document.createElement('div');s_container.style.cssText='position:fixed;top:50%;margin-top:-150px;width:750px;height:300px;outline:10000px solid rgba(0,0,0,.5);left:50%;margin-left:-375px;z-index:100000;font-size:14px;line-height:32px;background:rgba(255,255,255,.75);font-family:"微软雅黑","Microsoft Yahei Font","微軟細黑"';s_container.innerHTML='<div style="margin:25px"><h2 align="center">随机播放设置</h2><hr><p><input id="abc1" type="checkbox" name="abc1"><label for="abc1">每次播放前都更新收藏曲目数据</label><span style="color:gray">(推荐,其实也占用不了多少时间← ←)</span></p><p><input id="abc2" type="checkbox" name="abc2"><label for="abc2">更新收藏曲目数据时清除历史缓存</label><span style="color:gray">(不推荐,除非你取消了某些音乐或者出现了 bug ← ←)</span></p><p style="opacity:0.75;pointer-events:none"><input id="abc4" type="checkbox" name="abc4"><label for="abc4">通过 XMLHttpRequest 方式调用萌否 API 获取收藏曲目数据</label><del style="color:gray">(实验性功能,默认开启 ← ← 【喂!)</del></p><p><label for="abc3">开启随机播放时随机播放<input id="abc3" type="number" name="abc3" style="width:100px">首音乐</label><span style="color:gray">(默认 50 ,由于 $_GET 限制不宜设置过大← ←)</span></p><p align="center"><span id="abcb1" style="color:#f66;cursor:pointer">立即清除历史缓存</span> <span id="abcb2" style="color:#6f6;cursor:pointer">立即更新收藏曲目</span></p><p align="center"><input id="abcs" type="button" value="保存" style="width:75px;height:35px;font-family:\'微软雅黑\',\'Microsoft Yahei Font\',\'微軟細黑\'"></p><p align="center" style="color:gray;font-size:0.75em">有疑问、 bug 反馈?告诉我吧~~( ´ ▽ ` )ノ 我在萌否<a href="http://moefou.org/home/864907600cc" target="_blank">@864907600cc</a> 贴吧<a href="http://www.baidu.com/p/864907600cc" target="_blank">@864907600cc</a> (常驻 chrome 吧),感谢支持~~&gt; &lt;</p></div>';document.body.appendChild(s_container);if(rps.s1==1)document.getElementById('abc1').setAttribute('checked','checked');if(rps.s2==1)document.getElementById('abc2').setAttribute('checked','checked');if(rps.s3)document.getElementById('abc3').setAttribute('value',rps.s3);//if(rps.s4==1)document.getElementById('abc4').setAttribute('checked','checked');document.getElementById('abcb1').onclick=function(event){window.localStorage.removeItem('rp-favsong-data');alert('数据已清除...在下次随机播放时会重新获取并储存收藏曲目数据...');}document.getElementById('abcb2').onclick=function(event){if(rps.s2==1)window.localStorage.removeItem('rp-favsong-data');window.sessionStorage.setItem('rp-fetch','true');rps.s4==0?getting():getting_xml();}document.getElementById('abcs').onclick=function(event){var abc=new Object();if(document.getElementById('abc1').checked)abc.s1=1;else abc.s1=0;if(document.getElementById('abc2').checked)abc.s2=1;else abc.s2=0;if(document.getElementById('abc3').value)abc.s3=document.getElementById('abc3').value;else{abc.s3=50;alert('随机播放音乐数设置有误...已设置为默认值...');}//if(document.getElementById('abc4').checked)abc.s4=1;else abc.s4=0;window.localStorage.setItem('rp-setting',JSON.stringify(abc));issetting=0;s_container.outerHTML='';s_bg.outerHTML='';rps=JSON.parse(window.localStorage.getItem('rp-setting'));}}if(!window.localStorage.getItem('rp_version')||window.localStorage.getItem('rp_version')!='1.3'){if(!window.localStorage.getItem('rp_version'))var l_version='1.0';else var l_version=window.localStorage.getItem('rp_version');var tips=document.createElement('script');tips.src='http://ext.ccloli.com/moe-fm/rp-update-tips?version='+l_version;document.body.appendChild(tips);window.localStorage.setItem('rp_version','1.3');}