diff --git a/README.md b/README.md index a5672cb..462fd7d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Listen 1 (Chrome Extension) V1.7.0 +Listen 1 (Chrome Extension) V1.7.1 ========== (最后更新于2018年06月10日) @@ -45,6 +45,9 @@ Firefox打包安装 更新日志 ------- +`2018-06-10` +* 修复酷狗音乐收藏歌单后可能显示空歌单的bug + `2018-06-10` * 修复虾米音乐无法显示歌词的bug diff --git a/js/provider/kugou.js b/js/provider/kugou.js index 406f833..1898651 100644 --- a/js/provider/kugou.js +++ b/js/provider/kugou.js @@ -26,6 +26,41 @@ var kugou = (function() { return track; } + function async_process_list(data_list, handler, handler_extra_param_list, callback) { + var tracks = []; + var fnDict = {}; + $.each(data_list, function(index, item){ + fnDict[index] = function(callback){ + return handler(index, item, handler_extra_param_list, callback); + }; + }); + async.parallel(fnDict, function(err, results){ + $.each(data_list, function(index){ + tracks.push(results[index]); + }); + callback(null, tracks); + }); + } + + function kg_render_search_result_item(index, item, params, callback) { + var hm = params[0]; + + var track = kg_convert_song(item); + // Add singer img + var url = 'http://www.kugou.com/yy/index.php?' + + 'r=play/getdata&hash=' + track.lyric_url; + hm({ + url: url, + method: 'GET', + transformResponse: undefined + }).then(function(response){ + var data = response.data; + data = JSON.parse(data); + track.img_url = data.data.img; + callback(null, track); + }); + } + var kg_search = function(url, hm, se) { return { success: function(fn) { @@ -41,29 +76,52 @@ var kugou = (function() { .then(function(response){ var data = response.data data = JSON.parse(data); - var tracks = [] - $.each(data.data.lists, function(index, item){ - var track = kg_convert_song(item); - // Add singer img - target_url = 'http://www.kugou.com/yy/index.php?' - + 'r=play/getdata&hash=' + track.lyric_url; - hm({ - url: target_url, - method: 'GET', - transformResponse: undefined - }).then(function(response){ - var data = response.data; - data = JSON.parse(data); - track.img_url = data.data.img; - }); - tracks.push(track); + async_process_list(data.data.lists, kg_render_search_result_item, [hm], function(err, tracks){ + return fn({"result": tracks, "total": data.data.total}); }); - return fn({"result": tracks, "total": data.data.total}); }); } }; } + function kg_render_playlist_result_item(index, item, params, callback){ + var hm = params[0]; + var target_url = 'http://m.kugou.com/app/i/getSongInfo.php?' + + 'cmd=playInfo&hash=' + item.hash; + + var track = { + 'id': 'kgtrack_' + item.hash, + 'title': '', + 'artist': '', + 'artist_id': '', + 'album': '', + 'album_id': 'kgalbum_' + item.album_id, + 'source': 'kugou', + 'source_url': 'http://www.kugou.com/song/#hash=' + + item.hash + '&album_id=' + item.album_id, + 'img_url': '', + 'url': 'xmtrack_' + item.hash, + 'lyric_url': item.hash + }; + // Fix song info + hm.get(target_url).then(function(response){ + var data = response.data; + track['title'] = data.songName; + track['artist'] = data.singerId == 0 ? + '未知' : data.singerName; + track['artist_id'] = 'kgartist_' + data.singerId; + track['img_url'] = data.imgUrl.replace('{size}', '400'); + // Fix album + target_url = 'http://mobilecdnbj.kugou.com/api/v3/album/info?albumid=' + + item.album_id; + hm.get(target_url).then(function(response){ + var data = response.data; + track['album'] = data.status ? data.data.albumname : ''; + return callback(null, track); + }); + }); + } + var kg_get_playlist = function(url, hm, se) { return { success: function(fn) { @@ -83,48 +141,55 @@ var kugou = (function() { }; var tracks = []; - $.each(data.list.list.info, function(index, item){ - target_url = 'http://m.kugou.com/app/i/getSongInfo.php?' - + 'cmd=playInfo&hash=' + item.hash; - var track = { - 'id': 'kgtrack_' + item.hash, - 'title': '', - 'artist': '', - 'artist_id': '', - 'album': '', - 'album_id': 'kgalbum_' + item.album_id, - 'source': 'kugou', - 'source_url': 'http://www.kugou.com/song/#hash=' - + item.hash + '&album_id=' + item.album_id, - 'img_url': '', - 'url': 'xmtrack_' + item.hash, - 'lyric_url': item.hash - }; - // Fix song info - hm.get(target_url).then(function(response){ - var data = response.data; - track['title'] = data.songName; - track['artist'] = data.singerId == 0 ? - '未知' : data.singerName; - track['artist_id'] = 'kgartist_' + data.singerId; - track['img_url'] = data.imgUrl.replace('{size}', '400'); - }); - // Fix album - target_url = 'http://mobilecdnbj.kugou.com/api/v3/album/info?albumid=' - + item.album_id; - hm.get(target_url).then(function(response){ - var data = response.data; - track['album'] = data.status ? data.data.albumname : ''; - }); - tracks.push(track); + async_process_list(data.list.list.info, kg_render_playlist_result_item, [hm], function(err, tracks){ + return fn({"tracks":tracks, "info":info}); }); - return fn({"tracks":tracks, "info":info}); }); } }; } + function kg_render_artist_result_item(index, item, params, callback){ + var hm = params[0]; + var info = params[1]; + var track = { + 'id': 'kgtrack_' + item.hash, + 'title': '', + 'artist': '', + 'artist_id': info['id'], + 'album': '', + 'album_id': 'kgalbum_' + item.album_id, + 'source': 'kugou', + 'source_url': 'http://www.kugou.com/song/#hash=' + + item.hash + '&album_id=' + item.album_id, + 'img_url': '', + 'url': 'kgtrack_' + item.hash, + 'lyric_url': item.hash + }; + var one = item.filename.split('-'); + track['title'] = $.trim(one[1]); + track['artist'] = $.trim(one[0]); + // Fix album name and img + var target_url = 'http://www.kugou.com/yy/index.php?' + + 'r=play/getdata&hash=' + item.hash; + hm({ + url: 'http://mobilecdnbj.kugou.com/api/v3/album/info?albumid=' + item.album_id, + method: 'GET', + transformResponse: undefined + }).then(function(response){ + var data = response.data; data = JSON.parse(data); + track['album'] = data.status ? data.data.albumname : ''; + hm({ + url: target_url, method: 'GET', transformResponse: undefined + }).then(function(response){ + var data = JSON.parse(response.data); + track['img_url'] = data.data.img; + callback(null, track); + }); + }); + } + var kg_artist = function(url, hm, se) { return { success: function(fn) { @@ -152,43 +217,10 @@ var kugou = (function() { }).then(function(response){ var data = response.data; data = JSON.parse(data); - var tracks = [] - $.each(data.data.info, function(index, item){ - var track = { - 'id': 'kgtrack_' + item.hash, - 'title': '', 'artist': '', 'artist_id': info['id'], - 'album': '', - 'album_id': 'kgalbum_' + item.album_id, - 'source': 'kugou', - 'source_url': 'http://www.kugou.com/song/#hash=' - + item.hash + '&album_id=' + item.album_id, - 'img_url': '', - 'url': 'kgtrack_' + item.hash, - 'lyric_url': item.hash - }; - var one = item.filename.split('-'); - track['title'] = $.trim(one[1]); - track['artist'] = $.trim(one[0]); - // Fix album name and img - target_url = 'http://www.kugou.com/yy/index.php?' - + 'r=play/getdata&hash=' + item.hash; - hm({ - url: 'http://mobilecdnbj.kugou.com/api/v3/album/info?albumid=' + item.album_id, - method: 'GET', - transformResponse: undefined - }).then(function(response){ - var data = response.data; data = JSON.parse(data); - track['album'] = data.status ? data.data.albumname : ''; - }); - hm({ - url: target_url, method: 'GET', transformResponse: undefined - }).then(function(response){ - var data = JSON.parse(response.data); - track['img_url'] = data.data.img; - }); - tracks.push(track); + var tracks = []; + async_process_list(data.data.info, kg_render_artist_result_item, [hm, info], function(err, tracks){ + return fn({"tracks":tracks, "info":info}); }); - return fn({"tracks":tracks,"info": info}); }); }); } @@ -236,6 +268,40 @@ var kugou = (function() { }; } + function kg_render_album_result_item(index, item, params, callback){ + var hm = params[0]; + var info = params[1]; + var album_id = params[2]; + var track = { + 'id': 'kgtrack_' + item.hash, + 'title': '', + 'artist': '', + 'artist_id': '', + 'album': info['title'], + 'album_id': 'kgalbum_' + album_id, + 'source': 'kugou', + 'source_url': 'http://www.kugou.com/song/#hash=' + + item.hash + '&album_id=' + album_id, + 'img_url': '', + 'url': 'xmtrack_' + item.hash, + 'lyric_url': item.hash + }; + // Fix other data + var target_url = 'http://m.kugou.com/app/i/getSongInfo.php?' + + 'cmd=playInfo&hash=' + item.hash; + hm({ + url: target_url, method: 'GET', transformResponse: undefined + }).then(function(response){ + var data = JSON.parse(response.data); + track['title'] = data.songName; + track['artist'] = data.singerId == 0 ? + '未知' : data.singerName; + track['artist_id'] = 'kgartist_' + data.singerId; + track['img_url'] = data.imgUrl.replace('{size}', '400'); + callback(null, track); + }); + } + var kg_album = function(url, hm, se) { return { success: function(fn) { @@ -260,49 +326,21 @@ var kugou = (function() { 'source_url': 'http://www.kugou.com/album/{id}.html' .replace('{id}', data.data.albumid) }; - }); - target_url = 'http://mobilecdnbj.kugou.com/api/v3/album/song?' + target_url = 'http://mobilecdnbj.kugou.com/api/v3/album/song?' + 'albumid=' + album_id + '&page=1&pagesize=-1' - hm({ - url: target_url, - method: 'GET', - transformResponse: undefined - }).then(function(response){ - var data = response.data; - data = JSON.parse(data); + hm({ + url: target_url, + method: 'GET', + transformResponse: undefined + }).then(function(response){ + var data = response.data; + data = JSON.parse(data); - $.each(data.data.info, function(index, item){ - var track = { - 'id': 'kgtrack_' + item.hash, - 'title': '', - 'artist': '', - 'artist_id': '', - 'album': info['title'], - 'album_id': 'kgalbum_' + album_id, - 'source': 'kugou', - 'source_url': 'http://www.kugou.com/song/#hash=' - + item.hash + '&album_id=' + album_id, - 'img_url': '', - 'url': 'xmtrack_' + item.hash, - 'lyric_url': item.hash - }; - // Fix other data - target_url = 'http://m.kugou.com/app/i/getSongInfo.php?' - + 'cmd=playInfo&hash=' + item.hash; - hm({ - url: target_url, method: 'GET', transformResponse: undefined - }).then(function(response){ - var data = JSON.parse(response.data); - track['title'] = data.songName; - track['artist'] = data.singerId == 0 ? - '未知' : data.singerName; - track['artist_id'] = 'kgartist_' + data.singerId; - track['img_url'] = data.imgUrl.replace('{size}', '400'); + async_process_list(data.data.info, kg_render_album_result_item, [hm, info, album_id], function(err, tracks){ + return fn({"tracks":tracks, "info":info}); }); - tracks.push(track); }); - return fn({"tracks": tracks,"info": info}); }); } }; diff --git a/js/vendor/async.min.js b/js/vendor/async.min.js new file mode 100644 index 0000000..013f194 --- /dev/null +++ b/js/vendor/async.min.js @@ -0,0 +1,2 @@ +!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.async=n.async||{})}(this,function(n){"use strict";function t(n,t){t|=0;for(var e=Math.max(n.length-t,0),r=Array(e),u=0;u-1&&n%1==0&&n<=Tt}function d(n){return null!=n&&v(n.length)&&!y(n)}function m(){}function g(n){return function(){if(null!==n){var t=n;n=null,t.apply(this,arguments)}}}function b(n,t){for(var e=-1,r=Array(n);++e-1&&n%1==0&&nu?0:u+t),e=e>u?u:e,e<0&&(e+=u),u=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(u);++r=r?n:Z(n,t,e)}function tn(n,t){for(var e=n.length;e--&&J(t,n[e],0)>-1;);return e}function en(n,t){for(var e=-1,r=n.length;++e-1;);return e}function rn(n){return n.split("")}function un(n){return Xe.test(n)}function on(n){return n.match(mr)||[]}function cn(n){return un(n)?on(n):rn(n)}function fn(n){return null==n?"":Y(n)}function an(n,t,e){if(n=fn(n),n&&(e||void 0===t))return n.replace(gr,"");if(!n||!(t=Y(t)))return n;var r=cn(n),u=cn(t),i=en(r,u),o=tn(r,u)+1;return nn(r,i,o).join("")}function ln(n){return n=n.toString().replace(kr,""),n=n.match(br)[2].replace(" ",""),n=n?n.split(jr):[],n=n.map(function(n){return an(n.replace(Sr,""))})}function sn(n,t){var e={};N(n,function(n,t){function r(t,e){var r=K(u,function(n){return t[n]});r.push(e),a(n).apply(null,r)}var u,i=f(n),o=!i&&1===n.length||i&&0===n.length;if(Pt(n))u=n.slice(0,-1),n=n[n.length-1],e[t]=u.concat(u.length>0?r:n);else if(o)e[t]=n;else{if(u=ln(n),0===n.length&&!i&&0===u.length)throw new Error("autoInject task functions require explicit parameters.");i||u.pop(),e[t]=u.concat(r)}}),Ve(e,t)}function pn(){this.head=this.tail=null,this.length=0}function hn(n,t){n.length=1,n.head=n.tail=t}function yn(n,t,e){function r(n,t,e){if(null!=e&&"function"!=typeof e)throw new Error("task callback must be a function");if(s.started=!0,Pt(n)||(n=[n]),0===n.length&&s.idle())return lt(function(){s.drain()});for(var r=0,u=n.length;r0&&c.splice(i,1),u.callback.apply(u,arguments),null!=t&&s.error(t,u.data)}o<=s.concurrency-s.buffer&&s.unsaturated(),s.idle()&&s.drain(),s.process()}}if(null==t)t=1;else if(0===t)throw new Error("Concurrency must not be zero");var i=a(n),o=0,c=[],f=!1,l=!1,s={_tasks:new pn,concurrency:t,payload:e,saturated:m,unsaturated:m,buffer:t/4,empty:m,drain:m,error:m,started:!1,paused:!1,push:function(n,t){r(n,!1,t)},kill:function(){s.drain=m,s._tasks.empty()},unshift:function(n,t){r(n,!0,t)},remove:function(n){s._tasks.remove(n)},process:function(){if(!l){for(l=!0;!s.paused&&o2&&(i=t(arguments,1)),u[e]=i,r(n)})},function(n){r(n,u)})}function Dn(n,t){Vn(Ie,n,t)}function Rn(n,t,e){Vn(q(t),n,e)}function Cn(n,t){if(t=g(t||m),!Pt(n))return t(new TypeError("First argument to race must be an array of functions"));if(!n.length)return t();for(var e=0,r=n.length;er?1:0}var u=a(t);_e(n,function(n,t){u(n,function(e,r){return e?t(e):void t(null,{value:n,criteria:r})})},function(n,t){return n?e(n):void e(null,K(t.sort(r),Fn("value")))})}function Xn(n,t,e){var r=a(n);return ct(function(u,i){function o(){var t=n.name||"anonymous",r=new Error('Callback function "'+t+'" timed out.');r.code="ETIMEDOUT",e&&(r.info=e),f=!0,i(r)}var c,f=!1;u.push(function(){f||(i.apply(null,arguments),clearTimeout(c))}),c=setTimeout(o,t),r.apply(null,u)})}function Yn(n,t,e,r){for(var u=-1,i=iu(uu((t-n)/(e||1)),0),o=Array(i);i--;)o[r?i:++u]=n,n+=e;return o}function Zn(n,t,e,r){var u=a(e);Ue(Yn(0,n,1),t,u,r)}function nt(n,t,e,r){arguments.length<=3&&(r=e,e=t,t=Pt(n)?[]:{}),r=g(r||m);var u=a(e);Ie(n,function(n,e,r){u(t,n,e,r)},function(n){r(n,t)})}function tt(n,e){var r,u=null;e=e||m,Ur(n,function(n,e){a(n)(function(n,i){r=arguments.length>2?t(arguments,1):i,u=n,e(!n)})},function(){e(u,r)})}function et(n){return function(){return(n.unmemoized||n).apply(null,arguments)}}function rt(n,e,r){r=U(r||m);var u=a(e);if(!n())return r(null);var i=function(e){if(e)return r(e);if(n())return u(i);var o=t(arguments,1);r.apply(null,[null].concat(o))};u(i)}function ut(n,t,e){rt(function(){return!n.apply(this,arguments)},t,e)}var it,ot=function(n){var e=t(arguments,1);return function(){var r=t(arguments);return n.apply(null,e.concat(r))}},ct=function(n){return function(){var e=t(arguments),r=e.pop();n.call(this,e,r)}},ft="function"==typeof setImmediate&&setImmediate,at="object"==typeof process&&"function"==typeof process.nextTick;it=ft?setImmediate:at?process.nextTick:r;var lt=u(it),st="function"==typeof Symbol,pt="object"==typeof global&&global&&global.Object===Object&&global,ht="object"==typeof self&&self&&self.Object===Object&&self,yt=pt||ht||Function("return this")(),vt=yt.Symbol,dt=Object.prototype,mt=dt.hasOwnProperty,gt=dt.toString,bt=vt?vt.toStringTag:void 0,jt=Object.prototype,St=jt.toString,kt="[object Null]",Lt="[object Undefined]",Ot=vt?vt.toStringTag:void 0,wt="[object AsyncFunction]",xt="[object Function]",Et="[object GeneratorFunction]",At="[object Proxy]",Tt=9007199254740991,Bt={},Ft="function"==typeof Symbol&&Symbol.iterator,It=function(n){return Ft&&n[Ft]&&n[Ft]()},_t="[object Arguments]",Mt=Object.prototype,Ut=Mt.hasOwnProperty,qt=Mt.propertyIsEnumerable,zt=S(function(){return arguments}())?S:function(n){return j(n)&&Ut.call(n,"callee")&&!qt.call(n,"callee")},Pt=Array.isArray,Vt="object"==typeof n&&n&&!n.nodeType&&n,Dt=Vt&&"object"==typeof module&&module&&!module.nodeType&&module,Rt=Dt&&Dt.exports===Vt,Ct=Rt?yt.Buffer:void 0,$t=Ct?Ct.isBuffer:void 0,Wt=$t||k,Nt=9007199254740991,Qt=/^(?:0|[1-9]\d*)$/,Gt="[object Arguments]",Ht="[object Array]",Jt="[object Boolean]",Kt="[object Date]",Xt="[object Error]",Yt="[object Function]",Zt="[object Map]",ne="[object Number]",te="[object Object]",ee="[object RegExp]",re="[object Set]",ue="[object String]",ie="[object WeakMap]",oe="[object ArrayBuffer]",ce="[object DataView]",fe="[object Float32Array]",ae="[object Float64Array]",le="[object Int8Array]",se="[object Int16Array]",pe="[object Int32Array]",he="[object Uint8Array]",ye="[object Uint8ClampedArray]",ve="[object Uint16Array]",de="[object Uint32Array]",me={};me[fe]=me[ae]=me[le]=me[se]=me[pe]=me[he]=me[ye]=me[ve]=me[de]=!0,me[Gt]=me[Ht]=me[oe]=me[Jt]=me[ce]=me[Kt]=me[Xt]=me[Yt]=me[Zt]=me[ne]=me[te]=me[ee]=me[re]=me[ue]=me[ie]=!1;var ge="object"==typeof n&&n&&!n.nodeType&&n,be=ge&&"object"==typeof module&&module&&!module.nodeType&&module,je=be&&be.exports===ge,Se=je&&pt.process,ke=function(){try{var n=be&&be.require&&be.require("util").types;return n?n:Se&&Se.binding&&Se.binding("util")}catch(n){}}(),Le=ke&&ke.isTypedArray,Oe=Le?w(Le):O,we=Object.prototype,xe=we.hasOwnProperty,Ee=Object.prototype,Ae=A(Object.keys,Object),Te=Object.prototype,Be=Te.hasOwnProperty,Fe=P(z,1/0),Ie=function(n,t,e){var r=d(n)?V:Fe;r(n,a(t),e)},_e=D(R),Me=l(_e),Ue=C(R),qe=P(Ue,1),ze=l(qe),Pe=W(),Ve=function(n,e,r){function u(n,t){j.push(function(){f(n,t)})}function i(){if(0===j.length&&0===v)return r(null,y);for(;j.length&&v2&&(u=t(arguments,1)),e){var i={};N(y,function(n,t){i[t]=n}),i[n]=u,d=!0,b=Object.create(null),r(e,i)}else y[n]=u,c(n)});v++;var i=a(e[e.length-1]);e.length>1?i(y,u):i(u)}}function l(){for(var n,t=0;S.length;)n=S.pop(),t++,$(s(n),function(n){0===--k[n]&&S.push(n)});if(t!==h)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}function s(t){var e=[];return N(n,function(n,r){Pt(n)&&J(n,t,0)>=0&&e.push(r)}),e}"function"==typeof e&&(r=e,e=null),r=g(r||m);var p=B(n),h=p.length;if(!h)return r(null);e||(e=h);var y={},v=0,d=!1,b=Object.create(null),j=[],S=[],k={};N(n,function(t,e){if(!Pt(t))return u(e,[t]),void S.push(e);var r=t.slice(0,t.length-1),i=r.length;return 0===i?(u(e,t),void S.push(e)):(k[e]=i,void $(r,function(c){if(!n[c])throw new Error("async.auto task `"+e+"` has a non-existent dependency `"+c+"` in "+r.join(", "));o(c,function(){i--,0===i&&u(e,t)})}))}),l(),i()},De="[object Symbol]",Re=1/0,Ce=vt?vt.prototype:void 0,$e=Ce?Ce.toString:void 0,We="\\ud800-\\udfff",Ne="\\u0300-\\u036f",Qe="\\ufe20-\\ufe2f",Ge="\\u20d0-\\u20ff",He=Ne+Qe+Ge,Je="\\ufe0e\\ufe0f",Ke="\\u200d",Xe=RegExp("["+Ke+We+He+Je+"]"),Ye="\\ud800-\\udfff",Ze="\\u0300-\\u036f",nr="\\ufe20-\\ufe2f",tr="\\u20d0-\\u20ff",er=Ze+nr+tr,rr="\\ufe0e\\ufe0f",ur="["+Ye+"]",ir="["+er+"]",or="\\ud83c[\\udffb-\\udfff]",cr="(?:"+ir+"|"+or+")",fr="[^"+Ye+"]",ar="(?:\\ud83c[\\udde6-\\uddff]){2}",lr="[\\ud800-\\udbff][\\udc00-\\udfff]",sr="\\u200d",pr=cr+"?",hr="["+rr+"]?",yr="(?:"+sr+"(?:"+[fr,ar,lr].join("|")+")"+hr+pr+")*",vr=hr+pr+yr,dr="(?:"+[fr+ir+"?",ir,ar,lr,ur].join("|")+")",mr=RegExp(or+"(?="+or+")|"+dr+vr,"g"),gr=/^\s+|\s+$/g,br=/^(?:async\s+)?(function)?\s*[^\(]*\(\s*([^\)]*)\)/m,jr=/,/,Sr=/(=.+)?(\s*)$/,kr=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;pn.prototype.removeLink=function(n){return n.prev?n.prev.next=n.next:this.head=n.next,n.next?n.next.prev=n.prev:this.tail=n.prev,n.prev=n.next=null,this.length-=1,n},pn.prototype.empty=function(){for(;this.head;)this.shift();return this},pn.prototype.insertAfter=function(n,t){t.prev=n,t.next=n.next,n.next?n.next.prev=t:this.tail=t,n.next=t,this.length+=1},pn.prototype.insertBefore=function(n,t){t.prev=n.prev,t.next=n,n.prev?n.prev.next=t:this.head=t,n.prev=t,this.length+=1},pn.prototype.unshift=function(n){this.head?this.insertBefore(this.head,n):hn(this,n)},pn.prototype.push=function(n){this.tail?this.insertAfter(this.tail,n):hn(this,n)},pn.prototype.shift=function(){return this.head&&this.removeLink(this.head)},pn.prototype.pop=function(){return this.tail&&this.removeLink(this.tail)},pn.prototype.toArray=function(){for(var n=Array(this.length),t=this.head,e=0;e=u.priority;)u=u.next;for(var i=0,o=n.length;i + @@ -354,7 +355,7 @@

Listen 1 主页: http://listen1.github.io/listen1/

Listen 1 邮箱: githublisten1@gmail.com

-

当前版本 1.7.0 (本软件基于MIT协议开源免费)

+

当前版本 1.7.1 (本软件基于MIT协议开源免费)

diff --git a/manifest.json b/manifest.json index d428a4e..cfb9ac4 100644 --- a/manifest.json +++ b/manifest.json @@ -15,7 +15,7 @@ "manifest_version": 2, "name": "Listen 1", "permissions": [ "notifications", "unlimitedStorage", "downloads", "storage", "contextMenus", "tabs", "*://music.163.com/*", "*://*.xiami.com/*", "*://*.qq.com/*", "*://*.kugou.com/", "*://api.github.com/*", "*://github.com/*", "webRequest", "webRequestBlocking"], - "version": "1.7.0", + "version": "1.7.1", "web_accessible_resources": [ "images/*" ], "content_scripts": [{ "matches": ["https://listen1.github.io/listen1/*"], diff --git a/manifest_firefox.json b/manifest_firefox.json index b0a38dc..5cfdb1d 100644 --- a/manifest_firefox.json +++ b/manifest_firefox.json @@ -21,7 +21,7 @@ "manifest_version": 2, "name": "Listen 1", "permissions": [ "notifications", "unlimitedStorage", "downloads", "storage", "contextMenus", "tabs", "*://music.163.com/*", "*://*.xiami.com/*", "*://*.qq.com/*", "*://api.github.com/*", "*://github.com/*", "webRequest", "webRequestBlocking"], - "version": "1.7.0", + "version": "1.7.1", "web_accessible_resources": [ "images/*" ], "content_scripts": [{ "matches": ["https://listen1.github.io/listen1/*"],