creamidea / NetEase Cloud Music Helper

// ==UserScript==
// @name         NetEase Cloud Music Helper
// @namespace    http://creamidea.github.io
// @version      1.1.0
// @description  some keys that controls the player(previous, next, paly/pause)
// @author       creamidea
// @license      MIT License (Expat)
// @match        http://music.163.com/*
// @require      https://greasyfork.org/scripts/23404-keyboard-js/code/keyboard-js.js?version=148850
// @grant        none
// @updateURL    https://openuserjs.org/meta/creamidea/NetEase_Cloud_Music_Helper.meta.js
// ==/UserScript==

(function() {
    'use strict';
    // maybe the offical website overried #g_player, which causes the error: null.
    var $document = parent.document;
    var $player = $document.querySelector('#g_player .btns').children;
    var $search = $document.querySelector('.srchbg input');
    var $nav = $document.querySelector('.m-nav.j-tflag');
    function play () { $player[1].click(); }
    function playNowList () { document.querySelector('#flag_play').click();}
    function previous () { $player[0].click(); }
    function next () { $player[2].click(); }
    function search () { $search.focus(); }
    function goSearch () { $nav.children[0].querySelector('em').click(); }
    function goMyMusic () { $nav.children[1].querySelector('em').click(); }
    function goFriends () { $nav.children[2].querySelector('em').click(); }
    function goMusicComment () { $document.querySelector('.j-flag.words a:first-child').click(); }
    function writeMusicComment () { var a = document.querySelector('textarea.u-txt.area.j-flag'); if(a) a.focus(); }


    var kbd = new Keyboard();
    kbd.register('play/pause', function () { play(); return false;}, [' '], ['MediaPlayPause']);
    kbd.register('play at now page', function () { playNowList(); return false;}, ['c', 's' ]);
    kbd.register('previous', function () { previous(); }, ['MediaTrackPrevious']);
    kbd.register('next', function () { next();}, ['MediaTrackNext']);
    kbd.register('search', function () { search();}, ['/']);
    kbd.register('go my seacher', function () { goSearch();}, ['g','s']);
    kbd.register('go my music', function () { goMyMusic();}, ['g','m']);
    kbd.register('go my frindes', function () { goFriends();}, ['g','f']);
    kbd.register('go the music comment', function () { goMusicComment();}, ['g','w']);

    kbd.start();

    $search.addEventListener('focus', function () {kbd.end();}, false);
    $search.addEventListener('blur', function () {kbd.start();}, false);

})();