2023-01-22 14:34:01 +08:00

1 line
246 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=2"><meta name="theme-color" content="#FFF"><link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png"><link rel="icon" type="image/ico" sizes="32x32" href="/images/favicon.ico"><meta http-equiv="Cache-Control" content="no-transform"><meta http-equiv="Cache-Control" content="no-siteapp"><link rel="alternate" type="application/rss+xml" title="涛声依旧" href="https://hitoli.com/rss.xml"><link rel="alternate" type="application/atom+xml" title="涛声依旧" href="https://hitoli.com/atom.xml"><link rel="alternate" type="application/json" title="涛声依旧" href="https://hitoli.com/feed.json"><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Mulish:300,300italic,400,400italic,700,700italic%7CFredericka%20the%20Great:300,300italic,400,400italic,700,700italic%7CNoto%20Serif%20JP:300,300italic,400,400italic,700,700italic%7CNoto%20Serif%20SC:300,300italic,400,400italic,700,700italic%7CInconsolata:300,300italic,400,400italic,700,700italic&display=swap&subset=latin,latin-ext"><link rel="stylesheet" href="/css/app.css?v=0.0.0"><meta name="keywords" content="博客,Hexo,Shoka,背景音乐"><link rel="canonical" href="https://hitoli.com/2022/09/26/%E8%A7%A3%E5%86%B3Hexo-Shoka%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90%E6%97%A0%E6%B3%95%E6%92%AD%E6%94%BE%E7%9A%84%E9%97%AE%E9%A2%98/"><title>解决 Hexo+Shoka 背景音乐无法播放的问题 - Hexo - Docker - 极空间 | ☆∵∴Hito∴∵★ = 涛声依旧 = 天下事有难易乎?为之,则难者亦易矣</title><meta name="generator" content="Hexo 6.3.0"></head><body itemscope itemtype="http://schema.org/WebPage"><div id="loading"><div class="cat"><div class="body"></div><div class="head"><div class="face"></div></div><div class="foot"><div class="tummy-end"></div><div class="bottom"></div><div class="legs left"></div><div class="legs right"></div></div><div class="paw"><div class="hands left"></div><div class="hands right"></div></div></div></div><div id="container"><header id="header" itemscope itemtype="http://schema.org/WPHeader"><div class="inner"><div id="brand"><div class="pjax"><h1 itemprop="name headline">解决 Hexo+Shoka 背景音乐无法播放的问题</h1><div class="meta"><span class="item" title="创建时间2022-09-26 19:30:00"><span class="icon"><i class="ic i-calendar"></i> </span><span class="text">发表于</span> <time itemprop="dateCreated datePublished" datetime="2022-09-26T19:30:00+08:00">2022-09-26</time> </span><span class="item" title="本文字数"><span class="icon"><i class="ic i-pen"></i> </span><span class="text">本文字数</span> <span>18k</span> <span class="text"></span> </span><span class="item" title="阅读时长"><span class="icon"><i class="ic i-clock"></i> </span><span class="text">阅读时长</span> <span>17 分钟</span></span></div></div></div><nav id="nav"><div class="inner"><div class="toggle"><div class="lines" aria-label="切换导航栏"><span class="line"></span> <span class="line"></span> <span class="line"></span></div></div><ul class="menu"><li class="item title"><a href="/" rel="start">☆∵∴Hito∴∵★</a></li></ul><ul class="right"><li class="item theme"><i class="ic i-sun"></i></li><li class="item search"><i class="ic i-search"></i></li></ul></div></nav></div><div id="imgs" class="pjax"><ul><li class="item" data-background-image="https://nas.hitoli.com:18014/images/2022/10/29/6833939bly1gicli9lfebj20zk0m84qp.jpg"></li><li class="item" data-background-image="https://nas.hitoli.com:18014/images/2022/10/29/6833939bly1gipeybxm1pj20zk0m8niv.jpg"></li><li class="item" data-background-image="https://nas.hitoli.com:18014/images/2022/10/29/6833939bly1gipeuibk9fj20zk0m8ay2.jpg"></li><li class="item" data-background-image="https://nas.hitoli.com:18014/images/2022/10/29/6833939bly1giclimtf7dj20zk0m8qav.jpg"></li><li class="item" data-background-image="https://nas.hitoli.com:18014/images/2022/10/29/6833939bly1gipex2cdtbj20zk0m8x6p.jpg"></li><li class="item" data-background-image="https://nas.hitoli.com:18014/images/2022/10/29/6833939bly1gipesx5fdwj20zk0m81kx.jpg"></li></ul></div></header><div id="waves"><svg class="waves" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none" shape-rendering="auto"><defs><path id="gentle-wave" d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z"/></defs><g class="parallax"><use xlink:href="#gentle-wave" x="48" y="0"/><use xlink:href="#gentle-wave" x="48" y="3"/><use xlink:href="#gentle-wave" x="48" y="5"/><use xlink:href="#gentle-wave" x="48" y="7"/></g></svg></div><main><div class="inner"><div id="main" class="pjax"><div class="article wrap"><div class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList"><i class="ic i-home"></i> <span><a href="/">首页</a></span><i class="ic i-angle-right"></i> <span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><a href="/categories/%E6%9E%81%E7%A9%BA%E9%97%B4/" itemprop="item" rel="index" title="分类于 极空间"><span itemprop="name">极空间</span></a><meta itemprop="position" content="1"></span><i class="ic i-angle-right"></i> <span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><a href="/categories/%E6%9E%81%E7%A9%BA%E9%97%B4/Docker/" itemprop="item" rel="index" title="分类于 Docker"><span itemprop="name">Docker</span></a><meta itemprop="position" content="2"></span><i class="ic i-angle-right"></i> <span class="current" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><a href="/categories/%E6%9E%81%E7%A9%BA%E9%97%B4/Docker/Hexo/" itemprop="item" rel="index" title="分类于 Hexo"><span itemprop="name">Hexo</span></a><meta itemprop="position" content="3"></span></div><article itemscope itemtype="http://schema.org/Article" class="post block" lang="zh-CN"><link itemprop="mainEntityOfPage" href="https://hitoli.com/2022/09/26/%E8%A7%A3%E5%86%B3Hexo-Shoka%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90%E6%97%A0%E6%B3%95%E6%92%AD%E6%94%BE%E7%9A%84%E9%97%AE%E9%A2%98/"><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/images/avatar.jpg"><meta itemprop="name" content="Hito Li"><meta itemprop="description" content="天下事有难易乎?为之,则难者亦易矣, 天生我材必有用"></span><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="涛声依旧"></span><div class="body md" itemprop="articleBody"><h4 id="问题描述"><a class="anchor" href="#问题描述">#</a> 问题描述</h4><p>今天突然发现博客的音乐无法播放了,经过一顿查找,发现是因为<span class="red"><span class="exturl" data-url="aHR0cHM6Ly9hcGkuaS1tZXRvLmNvbS9tZXRpbmcvYXBp"> https://api.i-meto.com/meting/api</span></span> 获取的音乐地址出现了问题估计是被网易云给封禁了。shoka 主题应该是通过这个网站提取音乐地址、图片等信息。通过断点发现网易播放列表还是能正常获取的,只是列表中的具体音乐、图片出现了问题。因为 meto 是把音乐的 url 指向自己的服务地址,然后通过参数获取的最终音乐,所以我通过参数拼凑出最终的网易云音乐地址,自此问题基本解决。只针对网易播放列表,图片只能使用一张固定的(因为图片的具体规律不知道 O (∩_∩) O~)。</p><h4 id="解决方法"><a class="anchor" href="#解决方法">#</a> 解决方法</h4><p>到 themes\shoka\source\js\_app 目录下打开 player.js 文件,替换成如下代码。</p><figure class="highlight js"><figcaption data-lang="JavaScript"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token keyword">var</span> <span class="token constant">NOWPLAYING</span> <span class="token operator">=</span> <span class="token keyword">null</span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token keyword">const</span> isMobile <span class="token operator">=</span> <span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">mobile</span><span class="token regex-delimiter">/</span><span class="token regex-flags">i</span></span><span class="token punctuation">.</span><span class="token function">test</span><span class="token punctuation">(</span>window<span class="token punctuation">.</span>navigator<span class="token punctuation">.</span>userAgent<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token keyword">const</span> <span class="token function-variable function">mediaPlayer</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">t<span class="token punctuation">,</span> config</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="4"></td><td><pre> <span class="token keyword">var</span> option <span class="token operator">=</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="5"></td><td><pre> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'audio'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="6"></td><td><pre> <span class="token literal-property property">mode</span><span class="token operator">:</span> <span class="token string">'random'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="7"></td><td><pre> <span class="token literal-property property">btns</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'play-pause'</span><span class="token punctuation">,</span> <span class="token string">'music'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token literal-property property">controls</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'mode'</span><span class="token punctuation">,</span> <span class="token string">'backward'</span><span class="token punctuation">,</span> <span class="token string">'play-pause'</span><span class="token punctuation">,</span> <span class="token string">'forward'</span><span class="token punctuation">,</span> <span class="token string">'volume'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token literal-property property">events</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token string-property property">"play-pause"</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">event</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="11"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>source<span class="token punctuation">.</span>paused<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="12"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">play</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="13"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="14"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">pause</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="15"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="16"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="17"></td><td><pre> <span class="token string-property property">"music"</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">event</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="18"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>info<span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">hasClass</span><span class="token punctuation">(</span><span class="token string">'show'</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="19"></td><td><pre> info<span class="token punctuation">.</span><span class="token function">hide</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="20"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="21"></td><td><pre> info<span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">addClass</span><span class="token punctuation">(</span><span class="token string">'show'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="22"></td><td><pre> playlist<span class="token punctuation">.</span><span class="token function">scroll</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">title</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="23"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="24"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="25"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="26"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span> utils <span class="token operator">=</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="27"></td><td><pre> <span class="token function-variable function">random</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">len</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="28"></td><td><pre> <span class="token keyword">return</span> Math<span class="token punctuation">.</span><span class="token function">floor</span><span class="token punctuation">(</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> len<span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="29"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="30"></td><td><pre> <span class="token function-variable function">parse</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">link</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="31"></td><td><pre> <span class="token keyword">var</span> result <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="32"></td><td><pre> <span class="token punctuation">[</span></pre></td></tr><tr><td data-num="33"></td><td><pre> <span class="token punctuation">[</span><span class="token string">'music.163.com.*song.*id=(\\d+)'</span><span class="token punctuation">,</span> <span class="token string">'netease'</span><span class="token punctuation">,</span> <span class="token string">'song'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="34"></td><td><pre> <span class="token punctuation">[</span><span class="token string">'music.163.com.*album.*id=(\\d+)'</span><span class="token punctuation">,</span> <span class="token string">'netease'</span><span class="token punctuation">,</span> <span class="token string">'album'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="35"></td><td><pre> <span class="token punctuation">[</span><span class="token string">'music.163.com.*artist.*id=(\\d+)'</span><span class="token punctuation">,</span> <span class="token string">'netease'</span><span class="token punctuation">,</span> <span class="token string">'artist'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="36"></td><td><pre> <span class="token punctuation">[</span><span class="token string">'music.163.com.*playlist.*id=(\\d+)'</span><span class="token punctuation">,</span> <span class="token string">'netease'</span><span class="token punctuation">,</span> <span class="token string">'playlist'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="37"></td><td><pre> <span class="token punctuation">[</span><span class="token string">'music.163.com.*discover/toplist.*id=(\\d+)'</span><span class="token punctuation">,</span> <span class="token string">'netease'</span><span class="token punctuation">,</span> <span class="token string">'playlist'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="38"></td><td><pre> <span class="token punctuation">[</span><span class="token string">'y.qq.com.*song/(\\w+).html'</span><span class="token punctuation">,</span> <span class="token string">'tencent'</span><span class="token punctuation">,</span> <span class="token string">'song'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="39"></td><td><pre> <span class="token punctuation">[</span><span class="token string">'y.qq.com.*album/(\\w+).html'</span><span class="token punctuation">,</span> <span class="token string">'tencent'</span><span class="token punctuation">,</span> <span class="token string">'album'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="40"></td><td><pre> <span class="token punctuation">[</span><span class="token string">'y.qq.com.*singer/(\\w+).html'</span><span class="token punctuation">,</span> <span class="token string">'tencent'</span><span class="token punctuation">,</span> <span class="token string">'artist'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="41"></td><td><pre> <span class="token punctuation">[</span><span class="token string">'y.qq.com.*playsquare/(\\w+).html'</span><span class="token punctuation">,</span> <span class="token string">'tencent'</span><span class="token punctuation">,</span> <span class="token string">'playlist'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="42"></td><td><pre> <span class="token punctuation">[</span><span class="token string">'y.qq.com.*playlist/(\\w+).html'</span><span class="token punctuation">,</span> <span class="token string">'tencent'</span><span class="token punctuation">,</span> <span class="token string">'playlist'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="43"></td><td><pre> <span class="token punctuation">[</span><span class="token string">'xiami.com.*song/(\\w+)'</span><span class="token punctuation">,</span> <span class="token string">'xiami'</span><span class="token punctuation">,</span> <span class="token string">'song'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="44"></td><td><pre> <span class="token punctuation">[</span><span class="token string">'xiami.com.*album/(\\w+)'</span><span class="token punctuation">,</span> <span class="token string">'xiami'</span><span class="token punctuation">,</span> <span class="token string">'album'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="45"></td><td><pre> <span class="token punctuation">[</span><span class="token string">'xiami.com.*artist/(\\w+)'</span><span class="token punctuation">,</span> <span class="token string">'xiami'</span><span class="token punctuation">,</span> <span class="token string">'artist'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="46"></td><td><pre> <span class="token punctuation">[</span><span class="token string">'xiami.com.*collect/(\\w+)'</span><span class="token punctuation">,</span> <span class="token string">'xiami'</span><span class="token punctuation">,</span> <span class="token string">'playlist'</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="47"></td><td><pre> <span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">rule</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="48"></td><td><pre> <span class="token keyword">var</span> patt <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">RegExp</span><span class="token punctuation">(</span>rule<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="49"></td><td><pre> <span class="token keyword">var</span> res <span class="token operator">=</span> patt<span class="token punctuation">.</span><span class="token function">exec</span><span class="token punctuation">(</span>link<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="50"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>res <span class="token operator">!==</span> <span class="token keyword">null</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="51"></td><td><pre> result <span class="token operator">=</span> <span class="token punctuation">[</span>rule<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span> rule<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span> res<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="52"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="53"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="54"></td><td><pre> <span class="token keyword">return</span> result</pre></td></tr><tr><td data-num="55"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="56"></td><td><pre> <span class="token function-variable function">fetch</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">source</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="57"></td><td><pre> <span class="token keyword">var</span> list <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="58"></td><td><pre></pre></td></tr><tr><td data-num="59"></td><td><pre> <span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">Promise</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">resolve<span class="token punctuation">,</span> reject</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="60"></td><td><pre> source<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">raw</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="61"></td><td><pre> <span class="token keyword">var</span> meta <span class="token operator">=</span> utils<span class="token punctuation">.</span><span class="token function">parse</span><span class="token punctuation">(</span>raw<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="62"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>meta<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="63"></td><td><pre> <span class="token keyword">var</span> skey <span class="token operator">=</span> <span class="token constant">JSON</span><span class="token punctuation">.</span><span class="token function">stringify</span><span class="token punctuation">(</span>meta<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="64"></td><td><pre> <span class="token keyword">var</span> playlist <span class="token operator">=</span> store<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>skey<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="65"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>playlist<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="66"></td><td><pre> <span class="token comment">// 自己修改 - start</span></pre></td></tr><tr><td data-num="67"></td><td><pre> <span class="token keyword">var</span> audioInfos <span class="token operator">=</span> <span class="token constant">JSON</span><span class="token punctuation">.</span><span class="token function">parse</span><span class="token punctuation">(</span>playlist<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="68"></td><td><pre> audioInfos<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">item<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="69"></td><td><pre> item<span class="token punctuation">.</span>company <span class="token operator">=</span> meta<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="70"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="71"></td><td><pre> list<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">.</span><span class="token function">apply</span><span class="token punctuation">(</span>list<span class="token punctuation">,</span> audioInfos<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="72"></td><td><pre> <span class="token function">resolve</span><span class="token punctuation">(</span>list<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="73"></td><td><pre> <span class="token comment">// 自己修改 - end</span></pre></td></tr><tr><td data-num="74"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="75"></td><td><pre> <span class="token function">fetch</span><span class="token punctuation">(</span><span class="token string">'https://api.i-meto.com/meting/api?server='</span> <span class="token operator">+</span> meta<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">+</span> <span class="token string">'&amp;type='</span> <span class="token operator">+</span> meta<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">+</span> <span class="token string">'&amp;id='</span> <span class="token operator">+</span> meta<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">+</span> <span class="token string">'&amp;r='</span> <span class="token operator">+</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="76"></td><td><pre> <span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">response</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="77"></td><td><pre> <span class="token keyword">return</span> response<span class="token punctuation">.</span><span class="token function">json</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="78"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">json</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="79"></td><td><pre> store<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span>skey<span class="token punctuation">,</span> <span class="token constant">JSON</span><span class="token punctuation">.</span><span class="token function">stringify</span><span class="token punctuation">(</span>json<span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="80"></td><td><pre> list<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">.</span><span class="token function">apply</span><span class="token punctuation">(</span>list<span class="token punctuation">,</span> json<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="81"></td><td><pre> <span class="token function">resolve</span><span class="token punctuation">(</span>list<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="82"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">catch</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ex</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="83"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="84"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="85"></td><td><pre> list<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>raw<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="86"></td><td><pre> <span class="token function">resolve</span><span class="token punctuation">(</span>list<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="87"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="88"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="89"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="90"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="91"></td><td><pre> <span class="token function-variable function">secondToTime</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">second</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="92"></td><td><pre> <span class="token keyword">var</span> <span class="token function-variable function">add0</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">num</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="93"></td><td><pre> <span class="token keyword">return</span> <span class="token function">isNaN</span><span class="token punctuation">(</span>num<span class="token punctuation">)</span> <span class="token operator">?</span> <span class="token string">'00'</span> <span class="token operator">:</span> <span class="token punctuation">(</span>num <span class="token operator">&lt;</span> <span class="token number">10</span> <span class="token operator">?</span> <span class="token string">'0'</span> <span class="token operator">+</span> num <span class="token operator">:</span> <span class="token string">''</span> <span class="token operator">+</span> num<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="94"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="95"></td><td><pre> <span class="token keyword">var</span> hour <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">floor</span><span class="token punctuation">(</span>second <span class="token operator">/</span> <span class="token number">3600</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="96"></td><td><pre> <span class="token keyword">var</span> min <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">floor</span><span class="token punctuation">(</span><span class="token punctuation">(</span>second <span class="token operator">-</span> hour <span class="token operator">*</span> <span class="token number">3600</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">60</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="97"></td><td><pre> <span class="token keyword">var</span> sec <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">floor</span><span class="token punctuation">(</span>second <span class="token operator">-</span> hour <span class="token operator">*</span> <span class="token number">3600</span> <span class="token operator">-</span> min <span class="token operator">*</span> <span class="token number">60</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="98"></td><td><pre> <span class="token keyword">return</span> <span class="token punctuation">(</span>hour <span class="token operator">></span> <span class="token number">0</span> <span class="token operator">?</span> <span class="token punctuation">[</span>hour<span class="token punctuation">,</span> min<span class="token punctuation">,</span> sec<span class="token punctuation">]</span> <span class="token operator">:</span> <span class="token punctuation">[</span>min<span class="token punctuation">,</span> sec<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>add0<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">':'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="99"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="100"></td><td><pre> <span class="token literal-property property">nameMap</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="101"></td><td><pre> <span class="token literal-property property">dragStart</span><span class="token operator">:</span> isMobile <span class="token operator">?</span> <span class="token string">'touchstart'</span> <span class="token operator">:</span> <span class="token string">'mousedown'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="102"></td><td><pre> <span class="token literal-property property">dragMove</span><span class="token operator">:</span> isMobile <span class="token operator">?</span> <span class="token string">'touchmove'</span> <span class="token operator">:</span> <span class="token string">'mousemove'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="103"></td><td><pre> <span class="token literal-property property">dragEnd</span><span class="token operator">:</span> isMobile <span class="token operator">?</span> <span class="token string">'touchend'</span> <span class="token operator">:</span> <span class="token string">'mouseup'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="104"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="105"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span> source <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="106"></td><td><pre></pre></td></tr><tr><td data-num="107"></td><td><pre> t<span class="token punctuation">.</span>player <span class="token operator">=</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="108"></td><td><pre> <span class="token literal-property property">_id</span><span class="token operator">:</span> utils<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token number">999999</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="109"></td><td><pre> <span class="token literal-property property">group</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="110"></td><td><pre> <span class="token comment">// 加载播放列表</span></pre></td></tr><tr><td data-num="111"></td><td><pre> <span class="token function-variable function">load</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">newList</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="112"></td><td><pre> <span class="token keyword">var</span> d <span class="token operator">=</span> <span class="token string">""</span></pre></td></tr><tr><td data-num="113"></td><td><pre> <span class="token keyword">var</span> that <span class="token operator">=</span> <span class="token keyword">this</span></pre></td></tr><tr><td data-num="114"></td><td><pre></pre></td></tr><tr><td data-num="115"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>newList <span class="token operator">&amp;&amp;</span> newList<span class="token punctuation">.</span>length <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="116"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>options<span class="token punctuation">.</span>rawList <span class="token operator">!==</span> newList<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="117"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>options<span class="token punctuation">.</span>rawList <span class="token operator">=</span> newList<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="118"></td><td><pre> playlist<span class="token punctuation">.</span><span class="token function">clear</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="119"></td><td><pre> <span class="token comment">// 获取新列表</span></pre></td></tr><tr><td data-num="120"></td><td><pre> <span class="token comment">//this.fetch()</span></pre></td></tr><tr><td data-num="121"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="122"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="123"></td><td><pre> <span class="token comment">// 没有列表时,隐藏按钮</span></pre></td></tr><tr><td data-num="124"></td><td><pre> d <span class="token operator">=</span> <span class="token string">"none"</span></pre></td></tr><tr><td data-num="125"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">pause</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="126"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="127"></td><td><pre> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> el <span class="token keyword">in</span> buttons<span class="token punctuation">.</span>el<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="128"></td><td><pre> buttons<span class="token punctuation">.</span>el<span class="token punctuation">[</span>el<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">display</span><span class="token punctuation">(</span>d<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="129"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="130"></td><td><pre> <span class="token keyword">return</span> <span class="token keyword">this</span></pre></td></tr><tr><td data-num="131"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="132"></td><td><pre> <span class="token function-variable function">fetch</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="133"></td><td><pre> <span class="token keyword">var</span> that <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="134"></td><td><pre> <span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">Promise</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">resolve<span class="token punctuation">,</span> reject</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="135"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>playlist<span class="token punctuation">.</span>data<span class="token punctuation">.</span>length <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="136"></td><td><pre> <span class="token function">resolve</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="137"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="138"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>that<span class="token punctuation">.</span>options<span class="token punctuation">.</span>rawList<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="139"></td><td><pre> <span class="token keyword">var</span> promises <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="140"></td><td><pre></pre></td></tr><tr><td data-num="141"></td><td><pre> that<span class="token punctuation">.</span>options<span class="token punctuation">.</span>rawList<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">raw<span class="token punctuation">,</span> index</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="142"></td><td><pre> promises<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">Promise</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">resolve<span class="token punctuation">,</span> reject</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="143"></td><td><pre> <span class="token keyword">var</span> group <span class="token operator">=</span> index</pre></td></tr><tr><td data-num="144"></td><td><pre> <span class="token keyword">var</span> source</pre></td></tr><tr><td data-num="145"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>raw<span class="token punctuation">.</span>list<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="146"></td><td><pre> group <span class="token operator">=</span> <span class="token number">0</span></pre></td></tr><tr><td data-num="147"></td><td><pre> that<span class="token punctuation">.</span>group <span class="token operator">=</span> <span class="token boolean">false</span></pre></td></tr><tr><td data-num="148"></td><td><pre> source <span class="token operator">=</span> <span class="token punctuation">[</span>raw<span class="token punctuation">]</span></pre></td></tr><tr><td data-num="149"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="150"></td><td><pre> that<span class="token punctuation">.</span>group <span class="token operator">=</span> <span class="token boolean">true</span></pre></td></tr><tr><td data-num="151"></td><td><pre> source <span class="token operator">=</span> raw<span class="token punctuation">.</span>list</pre></td></tr><tr><td data-num="152"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="153"></td><td><pre> utils<span class="token punctuation">.</span><span class="token function">fetch</span><span class="token punctuation">(</span>source<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">list</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="154"></td><td><pre> playlist<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span>group<span class="token punctuation">,</span> list<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="155"></td><td><pre> <span class="token function">resolve</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="156"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="157"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="158"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="159"></td><td><pre></pre></td></tr><tr><td data-num="160"></td><td><pre> Promise<span class="token punctuation">.</span><span class="token function">all</span><span class="token punctuation">(</span>promises<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="161"></td><td><pre> <span class="token function">resolve</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="162"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="163"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="164"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="165"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">c</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="166"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>c<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="167"></td><td><pre> playlist<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="168"></td><td><pre> controller<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="169"></td><td><pre> that<span class="token punctuation">.</span><span class="token function">mode</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="170"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="171"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="172"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="173"></td><td><pre> <span class="token comment">// 根据模式切换当前曲目 index</span></pre></td></tr><tr><td data-num="174"></td><td><pre> <span class="token function-variable function">mode</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="175"></td><td><pre> <span class="token keyword">var</span> total <span class="token operator">=</span> playlist<span class="token punctuation">.</span>data<span class="token punctuation">.</span>length<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="176"></td><td><pre></pre></td></tr><tr><td data-num="177"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>total <span class="token operator">||</span> playlist<span class="token punctuation">.</span>errnum <span class="token operator">==</span> total<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="178"></td><td><pre> <span class="token keyword">return</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="179"></td><td><pre></pre></td></tr><tr><td data-num="180"></td><td><pre> <span class="token keyword">var</span> step <span class="token operator">=</span> controller<span class="token punctuation">.</span>step <span class="token operator">==</span> <span class="token string">'next'</span> <span class="token operator">?</span> <span class="token number">1</span> <span class="token operator">:</span> <span class="token operator">-</span><span class="token number">1</span></pre></td></tr><tr><td data-num="181"></td><td><pre></pre></td></tr><tr><td data-num="182"></td><td><pre> <span class="token keyword">var</span> <span class="token function-variable function">next</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="183"></td><td><pre> <span class="token keyword">var</span> index <span class="token operator">=</span> playlist<span class="token punctuation">.</span>index <span class="token operator">+</span> step</pre></td></tr><tr><td data-num="184"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>index <span class="token operator">></span> total <span class="token operator">||</span> index <span class="token operator">&lt;</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="185"></td><td><pre> index <span class="token operator">=</span> controller<span class="token punctuation">.</span>step <span class="token operator">==</span> <span class="token string">'next'</span> <span class="token operator">?</span> <span class="token number">0</span> <span class="token operator">:</span> total <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="186"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="187"></td><td><pre> playlist<span class="token punctuation">.</span>index <span class="token operator">=</span> index<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="188"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="189"></td><td><pre></pre></td></tr><tr><td data-num="190"></td><td><pre> <span class="token keyword">var</span> <span class="token function-variable function">random</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="191"></td><td><pre> <span class="token keyword">var</span> p <span class="token operator">=</span> utils<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span>total<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="192"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>playlist<span class="token punctuation">.</span>index <span class="token operator">!==</span> p<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="193"></td><td><pre> playlist<span class="token punctuation">.</span>index <span class="token operator">=</span> p</pre></td></tr><tr><td data-num="194"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="195"></td><td><pre> <span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="196"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="197"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="198"></td><td><pre></pre></td></tr><tr><td data-num="199"></td><td><pre> <span class="token keyword">switch</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>options<span class="token punctuation">.</span>mode<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="200"></td><td><pre> <span class="token keyword">case</span> <span class="token string">'random'</span><span class="token operator">:</span></pre></td></tr><tr><td data-num="201"></td><td><pre> <span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="202"></td><td><pre> <span class="token keyword">break</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="203"></td><td><pre> <span class="token keyword">case</span> <span class="token string">'order'</span><span class="token operator">:</span></pre></td></tr><tr><td data-num="204"></td><td><pre> <span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="205"></td><td><pre> <span class="token keyword">break</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="206"></td><td><pre> <span class="token keyword">case</span> <span class="token string">'loop'</span><span class="token operator">:</span></pre></td></tr><tr><td data-num="207"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>controller<span class="token punctuation">.</span>step<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="208"></td><td><pre> <span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="209"></td><td><pre></pre></td></tr><tr><td data-num="210"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>playlist<span class="token punctuation">.</span>index <span class="token operator">==</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="211"></td><td><pre> <span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="212"></td><td><pre> <span class="token keyword">break</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="213"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="214"></td><td><pre></pre></td></tr><tr><td data-num="215"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="216"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="217"></td><td><pre> <span class="token comment">// 直接设置当前曲目 index</span></pre></td></tr><tr><td data-num="218"></td><td><pre> <span class="token function-variable function">switch</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">index</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="219"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">typeof</span> index <span class="token operator">==</span> <span class="token string">'number'</span></pre></td></tr><tr><td data-num="220"></td><td><pre> <span class="token operator">&amp;&amp;</span> index <span class="token operator">!=</span> playlist<span class="token punctuation">.</span>index</pre></td></tr><tr><td data-num="221"></td><td><pre> <span class="token operator">&amp;&amp;</span> playlist<span class="token punctuation">.</span><span class="token function">current</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="222"></td><td><pre> <span class="token operator">&amp;&amp;</span> <span class="token operator">!</span>playlist<span class="token punctuation">.</span><span class="token function">current</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>error<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="223"></td><td><pre> playlist<span class="token punctuation">.</span>index <span class="token operator">=</span> index<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="224"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="225"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="226"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="227"></td><td><pre> <span class="token comment">// 更新 source 为当前曲目 index</span></pre></td></tr><tr><td data-num="228"></td><td><pre> <span class="token function-variable function">init</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="229"></td><td><pre> <span class="token keyword">var</span> item <span class="token operator">=</span> playlist<span class="token punctuation">.</span><span class="token function">current</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="230"></td><td><pre></pre></td></tr><tr><td data-num="231"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>item <span class="token operator">||</span> item<span class="token punctuation">[</span><span class="token string">'error'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="232"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">mode</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="233"></td><td><pre> <span class="token keyword">return</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="234"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="235"></td><td><pre></pre></td></tr><tr><td data-num="236"></td><td><pre> <span class="token keyword">var</span> playing <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="237"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>source<span class="token punctuation">.</span>paused<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="238"></td><td><pre> playing <span class="token operator">=</span> <span class="token boolean">true</span></pre></td></tr><tr><td data-num="239"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">stop</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="240"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="241"></td><td><pre></pre></td></tr><tr><td data-num="242"></td><td><pre> source<span class="token punctuation">.</span><span class="token function">attr</span><span class="token punctuation">(</span><span class="token string">'src'</span><span class="token punctuation">,</span> item<span class="token punctuation">.</span>url<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="243"></td><td><pre> source<span class="token punctuation">.</span><span class="token function">attr</span><span class="token punctuation">(</span><span class="token string">'title'</span><span class="token punctuation">,</span> item<span class="token punctuation">.</span>name <span class="token operator">+</span> <span class="token string">' - '</span> <span class="token operator">+</span> item<span class="token punctuation">.</span>artist<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="244"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">volume</span><span class="token punctuation">(</span>store<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'_PlayerVolume'</span><span class="token punctuation">)</span> <span class="token operator">||</span> <span class="token string">'0.7'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="245"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">muted</span><span class="token punctuation">(</span>store<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'_PlayerMuted'</span><span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="246"></td><td><pre></pre></td></tr><tr><td data-num="247"></td><td><pre> progress<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="248"></td><td><pre></pre></td></tr><tr><td data-num="249"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>options<span class="token punctuation">.</span>type <span class="token operator">==</span> <span class="token string">'audio'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="250"></td><td><pre> preview<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="251"></td><td><pre></pre></td></tr><tr><td data-num="252"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>playing <span class="token operator">==</span> <span class="token boolean">true</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="253"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">play</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="254"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="255"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="256"></td><td><pre> <span class="token function-variable function">play</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="257"></td><td><pre> <span class="token constant">NOWPLAYING</span> <span class="token operator">&amp;&amp;</span> <span class="token constant">NOWPLAYING</span><span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">pause</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="258"></td><td><pre></pre></td></tr><tr><td data-num="259"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>playlist<span class="token punctuation">.</span><span class="token function">current</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>error<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="260"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">mode</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="261"></td><td><pre> <span class="token keyword">return</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="262"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="263"></td><td><pre> <span class="token keyword">var</span> that <span class="token operator">=</span> <span class="token keyword">this</span></pre></td></tr><tr><td data-num="264"></td><td><pre> source<span class="token punctuation">.</span><span class="token function">play</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="265"></td><td><pre> playlist<span class="token punctuation">.</span><span class="token function">scroll</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="266"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">catch</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">e</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="267"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="268"></td><td><pre> <span class="token function-variable function">pause</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="269"></td><td><pre> source<span class="token punctuation">.</span><span class="token function">pause</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="270"></td><td><pre> document<span class="token punctuation">.</span>title <span class="token operator">=</span> originTitle</pre></td></tr><tr><td data-num="271"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="272"></td><td><pre> <span class="token function-variable function">stop</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="273"></td><td><pre> source<span class="token punctuation">.</span><span class="token function">pause</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="274"></td><td><pre> source<span class="token punctuation">.</span>currentTime <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="275"></td><td><pre> document<span class="token punctuation">.</span>title <span class="token operator">=</span> originTitle<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="276"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="277"></td><td><pre> <span class="token function-variable function">seek</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">time</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="278"></td><td><pre> time <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">max</span><span class="token punctuation">(</span>time<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="279"></td><td><pre> time <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">min</span><span class="token punctuation">(</span>time<span class="token punctuation">,</span> source<span class="token punctuation">.</span>duration<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="280"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">isNaN</span><span class="token punctuation">(</span>time<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="281"></td><td><pre> time <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="282"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="283"></td><td><pre> source<span class="token punctuation">.</span>currentTime <span class="token operator">=</span> time<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="284"></td><td><pre> progress<span class="token punctuation">.</span><span class="token function">update</span><span class="token punctuation">(</span>time <span class="token operator">/</span> source<span class="token punctuation">.</span>duration<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="285"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="286"></td><td><pre> <span class="token function-variable function">muted</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">status</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="287"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>status <span class="token operator">==</span> <span class="token string">'muted'</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="288"></td><td><pre> source<span class="token punctuation">.</span>muted <span class="token operator">=</span> status</pre></td></tr><tr><td data-num="289"></td><td><pre> store<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span><span class="token string">'_PlayerMuted'</span><span class="token punctuation">,</span> status<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="290"></td><td><pre> controller<span class="token punctuation">.</span><span class="token function">update</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="291"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="292"></td><td><pre> store<span class="token punctuation">.</span><span class="token function">del</span><span class="token punctuation">(</span><span class="token string">'_PlayerMuted'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="293"></td><td><pre> source<span class="token punctuation">.</span>muted <span class="token operator">=</span> <span class="token boolean">false</span></pre></td></tr><tr><td data-num="294"></td><td><pre> controller<span class="token punctuation">.</span><span class="token function">update</span><span class="token punctuation">(</span>source<span class="token punctuation">.</span>volume<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="295"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="296"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="297"></td><td><pre> <span class="token function-variable function">volume</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">percentage</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="298"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token function">isNaN</span><span class="token punctuation">(</span>percentage<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="299"></td><td><pre> controller<span class="token punctuation">.</span><span class="token function">update</span><span class="token punctuation">(</span>percentage<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="300"></td><td><pre> store<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span><span class="token string">'_PlayerVolume'</span><span class="token punctuation">,</span> percentage<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="301"></td><td><pre> source<span class="token punctuation">.</span>volume <span class="token operator">=</span> percentage</pre></td></tr><tr><td data-num="302"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="303"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="304"></td><td><pre> <span class="token function-variable function">mini</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="305"></td><td><pre> info<span class="token punctuation">.</span><span class="token function">hide</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="306"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="307"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="308"></td><td><pre></pre></td></tr><tr><td data-num="309"></td><td><pre> <span class="token keyword">var</span> info <span class="token operator">=</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="310"></td><td><pre> <span class="token literal-property property">el</span><span class="token operator">:</span> <span class="token keyword">null</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="311"></td><td><pre> <span class="token function-variable function">create</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="312"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="313"></td><td><pre> <span class="token keyword">return</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="314"></td><td><pre></pre></td></tr><tr><td data-num="315"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>el <span class="token operator">=</span> t<span class="token punctuation">.</span><span class="token function">createChild</span><span class="token punctuation">(</span><span class="token string">'div'</span><span class="token punctuation">,</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="316"></td><td><pre> <span class="token literal-property property">className</span><span class="token operator">:</span> <span class="token string">'player-info'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="317"></td><td><pre> <span class="token literal-property property">innerHTML</span><span class="token operator">:</span> <span class="token punctuation">(</span>t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>type <span class="token operator">==</span> <span class="token string">'audio'</span> <span class="token operator">?</span> <span class="token string">'&lt;div class="preview">&lt;/div>'</span> <span class="token operator">:</span> <span class="token string">''</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'&lt;div class="controller">&lt;/div>&lt;div class="playlist">&lt;/div>'</span></pre></td></tr><tr><td data-num="318"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span> <span class="token string">'after'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="319"></td><td><pre></pre></td></tr><tr><td data-num="320"></td><td><pre> preview<span class="token punctuation">.</span>el <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">child</span><span class="token punctuation">(</span><span class="token string">".preview"</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="321"></td><td><pre> playlist<span class="token punctuation">.</span>el <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">child</span><span class="token punctuation">(</span><span class="token string">".playlist"</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="322"></td><td><pre> controller<span class="token punctuation">.</span>el <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">child</span><span class="token punctuation">(</span><span class="token string">".controller"</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="323"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="324"></td><td><pre> <span class="token function-variable function">hide</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="325"></td><td><pre> <span class="token keyword">var</span> el <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>el</pre></td></tr><tr><td data-num="326"></td><td><pre> el<span class="token punctuation">.</span><span class="token function">addClass</span><span class="token punctuation">(</span><span class="token string">'hide'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="327"></td><td><pre> window<span class="token punctuation">.</span><span class="token function">setTimeout</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="328"></td><td><pre> el<span class="token punctuation">.</span><span class="token function">removeClass</span><span class="token punctuation">(</span><span class="token string">'show hide'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="329"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span> <span class="token number">300</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="330"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="331"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="332"></td><td><pre></pre></td></tr><tr><td data-num="333"></td><td><pre> <span class="token keyword">var</span> playlist <span class="token operator">=</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="334"></td><td><pre> <span class="token literal-property property">el</span><span class="token operator">:</span> <span class="token keyword">null</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="335"></td><td><pre> <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="336"></td><td><pre> <span class="token literal-property property">index</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="337"></td><td><pre> <span class="token literal-property property">errnum</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="338"></td><td><pre> <span class="token function-variable function">add</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">group<span class="token punctuation">,</span> list</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="339"></td><td><pre> <span class="token keyword">var</span> that <span class="token operator">=</span> <span class="token keyword">this</span></pre></td></tr><tr><td data-num="340"></td><td><pre> list<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">item<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="341"></td><td><pre> item<span class="token punctuation">.</span>group <span class="token operator">=</span> group<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="342"></td><td><pre> item<span class="token punctuation">.</span>name <span class="token operator">=</span> item<span class="token punctuation">.</span>name <span class="token operator">||</span> item<span class="token punctuation">.</span>title <span class="token operator">||</span> <span class="token string">'Meida name'</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="343"></td><td><pre> item<span class="token punctuation">.</span>artist <span class="token operator">=</span> item<span class="token punctuation">.</span>artist <span class="token operator">||</span> item<span class="token punctuation">.</span>author <span class="token operator">||</span> <span class="token string">'Anonymous'</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="344"></td><td><pre> item<span class="token punctuation">.</span>cover <span class="token operator">=</span> item<span class="token punctuation">.</span>cover <span class="token operator">||</span> item<span class="token punctuation">.</span>pic<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="345"></td><td><pre> item<span class="token punctuation">.</span>type <span class="token operator">=</span> item<span class="token punctuation">.</span>type <span class="token operator">||</span> <span class="token string">'normal'</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="346"></td><td><pre></pre></td></tr><tr><td data-num="347"></td><td><pre> that<span class="token punctuation">.</span>data<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>item<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="348"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="349"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="350"></td><td><pre> <span class="token function-variable function">clear</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="351"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>data <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="352"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span>innerHTML <span class="token operator">=</span> <span class="token string">""</span></pre></td></tr><tr><td data-num="353"></td><td><pre></pre></td></tr><tr><td data-num="354"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>index <span class="token operator">!==</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="355"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>index <span class="token operator">=</span> <span class="token operator">-</span><span class="token number">1</span></pre></td></tr><tr><td data-num="356"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">fetch</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="357"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="358"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="359"></td><td><pre> <span class="token function-variable function">create</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="360"></td><td><pre> <span class="token keyword">var</span> el <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>el</pre></td></tr><tr><td data-num="361"></td><td><pre></pre></td></tr><tr><td data-num="362"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>data<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">item<span class="token punctuation">,</span> index</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="363"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>item<span class="token punctuation">.</span>el<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="364"></td><td><pre> <span class="token keyword">return</span></pre></td></tr><tr><td data-num="365"></td><td><pre></pre></td></tr><tr><td data-num="366"></td><td><pre> <span class="token keyword">var</span> id <span class="token operator">=</span> <span class="token string">'list-'</span> <span class="token operator">+</span> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>_id <span class="token operator">+</span> <span class="token string">'-'</span> <span class="token operator">+</span> item<span class="token punctuation">.</span>group</pre></td></tr><tr><td data-num="367"></td><td><pre> <span class="token keyword">var</span> tab <span class="token operator">=</span> <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'#'</span> <span class="token operator">+</span> id<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="368"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>tab<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="369"></td><td><pre> tab <span class="token operator">=</span> el<span class="token punctuation">.</span><span class="token function">createChild</span><span class="token punctuation">(</span><span class="token string">'div'</span><span class="token punctuation">,</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="370"></td><td><pre> <span class="token literal-property property">id</span><span class="token operator">:</span> id<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="371"></td><td><pre> <span class="token literal-property property">className</span><span class="token operator">:</span> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>group <span class="token operator">?</span> <span class="token string">'tab'</span> <span class="token operator">:</span> <span class="token string">''</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="372"></td><td><pre> <span class="token literal-property property">innerHTML</span><span class="token operator">:</span> <span class="token string">'&lt;ol>&lt;/ol>'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="373"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="374"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>group<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="375"></td><td><pre> tab<span class="token punctuation">.</span><span class="token function">attr</span><span class="token punctuation">(</span><span class="token string">'data-title'</span><span class="token punctuation">,</span> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>rawList<span class="token punctuation">[</span>item<span class="token punctuation">.</span>group<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'title'</span><span class="token punctuation">]</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="376"></td><td><pre> <span class="token punctuation">.</span><span class="token function">attr</span><span class="token punctuation">(</span><span class="token string">'data-id'</span><span class="token punctuation">,</span> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>_id<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="377"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="378"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="379"></td><td><pre></pre></td></tr><tr><td data-num="380"></td><td><pre> item<span class="token punctuation">.</span>el <span class="token operator">=</span> tab<span class="token punctuation">.</span><span class="token function">child</span><span class="token punctuation">(</span><span class="token string">'ol'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">createChild</span><span class="token punctuation">(</span><span class="token string">'li'</span><span class="token punctuation">,</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="381"></td><td><pre> <span class="token literal-property property">title</span><span class="token operator">:</span> item<span class="token punctuation">.</span>name <span class="token operator">+</span> <span class="token string">' - '</span> <span class="token operator">+</span> item<span class="token punctuation">.</span>artist<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="382"></td><td><pre> <span class="token literal-property property">innerHTML</span><span class="token operator">:</span> <span class="token string">'&lt;span class="info">&lt;span>'</span> <span class="token operator">+</span> item<span class="token punctuation">.</span>name <span class="token operator">+</span> <span class="token string">'&lt;/span>&lt;span>'</span> <span class="token operator">+</span> item<span class="token punctuation">.</span>artist <span class="token operator">+</span> <span class="token string">'&lt;/span>&lt;/span>'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="383"></td><td><pre> <span class="token function-variable function">onclick</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">event</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="384"></td><td><pre> <span class="token keyword">var</span> current <span class="token operator">=</span> event<span class="token punctuation">.</span>currentTarget<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="385"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>playlist<span class="token punctuation">.</span>index <span class="token operator">===</span> index <span class="token operator">&amp;&amp;</span> progress<span class="token punctuation">.</span>el<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="386"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>source<span class="token punctuation">.</span>paused<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="387"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">play</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="388"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="389"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">seek</span><span class="token punctuation">(</span>source<span class="token punctuation">.</span>duration <span class="token operator">*</span> progress<span class="token punctuation">.</span><span class="token function">percent</span><span class="token punctuation">(</span>event<span class="token punctuation">,</span> current<span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="390"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="391"></td><td><pre> <span class="token keyword">return</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="392"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="393"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">switch</span><span class="token punctuation">(</span>index<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="394"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">play</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="395"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="396"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="397"></td><td><pre></pre></td></tr><tr><td data-num="398"></td><td><pre> <span class="token keyword">return</span> item</pre></td></tr><tr><td data-num="399"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="400"></td><td><pre></pre></td></tr><tr><td data-num="401"></td><td><pre> <span class="token function">tabFormat</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="402"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="403"></td><td><pre> <span class="token function-variable function">current</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="404"></td><td><pre> <span class="token keyword">return</span> <span class="token keyword">this</span><span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token keyword">this</span><span class="token punctuation">.</span>index<span class="token punctuation">]</span></pre></td></tr><tr><td data-num="405"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="406"></td><td><pre> <span class="token function-variable function">scroll</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="407"></td><td><pre> <span class="token keyword">var</span> item <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">current</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="408"></td><td><pre> <span class="token keyword">var</span> li <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">child</span><span class="token punctuation">(</span><span class="token string">'li.active'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="409"></td><td><pre> li <span class="token operator">&amp;&amp;</span> li<span class="token punctuation">.</span><span class="token function">removeClass</span><span class="token punctuation">(</span><span class="token string">'active'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="410"></td><td><pre> <span class="token keyword">var</span> tab <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">child</span><span class="token punctuation">(</span><span class="token string">'.tab.active'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="411"></td><td><pre> tab <span class="token operator">&amp;&amp;</span> tab<span class="token punctuation">.</span><span class="token function">removeClass</span><span class="token punctuation">(</span><span class="token string">'active'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="412"></td><td><pre> li <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token string">'.nav li'</span><span class="token punctuation">)</span><span class="token punctuation">[</span>item<span class="token punctuation">.</span>group<span class="token punctuation">]</span></pre></td></tr><tr><td data-num="413"></td><td><pre> li <span class="token operator">&amp;&amp;</span> li<span class="token punctuation">.</span><span class="token function">addClass</span><span class="token punctuation">(</span><span class="token string">'active'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="414"></td><td><pre> tab <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token string">'.tab'</span><span class="token punctuation">)</span><span class="token punctuation">[</span>item<span class="token punctuation">.</span>group<span class="token punctuation">]</span></pre></td></tr><tr><td data-num="415"></td><td><pre> tab <span class="token operator">&amp;&amp;</span> tab<span class="token punctuation">.</span><span class="token function">addClass</span><span class="token punctuation">(</span><span class="token string">'active'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="416"></td><td><pre></pre></td></tr><tr><td data-num="417"></td><td><pre> <span class="token function">pageScroll</span><span class="token punctuation">(</span>item<span class="token punctuation">.</span>el<span class="token punctuation">,</span> item<span class="token punctuation">.</span>el<span class="token punctuation">.</span>offsetTop<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="418"></td><td><pre></pre></td></tr><tr><td data-num="419"></td><td><pre> <span class="token keyword">return</span> <span class="token keyword">this</span></pre></td></tr><tr><td data-num="420"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="421"></td><td><pre> <span class="token function-variable function">title</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="422"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>source<span class="token punctuation">.</span>paused<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="423"></td><td><pre> <span class="token keyword">return</span></pre></td></tr><tr><td data-num="424"></td><td><pre></pre></td></tr><tr><td data-num="425"></td><td><pre> <span class="token keyword">var</span> current <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">current</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="426"></td><td><pre> document<span class="token punctuation">.</span>title <span class="token operator">=</span> <span class="token string">'Now Playing...'</span> <span class="token operator">+</span> current<span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">]</span> <span class="token operator">+</span> <span class="token string">' - '</span> <span class="token operator">+</span> current<span class="token punctuation">[</span><span class="token string">'artist'</span><span class="token punctuation">]</span> <span class="token operator">+</span> <span class="token string">' | '</span> <span class="token operator">+</span> originTitle<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="427"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="428"></td><td><pre> <span class="token function-variable function">error</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="429"></td><td><pre> <span class="token keyword">var</span> current <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">current</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="430"></td><td><pre> current<span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">removeClass</span><span class="token punctuation">(</span><span class="token string">'current'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">addClass</span><span class="token punctuation">(</span><span class="token string">'error'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="431"></td><td><pre> current<span class="token punctuation">.</span>error <span class="token operator">=</span> <span class="token boolean">true</span></pre></td></tr><tr><td data-num="432"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>errnum<span class="token operator">++</span></pre></td></tr><tr><td data-num="433"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="434"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="435"></td><td><pre></pre></td></tr><tr><td data-num="436"></td><td><pre> <span class="token keyword">var</span> lyrics <span class="token operator">=</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="437"></td><td><pre> <span class="token literal-property property">el</span><span class="token operator">:</span> <span class="token keyword">null</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="438"></td><td><pre> <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token keyword">null</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="439"></td><td><pre> <span class="token literal-property property">index</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="440"></td><td><pre> <span class="token function-variable function">create</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">box</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="441"></td><td><pre> <span class="token keyword">var</span> current <span class="token operator">=</span> playlist<span class="token punctuation">.</span>index</pre></td></tr><tr><td data-num="442"></td><td><pre> <span class="token keyword">var</span> that <span class="token operator">=</span> <span class="token keyword">this</span></pre></td></tr><tr><td data-num="443"></td><td><pre> <span class="token keyword">var</span> raw <span class="token operator">=</span> playlist<span class="token punctuation">.</span><span class="token function">current</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>lrc</pre></td></tr><tr><td data-num="444"></td><td><pre></pre></td></tr><tr><td data-num="445"></td><td><pre> <span class="token keyword">var</span> <span class="token function-variable function">callback</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">body</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="446"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>current <span class="token operator">!==</span> playlist<span class="token punctuation">.</span>index<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="447"></td><td><pre> <span class="token keyword">return</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="448"></td><td><pre></pre></td></tr><tr><td data-num="449"></td><td><pre> that<span class="token punctuation">.</span>data <span class="token operator">=</span> that<span class="token punctuation">.</span><span class="token function">parse</span><span class="token punctuation">(</span>body<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="450"></td><td><pre></pre></td></tr><tr><td data-num="451"></td><td><pre> <span class="token keyword">var</span> lrc <span class="token operator">=</span> <span class="token string">''</span></pre></td></tr><tr><td data-num="452"></td><td><pre> that<span class="token punctuation">.</span>data<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">line<span class="token punctuation">,</span> index</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="453"></td><td><pre> lrc <span class="token operator">+=</span> <span class="token string">'&lt;p'</span> <span class="token operator">+</span> <span class="token punctuation">(</span>index <span class="token operator">===</span> <span class="token number">0</span> <span class="token operator">?</span> <span class="token string">' class="current"'</span> <span class="token operator">:</span> <span class="token string">''</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'>'</span> <span class="token operator">+</span> line<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">+</span> <span class="token string">'&lt;/p>'</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="454"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="455"></td><td><pre></pre></td></tr><tr><td data-num="456"></td><td><pre> that<span class="token punctuation">.</span>el <span class="token operator">=</span> box<span class="token punctuation">.</span><span class="token function">createChild</span><span class="token punctuation">(</span><span class="token string">'div'</span><span class="token punctuation">,</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="457"></td><td><pre> <span class="token literal-property property">className</span><span class="token operator">:</span> <span class="token string">'inner'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="458"></td><td><pre> <span class="token literal-property property">innerHTML</span><span class="token operator">:</span> lrc</pre></td></tr><tr><td data-num="459"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span> <span class="token string">'replace'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="460"></td><td><pre></pre></td></tr><tr><td data-num="461"></td><td><pre> that<span class="token punctuation">.</span>index <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="462"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="463"></td><td><pre></pre></td></tr><tr><td data-num="464"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>raw <span class="token operator">&amp;&amp;</span> raw<span class="token punctuation">.</span><span class="token function">startsWith</span><span class="token punctuation">(</span><span class="token string">'http'</span><span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="465"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">fetch</span><span class="token punctuation">(</span>raw<span class="token punctuation">,</span> callback<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="466"></td><td><pre> <span class="token keyword">else</span></pre></td></tr><tr><td data-num="467"></td><td><pre> <span class="token function">callback</span><span class="token punctuation">(</span>raw<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="468"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="469"></td><td><pre> <span class="token function-variable function">update</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">currentTime</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="470"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">this</span><span class="token punctuation">.</span>data<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="471"></td><td><pre> <span class="token keyword">return</span></pre></td></tr><tr><td data-num="472"></td><td><pre></pre></td></tr><tr><td data-num="473"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>index <span class="token operator">></span> <span class="token keyword">this</span><span class="token punctuation">.</span>data<span class="token punctuation">.</span>length <span class="token operator">-</span> <span class="token number">1</span> <span class="token operator">||</span> currentTime <span class="token operator">&lt;</span> <span class="token keyword">this</span><span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token keyword">this</span><span class="token punctuation">.</span>index<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">this</span><span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token keyword">this</span><span class="token punctuation">.</span>index <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">||</span> currentTime <span class="token operator">>=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token keyword">this</span><span class="token punctuation">.</span>index <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="474"></td><td><pre> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> <span class="token keyword">this</span><span class="token punctuation">.</span>data<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="475"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>currentTime <span class="token operator">>=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>data<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">this</span><span class="token punctuation">.</span>data<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">||</span> currentTime <span class="token operator">&lt;</span> <span class="token keyword">this</span><span class="token punctuation">.</span>data<span class="token punctuation">[</span>i <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="476"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>index <span class="token operator">=</span> i<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="477"></td><td><pre> <span class="token keyword">var</span> y <span class="token operator">=</span> <span class="token operator">-</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>index <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="478"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span>style<span class="token punctuation">.</span>transform <span class="token operator">=</span> <span class="token string">'translateY('</span> <span class="token operator">+</span> y <span class="token operator">+</span> <span class="token string">'rem)'</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="479"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span>style<span class="token punctuation">.</span>webkitTransform <span class="token operator">=</span> <span class="token string">'translateY('</span> <span class="token operator">+</span> y <span class="token operator">+</span> <span class="token string">'rem)'</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="480"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">getElementsByClassName</span><span class="token punctuation">(</span><span class="token string">'current'</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">removeClass</span><span class="token punctuation">(</span><span class="token string">'current'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="481"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">getElementsByTagName</span><span class="token punctuation">(</span><span class="token string">'p'</span><span class="token punctuation">)</span><span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">addClass</span><span class="token punctuation">(</span><span class="token string">'current'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="482"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="483"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="484"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="485"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="486"></td><td><pre> <span class="token function-variable function">parse</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">lrc_s</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="487"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>lrc_s<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="488"></td><td><pre> lrc_s <span class="token operator">=</span> lrc_s<span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">([^\]^\n])\[</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">match<span class="token punctuation">,</span> p1</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token keyword">return</span> p1 <span class="token operator">+</span> <span class="token string">'\n['</span> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="489"></td><td><pre> <span class="token keyword">const</span> lyric <span class="token operator">=</span> lrc_s<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">'\n'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="490"></td><td><pre> <span class="token keyword">var</span> lrc <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="491"></td><td><pre> <span class="token keyword">const</span> lyricLen <span class="token operator">=</span> lyric<span class="token punctuation">.</span>length<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="492"></td><td><pre> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> lyricLen<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="493"></td><td><pre> <span class="token comment">// match lrc time</span></pre></td></tr><tr><td data-num="494"></td><td><pre> <span class="token keyword">const</span> lrcTimes <span class="token operator">=</span> lyric<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">match</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">\[(\d&#123;2&#125;):(\d&#123;2&#125;)(\.(\d&#123;2,3&#125;))?]</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="495"></td><td><pre> <span class="token comment">// match lrc text</span></pre></td></tr><tr><td data-num="496"></td><td><pre> <span class="token keyword">const</span> lrcText <span class="token operator">=</span> lyric<span class="token punctuation">[</span>i<span class="token punctuation">]</span></pre></td></tr><tr><td data-num="497"></td><td><pre> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">.*\[(\d&#123;2&#125;):(\d&#123;2&#125;)(\.(\d&#123;2,3&#125;))?]</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">''</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="498"></td><td><pre> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">&lt;(\d&#123;2&#125;):(\d&#123;2&#125;)(\.(\d&#123;2,3&#125;))?></span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">''</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="499"></td><td><pre> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">^\s+|\s+$</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="500"></td><td><pre></pre></td></tr><tr><td data-num="501"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>lrcTimes<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="502"></td><td><pre> <span class="token comment">// handle multiple time tag</span></pre></td></tr><tr><td data-num="503"></td><td><pre> <span class="token keyword">const</span> timeLen <span class="token operator">=</span> lrcTimes<span class="token punctuation">.</span>length<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="504"></td><td><pre> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> j <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> j <span class="token operator">&lt;</span> timeLen<span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="505"></td><td><pre> <span class="token keyword">const</span> oneTime <span class="token operator">=</span> <span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">\[(\d&#123;2&#125;):(\d&#123;2&#125;)(\.(\d&#123;2,3&#125;))?]</span><span class="token regex-delimiter">/</span></span><span class="token punctuation">.</span><span class="token function">exec</span><span class="token punctuation">(</span>lrcTimes<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="506"></td><td><pre> <span class="token keyword">const</span> min2sec <span class="token operator">=</span> oneTime<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">*</span> <span class="token number">60</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="507"></td><td><pre> <span class="token keyword">const</span> sec2sec <span class="token operator">=</span> <span class="token function">parseInt</span><span class="token punctuation">(</span>oneTime<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="508"></td><td><pre> <span class="token keyword">const</span> msec2sec <span class="token operator">=</span> oneTime<span class="token punctuation">[</span><span class="token number">4</span><span class="token punctuation">]</span> <span class="token operator">?</span> <span class="token function">parseInt</span><span class="token punctuation">(</span>oneTime<span class="token punctuation">[</span><span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token punctuation">(</span>oneTime<span class="token punctuation">[</span><span class="token number">4</span><span class="token punctuation">]</span> <span class="token operator">+</span> <span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">.</span>length <span class="token operator">===</span> <span class="token number">2</span> <span class="token operator">?</span> <span class="token number">100</span> <span class="token operator">:</span> <span class="token number">1000</span><span class="token punctuation">)</span> <span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="509"></td><td><pre> <span class="token keyword">const</span> lrcTime <span class="token operator">=</span> min2sec <span class="token operator">+</span> sec2sec <span class="token operator">+</span> msec2sec<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="510"></td><td><pre> lrc<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">[</span>lrcTime<span class="token punctuation">,</span> lrcText<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="511"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="512"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="513"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="514"></td><td><pre> <span class="token comment">// sort by time</span></pre></td></tr><tr><td data-num="515"></td><td><pre> lrc <span class="token operator">=</span> lrc<span class="token punctuation">.</span><span class="token function">filter</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">item</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token keyword">return</span> item<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="516"></td><td><pre> lrc<span class="token punctuation">.</span><span class="token function">sort</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">a<span class="token punctuation">,</span> b</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token keyword">return</span> a<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">-</span> b<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="517"></td><td><pre> <span class="token keyword">return</span> lrc<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="518"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="519"></td><td><pre> <span class="token keyword">return</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="520"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="521"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="522"></td><td><pre> <span class="token function-variable function">fetch</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">url<span class="token punctuation">,</span> callback</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="523"></td><td><pre> <span class="token function">fetch</span><span class="token punctuation">(</span>url<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="524"></td><td><pre> <span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">response</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="525"></td><td><pre> <span class="token keyword">return</span> response<span class="token punctuation">.</span><span class="token function">text</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="526"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">body</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="527"></td><td><pre> <span class="token function">callback</span><span class="token punctuation">(</span>body<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="528"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">catch</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ex</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="529"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="530"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="531"></td><td><pre></pre></td></tr><tr><td data-num="532"></td><td><pre> <span class="token keyword">var</span> preview <span class="token operator">=</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="533"></td><td><pre> <span class="token literal-property property">el</span><span class="token operator">:</span> <span class="token keyword">null</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="534"></td><td><pre> <span class="token function-variable function">create</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="535"></td><td><pre> <span class="token keyword">var</span> current <span class="token operator">=</span> playlist<span class="token punctuation">.</span><span class="token function">current</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="536"></td><td><pre></pre></td></tr><tr><td data-num="537"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span>innerHTML <span class="token operator">=</span> <span class="token string">'&lt;div class="cover">&lt;div class="disc">&lt;img src="'</span> <span class="token operator">+</span> <span class="token punctuation">(</span>current<span class="token punctuation">.</span>cover<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'" class="blur" />&lt;/div>&lt;/div>'</span></pre></td></tr><tr><td data-num="538"></td><td><pre> <span class="token operator">+</span> <span class="token string">'&lt;div class="info">&lt;h4 class="title">'</span> <span class="token operator">+</span> current<span class="token punctuation">.</span>name <span class="token operator">+</span> <span class="token string">'&lt;/h4>&lt;span>'</span> <span class="token operator">+</span> current<span class="token punctuation">.</span>artist <span class="token operator">+</span> <span class="token string">'&lt;/span>'</span></pre></td></tr><tr><td data-num="539"></td><td><pre> <span class="token operator">+</span> <span class="token string">'&lt;div class="lrc">&lt;/div>&lt;/div>'</span></pre></td></tr><tr><td data-num="540"></td><td><pre></pre></td></tr><tr><td data-num="541"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">child</span><span class="token punctuation">(</span><span class="token string">'.cover'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>events<span class="token punctuation">[</span><span class="token string">'play-pause'</span><span class="token punctuation">]</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="542"></td><td><pre></pre></td></tr><tr><td data-num="543"></td><td><pre> lyrics<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">child</span><span class="token punctuation">(</span><span class="token string">'.lrc'</span><span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="544"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="545"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="546"></td><td><pre></pre></td></tr><tr><td data-num="547"></td><td><pre> <span class="token keyword">var</span> progress <span class="token operator">=</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="548"></td><td><pre> <span class="token literal-property property">el</span><span class="token operator">:</span> <span class="token keyword">null</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="549"></td><td><pre> <span class="token literal-property property">bar</span><span class="token operator">:</span> <span class="token keyword">null</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="550"></td><td><pre> <span class="token function-variable function">create</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="551"></td><td><pre> <span class="token keyword">var</span> current <span class="token operator">=</span> playlist<span class="token punctuation">.</span><span class="token function">current</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>el</pre></td></tr><tr><td data-num="552"></td><td><pre></pre></td></tr><tr><td data-num="553"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>current<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="554"></td><td><pre></pre></td></tr><tr><td data-num="555"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="556"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span>parentNode<span class="token punctuation">.</span><span class="token function">removeClass</span><span class="token punctuation">(</span><span class="token string">'current'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="557"></td><td><pre> <span class="token punctuation">.</span><span class="token function">removeEventListener</span><span class="token punctuation">(</span>utils<span class="token punctuation">.</span>nameMap<span class="token punctuation">.</span>dragStart<span class="token punctuation">,</span> <span class="token keyword">this</span><span class="token punctuation">.</span>drag<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="558"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">remove</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="559"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="560"></td><td><pre></pre></td></tr><tr><td data-num="561"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>el <span class="token operator">=</span> current<span class="token punctuation">.</span><span class="token function">createChild</span><span class="token punctuation">(</span><span class="token string">'div'</span><span class="token punctuation">,</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="562"></td><td><pre> <span class="token literal-property property">className</span><span class="token operator">:</span> <span class="token string">'progress'</span></pre></td></tr><tr><td data-num="563"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="564"></td><td><pre></pre></td></tr><tr><td data-num="565"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">attr</span><span class="token punctuation">(</span><span class="token string">'data-dtime'</span><span class="token punctuation">,</span> utils<span class="token punctuation">.</span><span class="token function">secondToTime</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="566"></td><td><pre></pre></td></tr><tr><td data-num="567"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>bar <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">createChild</span><span class="token punctuation">(</span><span class="token string">'div'</span><span class="token punctuation">,</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="568"></td><td><pre> <span class="token literal-property property">className</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="569"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="570"></td><td><pre></pre></td></tr><tr><td data-num="571"></td><td><pre> current<span class="token punctuation">.</span><span class="token function">addClass</span><span class="token punctuation">(</span><span class="token string">'current'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="572"></td><td><pre></pre></td></tr><tr><td data-num="573"></td><td><pre> current<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span>utils<span class="token punctuation">.</span>nameMap<span class="token punctuation">.</span>dragStart<span class="token punctuation">,</span> <span class="token keyword">this</span><span class="token punctuation">.</span>drag<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="574"></td><td><pre></pre></td></tr><tr><td data-num="575"></td><td><pre> playlist<span class="token punctuation">.</span><span class="token function">scroll</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="576"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="577"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="578"></td><td><pre> <span class="token function-variable function">update</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">percent</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="579"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>bar<span class="token punctuation">.</span><span class="token function">width</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">floor</span><span class="token punctuation">(</span>percent <span class="token operator">*</span> <span class="token number">100</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'%'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="580"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">attr</span><span class="token punctuation">(</span><span class="token string">'data-ptime'</span><span class="token punctuation">,</span> utils<span class="token punctuation">.</span><span class="token function">secondToTime</span><span class="token punctuation">(</span>percent <span class="token operator">*</span> source<span class="token punctuation">.</span>duration<span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="581"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="582"></td><td><pre> <span class="token function-variable function">seeking</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">type</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="583"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>type<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="584"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">addClass</span><span class="token punctuation">(</span><span class="token string">'seeking'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="585"></td><td><pre> <span class="token keyword">else</span></pre></td></tr><tr><td data-num="586"></td><td><pre> <span class="token keyword">this</span><span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">removeClass</span><span class="token punctuation">(</span><span class="token string">'seeking'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="587"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="588"></td><td><pre> <span class="token function-variable function">percent</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">e<span class="token punctuation">,</span> el</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="589"></td><td><pre> <span class="token keyword">var</span> percentage <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">(</span>e<span class="token punctuation">.</span>clientX <span class="token operator">||</span> e<span class="token punctuation">.</span>changedTouches<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>clientX<span class="token punctuation">)</span> <span class="token operator">-</span> el<span class="token punctuation">.</span><span class="token function">left</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">/</span> el<span class="token punctuation">.</span><span class="token function">width</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="590"></td><td><pre> percentage <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">max</span><span class="token punctuation">(</span>percentage<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="591"></td><td><pre> <span class="token keyword">return</span> Math<span class="token punctuation">.</span><span class="token function">min</span><span class="token punctuation">(</span>percentage<span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="592"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="593"></td><td><pre> <span class="token function-variable function">drag</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">e</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="594"></td><td><pre> e<span class="token punctuation">.</span><span class="token function">preventDefault</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="595"></td><td><pre></pre></td></tr><tr><td data-num="596"></td><td><pre> <span class="token keyword">var</span> current <span class="token operator">=</span> playlist<span class="token punctuation">.</span><span class="token function">current</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>el</pre></td></tr><tr><td data-num="597"></td><td><pre></pre></td></tr><tr><td data-num="598"></td><td><pre> <span class="token keyword">var</span> <span class="token function-variable function">thumbMove</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">e</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="599"></td><td><pre> e<span class="token punctuation">.</span><span class="token function">preventDefault</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="600"></td><td><pre> <span class="token keyword">var</span> percentage <span class="token operator">=</span> progress<span class="token punctuation">.</span><span class="token function">percent</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> current<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="601"></td><td><pre> progress<span class="token punctuation">.</span><span class="token function">update</span><span class="token punctuation">(</span>percentage<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="602"></td><td><pre> lyrics<span class="token punctuation">.</span><span class="token function">update</span><span class="token punctuation">(</span>percentage <span class="token operator">*</span> source<span class="token punctuation">.</span>duration<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="603"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="604"></td><td><pre></pre></td></tr><tr><td data-num="605"></td><td><pre> <span class="token keyword">var</span> <span class="token function-variable function">thumbUp</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">e</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="606"></td><td><pre> e<span class="token punctuation">.</span><span class="token function">preventDefault</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="607"></td><td><pre> current<span class="token punctuation">.</span><span class="token function">removeEventListener</span><span class="token punctuation">(</span>utils<span class="token punctuation">.</span>nameMap<span class="token punctuation">.</span>dragEnd<span class="token punctuation">,</span> thumbUp<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="608"></td><td><pre> current<span class="token punctuation">.</span><span class="token function">removeEventListener</span><span class="token punctuation">(</span>utils<span class="token punctuation">.</span>nameMap<span class="token punctuation">.</span>dragMove<span class="token punctuation">,</span> thumbMove<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="609"></td><td><pre> <span class="token keyword">var</span> percentage <span class="token operator">=</span> progress<span class="token punctuation">.</span><span class="token function">percent</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> current<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="610"></td><td><pre> progress<span class="token punctuation">.</span><span class="token function">update</span><span class="token punctuation">(</span>percentage<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="611"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">seek</span><span class="token punctuation">(</span>percentage <span class="token operator">*</span> source<span class="token punctuation">.</span>duration<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="612"></td><td><pre> source<span class="token punctuation">.</span>disableTimeupdate <span class="token operator">=</span> <span class="token boolean">false</span></pre></td></tr><tr><td data-num="613"></td><td><pre> progress<span class="token punctuation">.</span><span class="token function">seeking</span><span class="token punctuation">(</span><span class="token boolean">false</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="614"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="615"></td><td><pre></pre></td></tr><tr><td data-num="616"></td><td><pre> source<span class="token punctuation">.</span>disableTimeupdate <span class="token operator">=</span> <span class="token boolean">true</span></pre></td></tr><tr><td data-num="617"></td><td><pre> progress<span class="token punctuation">.</span><span class="token function">seeking</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="618"></td><td><pre> current<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span>utils<span class="token punctuation">.</span>nameMap<span class="token punctuation">.</span>dragMove<span class="token punctuation">,</span> thumbMove<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="619"></td><td><pre> current<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span>utils<span class="token punctuation">.</span>nameMap<span class="token punctuation">.</span>dragEnd<span class="token punctuation">,</span> thumbUp<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="620"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="621"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="622"></td><td><pre></pre></td></tr><tr><td data-num="623"></td><td><pre> <span class="token keyword">var</span> controller <span class="token operator">=</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="624"></td><td><pre> <span class="token literal-property property">el</span><span class="token operator">:</span> <span class="token keyword">null</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="625"></td><td><pre> <span class="token literal-property property">btns</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span><span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="626"></td><td><pre> <span class="token literal-property property">step</span><span class="token operator">:</span> <span class="token string">'next'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="627"></td><td><pre> <span class="token function-variable function">create</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="628"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>controls<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="629"></td><td><pre> <span class="token keyword">return</span></pre></td></tr><tr><td data-num="630"></td><td><pre></pre></td></tr><tr><td data-num="631"></td><td><pre> <span class="token keyword">var</span> that <span class="token operator">=</span> <span class="token keyword">this</span></pre></td></tr><tr><td data-num="632"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>controls<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">item</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="633"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>that<span class="token punctuation">.</span>btns<span class="token punctuation">[</span>item<span class="token punctuation">]</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="634"></td><td><pre> <span class="token keyword">return</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="635"></td><td><pre></pre></td></tr><tr><td data-num="636"></td><td><pre> <span class="token keyword">var</span> opt <span class="token operator">=</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="637"></td><td><pre> <span class="token function-variable function">onclick</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">event</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="638"></td><td><pre> that<span class="token punctuation">.</span>events<span class="token punctuation">[</span>item<span class="token punctuation">]</span> <span class="token operator">?</span> that<span class="token punctuation">.</span>events<span class="token punctuation">[</span>item<span class="token punctuation">]</span><span class="token punctuation">(</span>event<span class="token punctuation">)</span> <span class="token operator">:</span> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>events<span class="token punctuation">[</span>item<span class="token punctuation">]</span><span class="token punctuation">(</span>event<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="639"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="640"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="641"></td><td><pre></pre></td></tr><tr><td data-num="642"></td><td><pre> <span class="token keyword">switch</span> <span class="token punctuation">(</span>item<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="643"></td><td><pre> <span class="token keyword">case</span> <span class="token string">'volume'</span><span class="token operator">:</span></pre></td></tr><tr><td data-num="644"></td><td><pre> opt<span class="token punctuation">.</span>className <span class="token operator">=</span> <span class="token string">' '</span> <span class="token operator">+</span> <span class="token punctuation">(</span>source<span class="token punctuation">.</span>muted <span class="token operator">?</span> <span class="token string">'off'</span> <span class="token operator">:</span> <span class="token string">'on'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="645"></td><td><pre> opt<span class="token punctuation">.</span>innerHTML <span class="token operator">=</span> <span class="token string">'&lt;div class="bar">&lt;/div>'</span></pre></td></tr><tr><td data-num="646"></td><td><pre> opt<span class="token punctuation">[</span><span class="token string">'on'</span> <span class="token operator">+</span> utils<span class="token punctuation">.</span>nameMap<span class="token punctuation">.</span>dragStart<span class="token punctuation">]</span> <span class="token operator">=</span> that<span class="token punctuation">.</span>events<span class="token punctuation">[</span><span class="token string">'volume'</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="647"></td><td><pre> opt<span class="token punctuation">.</span>onclick <span class="token operator">=</span> <span class="token keyword">null</span></pre></td></tr><tr><td data-num="648"></td><td><pre> <span class="token keyword">break</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="649"></td><td><pre> <span class="token keyword">case</span> <span class="token string">'mode'</span><span class="token operator">:</span></pre></td></tr><tr><td data-num="650"></td><td><pre> opt<span class="token punctuation">.</span>className <span class="token operator">=</span> <span class="token string">' '</span> <span class="token operator">+</span> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>mode</pre></td></tr><tr><td data-num="651"></td><td><pre> <span class="token keyword">break</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="652"></td><td><pre> <span class="token keyword">default</span><span class="token operator">:</span></pre></td></tr><tr><td data-num="653"></td><td><pre> opt<span class="token punctuation">.</span>className <span class="token operator">=</span> <span class="token string">''</span></pre></td></tr><tr><td data-num="654"></td><td><pre> <span class="token keyword">break</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="655"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="656"></td><td><pre></pre></td></tr><tr><td data-num="657"></td><td><pre> opt<span class="token punctuation">.</span>className <span class="token operator">=</span> item <span class="token operator">+</span> opt<span class="token punctuation">.</span>className <span class="token operator">+</span> <span class="token string">' btn'</span></pre></td></tr><tr><td data-num="658"></td><td><pre></pre></td></tr><tr><td data-num="659"></td><td><pre> that<span class="token punctuation">.</span>btns<span class="token punctuation">[</span>item<span class="token punctuation">]</span> <span class="token operator">=</span> that<span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">createChild</span><span class="token punctuation">(</span><span class="token string">'div'</span><span class="token punctuation">,</span> opt<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="660"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="661"></td><td><pre></pre></td></tr><tr><td data-num="662"></td><td><pre> that<span class="token punctuation">.</span>btns<span class="token punctuation">[</span><span class="token string">'volume'</span><span class="token punctuation">]</span><span class="token punctuation">.</span>bar <span class="token operator">=</span> that<span class="token punctuation">.</span>btns<span class="token punctuation">[</span><span class="token string">'volume'</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">child</span><span class="token punctuation">(</span><span class="token string">'.bar'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="663"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="664"></td><td><pre> <span class="token literal-property property">events</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="665"></td><td><pre> <span class="token function-variable function">mode</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">e</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="666"></td><td><pre> <span class="token keyword">switch</span> <span class="token punctuation">(</span>t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>mode<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="667"></td><td><pre> <span class="token keyword">case</span> <span class="token string">'loop'</span><span class="token operator">:</span></pre></td></tr><tr><td data-num="668"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>mode <span class="token operator">=</span> <span class="token string">'random'</span></pre></td></tr><tr><td data-num="669"></td><td><pre> <span class="token keyword">break</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="670"></td><td><pre> <span class="token keyword">case</span> <span class="token string">'random'</span><span class="token operator">:</span></pre></td></tr><tr><td data-num="671"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>mode <span class="token operator">=</span> <span class="token string">'order'</span></pre></td></tr><tr><td data-num="672"></td><td><pre> <span class="token keyword">break</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="673"></td><td><pre> <span class="token keyword">default</span><span class="token operator">:</span></pre></td></tr><tr><td data-num="674"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>mode <span class="token operator">=</span> <span class="token string">'loop'</span></pre></td></tr><tr><td data-num="675"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="676"></td><td><pre></pre></td></tr><tr><td data-num="677"></td><td><pre> controller<span class="token punctuation">.</span>btns<span class="token punctuation">[</span><span class="token string">'mode'</span><span class="token punctuation">]</span><span class="token punctuation">.</span>className <span class="token operator">=</span> <span class="token string">'mode '</span> <span class="token operator">+</span> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>mode <span class="token operator">+</span> <span class="token string">' btn'</span></pre></td></tr><tr><td data-num="678"></td><td><pre> store<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span><span class="token string">'_PlayerMode'</span><span class="token punctuation">,</span> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>mode<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="679"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="680"></td><td><pre> <span class="token function-variable function">volume</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">e</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="681"></td><td><pre> e<span class="token punctuation">.</span><span class="token function">preventDefault</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="682"></td><td><pre></pre></td></tr><tr><td data-num="683"></td><td><pre> <span class="token keyword">var</span> current <span class="token operator">=</span> e<span class="token punctuation">.</span>currentTarget</pre></td></tr><tr><td data-num="684"></td><td><pre></pre></td></tr><tr><td data-num="685"></td><td><pre> <span class="token keyword">var</span> drag <span class="token operator">=</span> <span class="token boolean">false</span></pre></td></tr><tr><td data-num="686"></td><td><pre></pre></td></tr><tr><td data-num="687"></td><td><pre> <span class="token keyword">var</span> <span class="token function-variable function">thumbMove</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">e</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="688"></td><td><pre> e<span class="token punctuation">.</span><span class="token function">preventDefault</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="689"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">volume</span><span class="token punctuation">(</span>controller<span class="token punctuation">.</span><span class="token function">percent</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> current<span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="690"></td><td><pre> drag <span class="token operator">=</span> <span class="token boolean">true</span></pre></td></tr><tr><td data-num="691"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="692"></td><td><pre></pre></td></tr><tr><td data-num="693"></td><td><pre> <span class="token keyword">var</span> <span class="token function-variable function">thumbUp</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">e</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="694"></td><td><pre> e<span class="token punctuation">.</span><span class="token function">preventDefault</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="695"></td><td><pre> current<span class="token punctuation">.</span><span class="token function">removeEventListener</span><span class="token punctuation">(</span>utils<span class="token punctuation">.</span>nameMap<span class="token punctuation">.</span>dragEnd<span class="token punctuation">,</span> thumbUp<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="696"></td><td><pre> current<span class="token punctuation">.</span><span class="token function">removeEventListener</span><span class="token punctuation">(</span>utils<span class="token punctuation">.</span>nameMap<span class="token punctuation">.</span>dragMove<span class="token punctuation">,</span> thumbMove<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="697"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>drag<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="698"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">muted</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="699"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">volume</span><span class="token punctuation">(</span>controller<span class="token punctuation">.</span><span class="token function">percent</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> current<span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="700"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="701"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>source<span class="token punctuation">.</span>muted<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="702"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">muted</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="703"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">volume</span><span class="token punctuation">(</span>source<span class="token punctuation">.</span>volume<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="704"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="705"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">muted</span><span class="token punctuation">(</span><span class="token string">'muted'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="706"></td><td><pre> controller<span class="token punctuation">.</span><span class="token function">update</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="707"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="708"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="709"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="710"></td><td><pre></pre></td></tr><tr><td data-num="711"></td><td><pre> current<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span>utils<span class="token punctuation">.</span>nameMap<span class="token punctuation">.</span>dragMove<span class="token punctuation">,</span> thumbMove<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="712"></td><td><pre> current<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span>utils<span class="token punctuation">.</span>nameMap<span class="token punctuation">.</span>dragEnd<span class="token punctuation">,</span> thumbUp<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="713"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="714"></td><td><pre> <span class="token function-variable function">backward</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">e</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="715"></td><td><pre> controller<span class="token punctuation">.</span>step <span class="token operator">=</span> <span class="token string">'prev'</span></pre></td></tr><tr><td data-num="716"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">mode</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="717"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="718"></td><td><pre> <span class="token function-variable function">forward</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">e</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="719"></td><td><pre> controller<span class="token punctuation">.</span>step <span class="token operator">=</span> <span class="token string">'next'</span></pre></td></tr><tr><td data-num="720"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">mode</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="721"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="722"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="723"></td><td><pre> <span class="token function-variable function">update</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">percent</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="724"></td><td><pre> controller<span class="token punctuation">.</span>btns<span class="token punctuation">[</span><span class="token string">'volume'</span><span class="token punctuation">]</span><span class="token punctuation">.</span>className <span class="token operator">=</span> <span class="token string">'volume '</span> <span class="token operator">+</span> <span class="token punctuation">(</span><span class="token operator">!</span>source<span class="token punctuation">.</span>muted <span class="token operator">&amp;&amp;</span> percent <span class="token operator">></span> <span class="token number">0</span> <span class="token operator">?</span> <span class="token string">'on'</span> <span class="token operator">:</span> <span class="token string">'off'</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">' btn'</span></pre></td></tr><tr><td data-num="725"></td><td><pre> controller<span class="token punctuation">.</span>btns<span class="token punctuation">[</span><span class="token string">'volume'</span><span class="token punctuation">]</span><span class="token punctuation">.</span>bar<span class="token punctuation">.</span><span class="token function">width</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">floor</span><span class="token punctuation">(</span>percent <span class="token operator">*</span> <span class="token number">100</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'%'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="726"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="727"></td><td><pre> <span class="token function-variable function">percent</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">e<span class="token punctuation">,</span> el</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="728"></td><td><pre> <span class="token keyword">var</span> percentage <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">(</span>e<span class="token punctuation">.</span>clientX <span class="token operator">||</span> e<span class="token punctuation">.</span>changedTouches<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>clientX<span class="token punctuation">)</span> <span class="token operator">-</span> el<span class="token punctuation">.</span><span class="token function">left</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">/</span> el<span class="token punctuation">.</span><span class="token function">width</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="729"></td><td><pre> percentage <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">max</span><span class="token punctuation">(</span>percentage<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="730"></td><td><pre> <span class="token keyword">return</span> Math<span class="token punctuation">.</span><span class="token function">min</span><span class="token punctuation">(</span>percentage<span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="731"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="732"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="733"></td><td><pre></pre></td></tr><tr><td data-num="734"></td><td><pre> <span class="token keyword">var</span> events <span class="token operator">=</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="735"></td><td><pre> <span class="token function-variable function">onerror</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="736"></td><td><pre> <span class="token comment">// 自己修改 - start</span></pre></td></tr><tr><td data-num="737"></td><td><pre> <span class="token keyword">var</span> item <span class="token operator">=</span> playlist<span class="token punctuation">.</span><span class="token function">current</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="738"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>item<span class="token punctuation">.</span>repair <span class="token operator">&amp;&amp;</span> item<span class="token punctuation">.</span>company <span class="token operator">&amp;&amp;</span> item<span class="token punctuation">.</span>company <span class="token operator">==</span> <span class="token string">"netease"</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="739"></td><td><pre> <span class="token keyword">var</span> id <span class="token operator">=</span> item<span class="token punctuation">.</span>url<span class="token punctuation">.</span><span class="token function">substring</span><span class="token punctuation">(</span>item<span class="token punctuation">.</span>url<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span><span class="token string">"id="</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">3</span><span class="token punctuation">,</span> item<span class="token punctuation">.</span>url<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span><span class="token string">"&amp;auth="</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="740"></td><td><pre> item<span class="token punctuation">.</span>url <span class="token operator">=</span> <span class="token string">"https://music.163.com/song/media/outer/url?id="</span> <span class="token operator">+</span> id<span class="token punctuation">;</span> <span class="token comment">// 修正的网易云 url</span></pre></td></tr><tr><td data-num="741"></td><td><pre> item<span class="token punctuation">.</span>pic <span class="token operator">=</span> <span class="token string">"https://p3.music.126.net/Vji3PQJAZ2C7gS_6X51NFQ==/109951164723650033.jpg?param=200y200"</span><span class="token punctuation">;</span> <span class="token comment">// 使用网易云上固定的一张封面</span></pre></td></tr><tr><td data-num="742"></td><td><pre> item<span class="token punctuation">.</span>cover <span class="token operator">=</span> item<span class="token punctuation">.</span>pic<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="743"></td><td><pre> item<span class="token punctuation">.</span>repair <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span> <span class="token comment">// 已修正</span></pre></td></tr><tr><td data-num="744"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 重新播放</span></pre></td></tr><tr><td data-num="745"></td><td><pre> <span class="token punctuation">&#125;</span> <span class="token keyword">else</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="746"></td><td><pre> playlist<span class="token punctuation">.</span><span class="token function">error</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="747"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">mode</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="748"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="749"></td><td><pre> <span class="token comment">// 自己修改 - end</span></pre></td></tr><tr><td data-num="750"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="751"></td><td><pre> <span class="token function-variable function">ondurationchange</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="752"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>source<span class="token punctuation">.</span>duration <span class="token operator">!==</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="753"></td><td><pre> progress<span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">attr</span><span class="token punctuation">(</span><span class="token string">'data-dtime'</span><span class="token punctuation">,</span> utils<span class="token punctuation">.</span><span class="token function">secondToTime</span><span class="token punctuation">(</span>source<span class="token punctuation">.</span>duration<span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="754"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="755"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="756"></td><td><pre> <span class="token function-variable function">onloadedmetadata</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="757"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">seek</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="758"></td><td><pre> progress<span class="token punctuation">.</span>el<span class="token punctuation">.</span><span class="token function">attr</span><span class="token punctuation">(</span><span class="token string">'data-dtime'</span><span class="token punctuation">,</span> utils<span class="token punctuation">.</span><span class="token function">secondToTime</span><span class="token punctuation">(</span>source<span class="token punctuation">.</span>duration<span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="759"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="760"></td><td><pre> <span class="token function-variable function">onplay</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="761"></td><td><pre> t<span class="token punctuation">.</span>parentNode<span class="token punctuation">.</span><span class="token function">addClass</span><span class="token punctuation">(</span><span class="token string">'playing'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="762"></td><td><pre> <span class="token function">showtip</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">attr</span><span class="token punctuation">(</span><span class="token string">'title'</span><span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="763"></td><td><pre> <span class="token constant">NOWPLAYING</span> <span class="token operator">=</span> t</pre></td></tr><tr><td data-num="764"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="765"></td><td><pre> <span class="token function-variable function">onpause</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="766"></td><td><pre> t<span class="token punctuation">.</span>parentNode<span class="token punctuation">.</span><span class="token function">removeClass</span><span class="token punctuation">(</span><span class="token string">'playing'</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="767"></td><td><pre> <span class="token constant">NOWPLAYING</span> <span class="token operator">=</span> <span class="token keyword">null</span></pre></td></tr><tr><td data-num="768"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="769"></td><td><pre> <span class="token function-variable function">ontimeupdate</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="770"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">this</span><span class="token punctuation">.</span>disableTimeupdate<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="771"></td><td><pre> progress<span class="token punctuation">.</span><span class="token function">update</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>currentTime <span class="token operator">/</span> <span class="token keyword">this</span><span class="token punctuation">.</span>duration<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="772"></td><td><pre> lyrics<span class="token punctuation">.</span><span class="token function">update</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>currentTime<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="773"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="774"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="775"></td><td><pre> <span class="token function-variable function">onended</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">argument</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="776"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">mode</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="777"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">play</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="778"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="779"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="780"></td><td><pre></pre></td></tr><tr><td data-num="781"></td><td><pre> <span class="token keyword">var</span> buttons <span class="token operator">=</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="782"></td><td><pre> <span class="token literal-property property">el</span><span class="token operator">:</span> <span class="token punctuation">&#123;</span><span class="token punctuation">&#125;</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="783"></td><td><pre> <span class="token function-variable function">create</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="784"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>btns<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="785"></td><td><pre> <span class="token keyword">return</span></pre></td></tr><tr><td data-num="786"></td><td><pre></pre></td></tr><tr><td data-num="787"></td><td><pre> <span class="token keyword">var</span> that <span class="token operator">=</span> <span class="token keyword">this</span></pre></td></tr><tr><td data-num="788"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>btns<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">item</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="789"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>that<span class="token punctuation">.</span>el<span class="token punctuation">[</span>item<span class="token punctuation">]</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="790"></td><td><pre> <span class="token keyword">return</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="791"></td><td><pre></pre></td></tr><tr><td data-num="792"></td><td><pre> that<span class="token punctuation">.</span>el<span class="token punctuation">[</span>item<span class="token punctuation">]</span> <span class="token operator">=</span> t<span class="token punctuation">.</span><span class="token function">createChild</span><span class="token punctuation">(</span><span class="token string">'div'</span><span class="token punctuation">,</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="793"></td><td><pre> <span class="token literal-property property">className</span><span class="token operator">:</span> item <span class="token operator">+</span> <span class="token string">' btn'</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="794"></td><td><pre> <span class="token function-variable function">onclick</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">event</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="795"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span><span class="token function">fetch</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="796"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>events<span class="token punctuation">[</span>item<span class="token punctuation">]</span><span class="token punctuation">(</span>event<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="797"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="798"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="799"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="800"></td><td><pre> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="801"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="802"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="803"></td><td><pre></pre></td></tr><tr><td data-num="804"></td><td><pre> <span class="token keyword">var</span> <span class="token function-variable function">init</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">config</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="805"></td><td><pre> <span class="token keyword">if</span> <span class="token punctuation">(</span>t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>created<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="806"></td><td><pre> <span class="token keyword">return</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="807"></td><td><pre></pre></td></tr><tr><td data-num="808"></td><td><pre></pre></td></tr><tr><td data-num="809"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options <span class="token operator">=</span> Object<span class="token punctuation">.</span><span class="token function">assign</span><span class="token punctuation">(</span>option<span class="token punctuation">,</span> config<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="810"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>mode <span class="token operator">=</span> store<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'_PlayerMode'</span><span class="token punctuation">)</span> <span class="token operator">||</span> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>mode</pre></td></tr><tr><td data-num="811"></td><td><pre></pre></td></tr><tr><td data-num="812"></td><td><pre> <span class="token comment">// 初始化 button、controls 以及 click 事件</span></pre></td></tr><tr><td data-num="813"></td><td><pre> buttons<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="814"></td><td><pre></pre></td></tr><tr><td data-num="815"></td><td><pre> <span class="token comment">// 初始化 audio or video</span></pre></td></tr><tr><td data-num="816"></td><td><pre> source <span class="token operator">=</span> t<span class="token punctuation">.</span><span class="token function">createChild</span><span class="token punctuation">(</span>t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>type<span class="token punctuation">,</span> events<span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="817"></td><td><pre> <span class="token comment">// 初始化播放列表、预览、控件按钮等</span></pre></td></tr><tr><td data-num="818"></td><td><pre> info<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="819"></td><td><pre></pre></td></tr><tr><td data-num="820"></td><td><pre> t<span class="token punctuation">.</span>parentNode<span class="token punctuation">.</span><span class="token function">addClass</span><span class="token punctuation">(</span>t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>options<span class="token punctuation">.</span>type<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="821"></td><td><pre></pre></td></tr><tr><td data-num="822"></td><td><pre> t<span class="token punctuation">.</span>player<span class="token punctuation">.</span>created <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="823"></td><td><pre> <span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="824"></td><td><pre></pre></td></tr><tr><td data-num="825"></td><td><pre> <span class="token function">init</span><span class="token punctuation">(</span>config<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="826"></td><td><pre></pre></td></tr><tr><td data-num="827"></td><td><pre> <span class="token keyword">return</span> t<span class="token punctuation">;</span></pre></td></tr><tr><td data-num="828"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr></table></figure><div class="tags"><a href="/tags/%E5%8D%9A%E5%AE%A2/" rel="tag"><i class="ic i-tag"></i> 博客</a> <a href="/tags/Hexo/" rel="tag"><i class="ic i-tag"></i> Hexo</a> <a href="/tags/Shoka/" rel="tag"><i class="ic i-tag"></i> Shoka</a> <a href="/tags/%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90/" rel="tag"><i class="ic i-tag"></i> 背景音乐</a></div></div><footer><div class="meta"><span class="item"><span class="icon"><i class="ic i-calendar-check"></i> </span><span class="text">更新于</span> <time title="修改时间2022-11-11 12:42:29" itemprop="dateModified" datetime="2022-11-11T12:42:29+08:00">2022-11-11</time> </span><span id="2022/09/26/解决Hexo-Shoka背景音乐无法播放的问题/" class="item leancloud_visitors" data-flag-title="解决 Hexo+Shoka 背景音乐无法播放的问题" title="阅读次数"><span class="icon"><i class="ic i-eye"></i> </span><span class="text">阅读次数</span> <span class="leancloud-visitors-count"></span> <span class="text"></span></span></div><div class="reward"><button><i class="ic i-heartbeat"></i> 赞赏</button><p>请我喝[茶]~( ̄▽ ̄)~*</p><div id="qr"><div><img data-src="/images/wechatpay.png" alt="Hito Li 微信支付"><p>微信支付</p></div><div><img data-src="/images/alipay.png" alt="Hito Li 支付宝"><p>支付宝</p></div></div></div><div id="copyright"><ul><li class="author"><strong>本文作者: </strong>Hito li <i class="ic i-at"><em>@</em></i>涛声依旧</li><li class="link"><strong>本文链接:</strong> <a href="https://hitoli.com/2022/09/26/%E8%A7%A3%E5%86%B3Hexo-Shoka%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90%E6%97%A0%E6%B3%95%E6%92%AD%E6%94%BE%E7%9A%84%E9%97%AE%E9%A2%98/" title="解决 Hexo+Shoka 背景音乐无法播放的问题">https://hitoli.com/2022/09/26/解决Hexo-Shoka背景音乐无法播放的问题/</a></li><li class="license"><strong>版权声明: </strong>本站所有文章除特别声明外,均采用 <span class="exturl" data-url="aHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLXNhLzQuMC9kZWVkLnpo"><i class="ic i-creative-commons"><em>(CC)</em></i>BY-NC-SA</span> 许可协议。转载请注明出处!</li></ul></div></footer></article></div><div class="post-nav"><div class="item left"><a href="/2022/09/23/%E8%A7%A3%E5%86%B3%E5%9F%9F%E5%90%8Dip%E5%8F%98%E5%8A%A8%E5%90%8E%E9%9C%80%E8%A6%81%E9%87%8D%E5%90%AFnginx%E7%9A%84%E9%97%AE%E9%A2%98/" itemprop="url" rel="prev" data-background-image="https:&#x2F;&#x2F;nas.hitoli.com:18014&#x2F;images&#x2F;2022&#x2F;10&#x2F;29&#x2F;6833939bly1gipex2cdtbj20zk0m8x6p.jpg" title="解决域名ip变动后需要重启nginx的问题"><span class="type">上一篇</span> <span class="category"><i class="ic i-flag"></i> Nginx</span><h3>解决域名ip变动后需要重启nginx的问题</h3></a></div><div class="item right"><a href="/2022/09/27/nginx%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E9%85%8D%E7%BD%AE/" itemprop="url" rel="next" data-background-image="https:&#x2F;&#x2F;nas.hitoli.com:18014&#x2F;images&#x2F;2022&#x2F;10&#x2F;29&#x2F;6833939bly1gipeun65urj20zk0m81ii.jpg" title="nginx负载均衡配置"><span class="type">下一篇</span> <span class="category"><i class="ic i-flag"></i> Nginx</span><h3>nginx负载均衡配置</h3></a></div></div><div class="wrap" id="comments"></div></div><div id="sidebar"><div class="inner"><div class="panels"><div class="inner"><div class="contents panel pjax" data-title="文章目录"><ol class="toc"><li class="toc-item toc-level-4"><a class="toc-link" href="#%E9%97%AE%E9%A2%98%E6%8F%8F%E8%BF%B0"><span class="toc-number">1.</span> <span class="toc-text">问题描述</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95"><span class="toc-number">2.</span> <span class="toc-text">解决方法</span></a></li></ol></div><div class="related panel pjax" data-title="系列文章"><ul><li><a href="/2022/09/14/Hexo%E5%AE%89%E8%A3%85%E6%91%B8%E7%B4%A2/" rel="bookmark" title="Hexo安装摸索">Hexo安装摸索</a></li><li><a href="/2022/09/17/Hexo-Theme-Shoka-algolia%E6%90%9C%E7%B4%A2%E8%B8%A9%E5%9D%91/" rel="bookmark" title="Hexo + Theme.Shoka + algolia搜索踩坑">Hexo + Theme.Shoka + algolia搜索踩坑</a></li><li class="active"><a href="/2022/09/26/%E8%A7%A3%E5%86%B3Hexo-Shoka%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90%E6%97%A0%E6%B3%95%E6%92%AD%E6%94%BE%E7%9A%84%E9%97%AE%E9%A2%98/" rel="bookmark" title="解决Hexo+Shoka背景音乐无法播放的问题">解决Hexo+Shoka背景音乐无法播放的问题</a></li><li><a href="/2022/10/21/Hexo-Theme-Shoka-Valine%E8%AF%84%E8%AE%BA%E9%85%8D%E7%BD%AE/" rel="bookmark" title="Hexo + Theme.Shoka + Valine评论配置">Hexo + Theme.Shoka + Valine评论配置</a></li></ul></div><div class="overview panel" data-title="站点概览"><div class="author" itemprop="author" itemscope itemtype="http://schema.org/Person"><img class="image" itemprop="image" alt="Hito Li" data-src="/images/avatar.jpg"><p class="name" itemprop="name">Hito Li</p><div class="description" itemprop="description">天生我材必有用</div></div><nav class="state"><div class="item posts"><a href="/archives/"><span class="count">38</span> <span class="name">文章</span></a></div><div class="item categories"><a href="/categories/"><span class="count">18</span> <span class="name">分类</span></a></div><div class="item tags"><a href="/tags/"><span class="count">63</span> <span class="name">标签</span></a></div></nav><div class="social"><span class="exturl item weibo" data-url="aHR0cHM6Ly93ZWliby5jb20vdS8xMDYxNDYwNzQ1" title="https:&#x2F;&#x2F;weibo.com&#x2F;u&#x2F;1061460745"><i class="ic i-weibo"></i></span> <span class="exturl item douban" data-url="aHR0cHM6Ly93d3cuZG91YmFuLmNvbS9wZW9wbGUvMjU5Mzc2NTY0" title="https:&#x2F;&#x2F;www.douban.com&#x2F;people&#x2F;259376564"><i class="ic i-douban"></i></span> <span class="exturl item music" data-url="aHR0cHM6Ly9tdXNpYy4xNjMuY29tLyMvdXNlci9ob21lP2lkPTEwNTQ2NzQ2Mw==" title="https:&#x2F;&#x2F;music.163.com&#x2F;#&#x2F;user&#x2F;home?id&#x3D;105467463"><i class="ic i-cloud-music"></i></span> <a href="/about/me" title="about&#x2F;me" class="item about"><i class="ic i-address-card"></i></a></div><ul class="menu"><li class="item"><a href="/" rel="section"><i class="ic i-home"></i>首页</a></li><li class="item"><a href="/about/me" rel="section"><i class="ic i-user"></i>关于</a></li><li class="item dropdown"><a href="javascript:void(0);"><i class="ic i-feather"></i>文章</a><ul class="submenu"><li class="item"><a href="/archives/" rel="section"><i class="ic i-list-alt"></i>归档</a></li><li class="item"><a href="/categories/" rel="section"><i class="ic i-th"></i>分类</a></li><li class="item"><a href="/tags/" rel="section"><i class="ic i-tags"></i>标签</a></li></ul></li><li class="item"><span class="exturl" data-url="aHR0cHM6Ly93d3cuZm9yZXZlcmJsb2cuY24vZ28uaHRtbA=="><i class="ic i-paper-plane"></i>虫洞</span></li></ul></div></div></div><ul id="quick"><li class="prev pjax"><a href="/2022/09/23/%E8%A7%A3%E5%86%B3%E5%9F%9F%E5%90%8Dip%E5%8F%98%E5%8A%A8%E5%90%8E%E9%9C%80%E8%A6%81%E9%87%8D%E5%90%AFnginx%E7%9A%84%E9%97%AE%E9%A2%98/" rel="prev" title="上一篇"><i class="ic i-chevron-left"></i></a></li><li class="up"><i class="ic i-arrow-up"></i></li><li class="down"><i class="ic i-arrow-down"></i></li><li class="next pjax"><a href="/2022/09/27/nginx%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E9%85%8D%E7%BD%AE/" rel="next" title="下一篇"><i class="ic i-chevron-right"></i></a></li><li class="percent"></li></ul></div></div><div class="dimmer"></div></div></main><footer id="footer"><div class="inner"><div class="widgets"><div class="rpost pjax"><h2>随机文章</h2><ul><li class="item"><div class="breadcrumb"><a href="/categories/Linux/" title="分类于 Linux">Linux</a> <i class="ic i-angle-right"></i> <a href="/categories/Linux/%E6%9C%8D%E5%8A%A1/" title="分类于 服务">服务</a> <i class="ic i-angle-right"></i> <a href="/categories/Linux/%E6%9C%8D%E5%8A%A1/Nginx/" title="分类于 Nginx">Nginx</a></div><span><a href="/2022/10/06/Nginx%E9%85%8D%E7%BD%AEiframe%E8%AE%BF%E9%97%AE/" title="Nginx配置iframe访问">Nginx配置iframe访问</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/Windows/" title="分类于 Windows">Windows</a> <i class="ic i-angle-right"></i> <a href="/categories/Windows/%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98/" title="分类于 解决问题">解决问题</a></div><span><a href="/2022/12/05/Win10%E5%BD%BB%E5%BA%95%E5%85%B3%E9%97%ADwsappx%E8%BF%9B%E7%A8%8B/" title="Win10彻底关闭wsappx进程">Win10彻底关闭wsappx进程</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/Linux/" title="分类于 Linux">Linux</a> <i class="ic i-angle-right"></i> <a href="/categories/Linux/%E6%9C%8D%E5%8A%A1/" title="分类于 服务">服务</a></div><span><a href="/2022/10/18/%E6%90%AD%E5%BB%BAnagios%E7%9B%91%E6%8E%A7/" title="搭建nagios监控">搭建nagios监控</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/%E6%9E%81%E7%A9%BA%E9%97%B4/" title="分类于 极空间">极空间</a> <i class="ic i-angle-right"></i> <a href="/categories/%E6%9E%81%E7%A9%BA%E9%97%B4/Docker/" title="分类于 Docker">Docker</a></div><span><a href="/2022/09/16/%E6%9E%81%E7%A9%BA%E9%97%B4chevereto%E5%9B%BE%E5%BA%8Adocker%E7%89%88%E5%AE%89%E8%A3%85/" title="极空间chevereto图床docker版安装">极空间chevereto图床docker版安装</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/%E6%9E%81%E7%A9%BA%E9%97%B4/" title="分类于 极空间">极空间</a> <i class="ic i-angle-right"></i> <a href="/categories/%E6%9E%81%E7%A9%BA%E9%97%B4/Docker/" title="分类于 Docker">Docker</a> <i class="ic i-angle-right"></i> <a href="/categories/%E6%9E%81%E7%A9%BA%E9%97%B4/Docker/Hexo/" title="分类于 Hexo">Hexo</a></div><span><a href="/2022/09/17/Hexo-Theme-Shoka-algolia%E6%90%9C%E7%B4%A2%E8%B8%A9%E5%9D%91/" title="Hexo + Theme.Shoka + algolia搜索踩坑">Hexo + Theme.Shoka + algolia搜索踩坑</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/%E5%B7%A5%E4%BD%9C/" title="分类于 工作">工作</a> <i class="ic i-angle-right"></i> <a href="/categories/%E5%B7%A5%E4%BD%9C/%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98/" title="分类于 解决问题">解决问题</a> <i class="ic i-angle-right"></i> <a href="/categories/%E5%B7%A5%E4%BD%9C/%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98/KLineChart/" title="分类于 KLineChart">KLineChart</a></div><span><a href="/2022/11/24/KLineChart%E5%AE%9E%E7%8E%B0%E4%B8%80%E5%B9%85%E5%9B%BE%E4%B8%8A%E7%94%BB%E5%A4%9A%E4%B8%AA%E8%9C%A1%E7%83%9BK%E7%BA%BF/" title="KLineChart实现一幅图上画多个蜡烛K线">KLineChart实现一幅图上画多个蜡烛K线</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/Linux/" title="分类于 Linux">Linux</a> <i class="ic i-angle-right"></i> <a href="/categories/Linux/Shell/" title="分类于 Shell">Shell</a></div><span><a href="/2022/11/02/2-dev-null%E5%92%8C-dev-null-2-1%E5%92%8C2-1-dev-null%E7%9A%84%E5%8C%BA%E5%88%AB/" title="2&gt;&#x2F;dev&#x2F;null和&gt;&#x2F;dev&#x2F;null 2&gt;&amp;1和2&gt;&amp;1&gt;&#x2F;dev&#x2F;null的区别">2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null的区别</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/%E7%94%9F%E6%B4%BB/" title="分类于 生活">生活</a> <i class="ic i-angle-right"></i> <a href="/categories/%E7%94%9F%E6%B4%BB/%E5%BF%83%E5%BE%97%E4%BD%93%E4%BC%9A/" title="分类于 心得体会">心得体会</a></div><span><a href="/2022/09/21/%E8%AE%B0%E4%B8%80%E6%AC%A1netty-socket-io%E6%9C%8D%E5%8A%A1%E7%AB%AF%E8%BF%9E%E6%8E%A5%E4%B8%8D%E4%B8%8A%E7%9A%84%E9%97%AE%E9%A2%98/" title="记一次netty-socketio服务端连接不上的问题">记一次netty-socketio服务端连接不上的问题</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/Windows/" title="分类于 Windows">Windows</a> <i class="ic i-angle-right"></i> <a href="/categories/Windows/%E5%B7%A5%E5%85%B7/" title="分类于 工具">工具</a></div><span><a href="/2022/10/12/%E4%BD%BF%E7%94%A8picgo%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87%E5%88%B0chevereto/" title="使用PicGo上传图片到chevereto">使用PicGo上传图片到chevereto</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/Windows/" title="分类于 Windows">Windows</a> <i class="ic i-angle-right"></i> <a href="/categories/Windows/%E5%B7%A5%E5%85%B7/" title="分类于 工具">工具</a></div><span><a href="/2022/10/11/svn%E5%BA%93%E8%BD%ACgit%E5%BA%93/" title="svn库转git库">svn库转git库</a></span></li></ul></div><div><h2>最新评论</h2><ul class="leancloud-recent-comment"></ul></div></div><div class="status"><div class="copyright">&copy; 2010 <span itemprop="copyrightYear">2023</span> <span class="with-love"><i class="ic i-sakura rotate"></i> </span><span class="author" itemprop="copyrightHolder">Hito Li @ ☆∵∴Hito∴∵★</span></div><div class="count"><span class="post-meta-item-icon"><i class="ic i-chart-area"></i> </span><span title="站点总字数">72k 字</span> <span class="post-meta-divider">|</span> <span class="post-meta-item-icon"><i class="ic i-coffee"></i> </span><span title="站点阅读时长">1:06</span></div><div class="powered-by">基于 <span class="exturl" data-url="aHR0cHM6Ly9oZXhvLmlv">Hexo</span> & Theme.<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2FtZWhpbWUvaGV4by10aGVtZS1zaG9rYQ==">Shoka</span></div></div></div></footer></div><script data-config type="text/javascript">var LOCAL={path:"2022/09/26/解决Hexo-Shoka背景音乐无法播放的问题/",favicon:{show:"´3哎呀呀",hide:"(´Д`)真糟糕!"},search:{placeholder:"文章搜索",empty:"关于 「 ${query} 」,什么也没搜到",stats:"${time} ms 内找到 ${hits} 条结果"},valine:!0,fancybox:!0,copyright:'复制成功,转载请遵守 <i class="ic i-creative-commons"></i>BY-NC-SA 协议。',ignores:[function(e){return e.includes("#")},function(e){return new RegExp(LOCAL.path+"$").test(e)}]}</script><script src="https://cdn.polyfill.io/v2/polyfill.js"></script><script src="//cdn.jsdelivr.net/combine/npm/pace-js@1.0.2/pace.min.js,npm/pjax@0.2.8/pjax.min.js,npm/whatwg-fetch@3.4.0/dist/fetch.umd.min.js,npm/animejs@3.2.0/lib/anime.min.js,npm/algoliasearch@4/dist/algoliasearch-lite.umd.js,npm/instantsearch.js@4/dist/instantsearch.production.min.js,npm/lozad@1/dist/lozad.min.js,npm/quicklink@2/dist/quicklink.umd.js"></script><script src="/js/app.js?v=0.0.0"></script></body></html>