<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Martian's ideas]]></title>
  <link href="http://blog.4321.la/atom.xml" rel="self"/>
  <link href="http://blog.4321.la/"/>
  <updated>2012-02-27T23:17:40+08:00</updated>
  <id>http://blog.4321.la/</id>
  <author>
    <name><![CDATA[Martian Z]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[[原创]使用SAE和Automator在Mac OS X上创建截图并自动上传的小应用]]></title>
    <link href="http://blog.4321.la/articles/2012/02/12/use-sae-to-setup-uploading-system/"/>
    <updated>2012-02-12T17:25:00+08:00</updated>
    <id>http://blog.4321.la/articles/2012/02/12/use-sae-to-setup-uploading-system</id>
    <content type="html"><![CDATA[<p>先说点题外话……</p>

<p>大家都知道有一个很好用的IM，叫腾讯QQ……</p>

<p>没错，这东西确实是好用，至少在Windows和Mac OS X下很好用，在各个主流手机平台上也不错，唯独在Linux下比较可悲，官方的解决方案就是让我们用那个为了技术而技术、为了平台而平台的臃肿的WebQQ，当然也有第三方的一些开源项目，来分析QQ的协议实现客户端，但是总归腾讯QQ的协议是封闭的，实际效果也难尽如人意。</p>

<p>跟妹子们聊天用QQ足矣，我Mac党表示很舒坦，但是跟各位Linuxer技术宅聊天就蛋疼了，只能用其他的IM，比如Google Talk或者Skype。</p>

<p>这些IM虽然有在Linux下提供客户端，但是实在是让人郁闷的要死，最憋人的就是不能随时发送图片。之前我是通过Cloud、YunIO这些应用解决，但是还是觉得不够舒服，而且Cloud的服务器还被墙了，别人看图片也不方便。</p>

<p>于是，我就敲了几行代码来解决这个问题，采用Sina App Engine搭建服务端，本地采用Automator，如果你是Linux系统，也可以写一个很小的bash脚本解决。</p>

<!-- more -->


<p>第一步：从Sina App Engine上新建一个项目，然后从项目的管理里面启用Storage服务，新建一个domain，我这里给domain命名叫h，然后关闭domain的防盗链。具体操作不再赘述。</p>

<p>第二步：将下面的php代码部署上去：</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="cp">&lt;?php</span>
</span><span class='line'>
</span><span class='line'><span class="k">function</span> <span class="nf">extend</span><span class="p">(</span><span class="nv">$file_name</span><span class="p">)</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'><span class="nv">$extend</span> <span class="o">=</span> <span class="nb">pathinfo</span><span class="p">(</span><span class="nv">$file_name</span><span class="p">);</span>
</span><span class='line'><span class="nv">$extend</span> <span class="o">=</span> <span class="nb">strtolower</span><span class="p">(</span><span class="nv">$extend</span><span class="p">[</span><span class="s2">&quot;extension&quot;</span><span class="p">]);</span>
</span><span class='line'><span class="k">return</span> <span class="nv">$extend</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="nv">$target_path</span> <span class="o">=</span> <span class="nx">SAE_TMP_PATH</span><span class="p">;</span>
</span><span class='line'><span class="nv">$basename</span> <span class="o">=</span> <span class="nb">basename</span><span class="p">(</span> <span class="nv">$_FILES</span><span class="p">[</span><span class="s1">&#39;file&#39;</span><span class="p">][</span><span class="s1">&#39;name&#39;</span><span class="p">]);</span>
</span><span class='line'><span class="nv">$domain</span> <span class="o">=</span> <span class="s1">&#39;h&#39;</span><span class="p">;</span>
</span><span class='line'><span class="nv">$uuid</span> <span class="o">=</span> <span class="nb">md5</span><span class="p">(</span><span class="nb">uniqid</span><span class="p">(</span><span class="nb">rand</span><span class="p">(),</span> <span class="k">true</span><span class="p">));</span>
</span><span class='line'><span class="nv">$target_path</span> <span class="o">=</span> <span class="nv">$target_path</span><span class="o">.</span><span class="nv">$uuid</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'><span class="k">if</span><span class="p">(</span><span class="nb">move_uploaded_file</span><span class="p">(</span><span class="nv">$_FILES</span><span class="p">[</span><span class="s1">&#39;file&#39;</span><span class="p">][</span><span class="s1">&#39;tmp_name&#39;</span><span class="p">],</span> <span class="nv">$target_path</span><span class="p">))</span> <span class="p">{</span>
</span><span class='line'><span class="p">}</span> <span class="k">else</span><span class="p">{</span>
</span><span class='line'>    <span class="k">echo</span> <span class="s2">&quot;There was an error uploading the file, please try again!</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="cm">/*$file_contents = file_get_contents($target_path);</span>
</span><span class='line'><span class="cm">$s = new SaeStorage();</span>
</span><span class='line'><span class="cm">$filename=$uuid.$basename;</span>
</span><span class='line'><span class="cm">$s-&gt;write($domain, $filename ,$file_contents);</span>
</span><span class='line'><span class="cm">$url=$s-&gt;getUrl($domain, $filename);*/</span>
</span><span class='line'>
</span><span class='line'><span class="nv">$s</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">SaeStorage</span><span class="p">();</span>
</span><span class='line'>
</span><span class='line'><span class="k">echo</span> <span class="nv">$s</span><span class="o">-&gt;</span><span class="na">upload</span><span class="p">(</span><span class="nv">$domain</span><span class="p">,</span> <span class="nv">$uuid</span><span class="o">.</span><span class="s2">&quot;.&quot;</span><span class="o">.</span><span class="nx">extend</span><span class="p">(</span><span class="nv">$basename</span><span class="p">),</span><span class="nv">$target_path</span><span class="p">)</span><span class="o">.</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>
</span><span class='line'><span class="c1">//echo $url;</span>
</span><span class='line'>
</span><span class='line'><span class="cp">?&gt;</span><span class="x"></span>
</span></code></pre></td></tr></table></div></figure>


<p>php代码很简单，就是接受post请求然后把文件保存到Storage里面，之后输出文件的访问地址</p>

<p>第三步：从终端里面测试</p>

<p>使用curl命令我们来上传一个图片试试：</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>curl http://项目地址.sinaapp.com/php.php -F file="@1.jpg"</span></code></pre></td></tr></table></div></figure>


<p>其中1.jpg是当前目录下面的一张图片</p>

<p>如果没有错误的话就可以看到终端里面输出了上传后的文件地址：</p>

<p><img src="http://i.imgur.com/8Nx42.png" alt="img" /></p>

<p>第四步：建立新的Automator应用程序项目，如图所示：</p>

<p>其中两个Growl Notification分别提示开始上传和上传结束。</p>

<p><img src="http://i.imgur.com/mDGbI.png" alt="automator" /></p>

<p>之后将Automator项目保存即可，放到Dock上，以后可以随时运行截图然后自动上传。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[[原创]MatriTunes 自动整理填充iTunes歌曲专辑图片、歌词辅助工具]]></title>
    <link href="http://blog.4321.la/articles/2012/02/02/matritunes/"/>
    <updated>2012-02-02T15:08:00+08:00</updated>
    <id>http://blog.4321.la/articles/2012/02/02/matritunes</id>
    <content type="html"><![CDATA[<p>今天早上有一位朋友给我发评论，晓之以理动之以情，说MXiTunes这款软件不能用了什么什么什么，我的MusicSorter不好用什么什么（我承认那是个败笔之作，我投入了大量精力在界面设计上，导致软件的功能欠缺太多）。</p>

<p>于是我就去看了一下MXiTunes是什么东西，原来是一款Windows下的整理iTunes列表的软件，很不错的样子。不过原作者的官方网站打不开，经过检查是因为cn域名被暂停解析的缘故（让你用cn域名，你不找事吗？！），而且在我的英文版Windows 7 64Bit上也死活无法打开……</p>

<p>然后我就又去敲代码了，三个小时搞定了这款软件——MatriTunes。</p>

<!-- more -->


<p><img src="http://i.imgur.com/KjbTV.png" alt="MatriTunes" /></p>

<h3>软件介绍、使用说明：</h3>

<ol>
<li><p>因为时间紧张，采用.Net Framework 2.0开发，如果你的系统古老到连这个框架也没安装……我实在是无语……（Windows 7自带）</p></li>
<li><p>支持自动歌曲搜索</p></li>
<li><p>支持批量获取歌词、专辑图片，支持手动设置专辑图片</p></li>
<li><p>批量搜索效果与您当前的MetaData关系很大，如果批量搜索效果不佳推荐您一个一个慢慢来</p></li>
<li><p>软件开发仓促，有任何问题请给我发Mail或者从这个post下面留言</p></li>
<li><p>我实在是懒得开多线程了，所以批量下载的时候尽量一次不要选择太多歌曲，同时软件工作时不要乱去戳它=。=</p></li>
<li><p>尽量把DNS改成本地的DNS，不然豆瓣下载专辑图片速度会很慢</p></li>
<li><p>修改软件版权、加木马二次发布者自重，问候你们全家</p></li>
</ol>


<h3>下载地址：</h3>

<p>115网盘下载：<a href="http://115.com/file/c2bcyhk9#MatriTunes.zip">http://115.com/file/c2bcyhk9#MatriTunes.zip</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[[Mac][原创]使用AppleScript来自动获取填充iTunes歌曲歌词]]></title>
    <link href="http://blog.4321.la/articles/2012/01/27/use-applescript-to-set-itunes-lyrics/"/>
    <updated>2012-01-27T19:31:00+08:00</updated>
    <id>http://blog.4321.la/articles/2012/01/27/use-applescript-to-set-itunes-lyrics</id>
    <content type="html"><![CDATA[<p>Martian真的是懒死了⋯⋯Martian既不想开搜索引擎搜歌词，也不想开那内存吃货Xcode来帮忙⋯⋯</p>

<p>于是我就用PHP和AppleScript写了一个小脚本来实现自动获取iTunes的歌曲歌词～</p>

<!-- more -->


<p>脚本源代码：</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
<span class='line-number'>42</span>
<span class='line-number'>43</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>--AppleScript By Martian
</span><span class='line'>--Ver 1.1
</span><span class='line'>--http://blog.4321.la
</span><span class='line'>--https://plus.google.com/100204491389909955903/
</span><span class='line'>--http://twitter.com/martian_zhu
</span><span class='line'>--http://about.me/martian_z
</span><span class='line'>
</span><span class='line'>property myProgram : "4321.La"
</span><span class='line'>property baseURL : "http://lyrics.sinaapp.com/"
</span><span class='line'>
</span><span class='line'>--因为我实在是不想操心AppleScript的语法，所以一部分代码采用PHP编写
</span><span class='line'>--为了获得最好的整理效果，PHP脚本挂在SAE上面，大陆用户的访问速度应该非常不错
</span><span class='line'>--但是SAE的价格是按照请求次数计费，实在是不便宜，如果您能自己架设PHP服务器并且提供分流服务，我会非常感激！
</span><span class='line'>--PHP源代码可以见我的博客帖子，里面有说明
</span><span class='line'>
</span><span class='line'>--使用说明：
</span><span class='line'>--1、打开iTunes，选择要添加歌词的歌曲，可以批量选择
</span><span class='line'>--2、点击脚本上的“运行”即可，整理结束时iTunes会有提示
</span><span class='line'>--3、虽然脚本支持批量整理，但是程序自动化整理永远不可能那么智能，不能保证歌曲歌词全部正确，可能需要您后期再次加工
</span><span class='line'>--4、如果您的歌曲中含有繁体汉字，程序无法自动搜索歌词，这会在后续版本中修正
</span><span class='line'>
</span><span class='line'>tell application "iTunes"
</span><span class='line'>  if selection is not {} then
</span><span class='line'>      set k to count (item of selection)
</span><span class='line'>  else
</span><span class='line'>      return
</span><span class='line'>  end if
</span><span class='line'>  set i to 1
</span><span class='line'>  repeat
</span><span class='line'>      set theTrack to (item i of selection)
</span><span class='line'>      set this_artist to (get artist of theTrack)
</span><span class='line'>      set this_title to (get name of theTrack)
</span><span class='line'>      
</span><span class='line'>      set requestData to "title=" & this_title & "&artist=" & this_artist
</span><span class='line'>      set songLyrics to do shell script "curl -d '" & requestData & "' " & baseURL
</span><span class='line'>      if length of songLyrics > 1 then
</span><span class='line'>          set lyrics of theTrack to songLyrics
</span><span class='line'>      end if
</span><span class='line'>      set i to i + 1
</span><span class='line'>      if i > k then exit repeat
</span><span class='line'>  end repeat
</span><span class='line'>  display dialog return & "整理结束！" buttons {"确定"} default button 1 with icon 1 giving up after 15 with title myProgram
</span><span class='line'>end tell</span></code></pre></td></tr></table></div></figure>


<h3>使用说明：</h3>

<p>1、打开 应用程序 － 实用工具 － AppleScript编辑器.app</p>

<p>2、将上述代码粘贴进去</p>

<p><strong>3、然后去看脚本里面的说明进一步操作</strong></p>

<p>附录：PHP服务端源代码（只在自己搭建服务端需要）：</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
<span class='line-number'>42</span>
<span class='line-number'>43</span>
<span class='line-number'>44</span>
<span class='line-number'>45</span>
<span class='line-number'>46</span>
<span class='line-number'>47</span>
<span class='line-number'>48</span>
<span class='line-number'>49</span>
<span class='line-number'>50</span>
<span class='line-number'>51</span>
<span class='line-number'>52</span>
<span class='line-number'>53</span>
<span class='line-number'>54</span>
<span class='line-number'>55</span>
<span class='line-number'>56</span>
<span class='line-number'>57</span>
<span class='line-number'>58</span>
<span class='line-number'>59</span>
<span class='line-number'>60</span>
<span class='line-number'>61</span>
<span class='line-number'>62</span>
<span class='line-number'>63</span>
<span class='line-number'>64</span>
<span class='line-number'>65</span>
<span class='line-number'>66</span>
<span class='line-number'>67</span>
<span class='line-number'>68</span>
<span class='line-number'>69</span>
<span class='line-number'>70</span>
<span class='line-number'>71</span>
<span class='line-number'>72</span>
<span class='line-number'>73</span>
<span class='line-number'>74</span>
<span class='line-number'>75</span>
<span class='line-number'>76</span>
<span class='line-number'>77</span>
<span class='line-number'>78</span>
<span class='line-number'>79</span>
<span class='line-number'>80</span>
<span class='line-number'>81</span>
<span class='line-number'>82</span>
<span class='line-number'>83</span>
<span class='line-number'>84</span>
<span class='line-number'>85</span>
<span class='line-number'>86</span>
<span class='line-number'>87</span>
<span class='line-number'>88</span>
<span class='line-number'>89</span>
<span class='line-number'>90</span>
<span class='line-number'>91</span>
<span class='line-number'>92</span>
<span class='line-number'>93</span>
<span class='line-number'>94</span>
<span class='line-number'>95</span>
<span class='line-number'>96</span>
<span class='line-number'>97</span>
<span class='line-number'>98</span>
<span class='line-number'>99</span>
<span class='line-number'>100</span>
<span class='line-number'>101</span>
<span class='line-number'>102</span>
<span class='line-number'>103</span>
<span class='line-number'>104</span>
<span class='line-number'>105</span>
<span class='line-number'>106</span>
<span class='line-number'>107</span>
<span class='line-number'>108</span>
<span class='line-number'>109</span>
<span class='line-number'>110</span>
<span class='line-number'>111</span>
<span class='line-number'>112</span>
<span class='line-number'>113</span>
<span class='line-number'>114</span>
<span class='line-number'>115</span>
<span class='line-number'>116</span>
<span class='line-number'>117</span>
<span class='line-number'>118</span>
<span class='line-number'>119</span>
<span class='line-number'>120</span>
<span class='line-number'>121</span>
<span class='line-number'>122</span>
<span class='line-number'>123</span>
<span class='line-number'>124</span>
<span class='line-number'>125</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="cp">&lt;?</span>
</span><span class='line'>
</span><span class='line'><span class="k">function</span> <span class="nf">SingleDecToHex</span><span class="p">(</span><span class="nv">$dec</span><span class="p">)</span>  <span class="p">{</span>
</span><span class='line'>  <span class="nv">$tmp</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">;</span>
</span><span class='line'>  <span class="nv">$dec</span><span class="o">=</span><span class="nv">$dec</span><span class="o">%</span><span class="mi">16</span><span class="p">;</span>
</span><span class='line'>  <span class="k">if</span><span class="p">(</span><span class="nv">$dec</span><span class="o">&lt;</span><span class="mi">10</span><span class="p">)</span> <span class="k">return</span> <span class="nv">$tmp</span><span class="o">.</span><span class="nv">$dec</span><span class="p">;</span>
</span><span class='line'>  <span class="nv">$arr</span><span class="o">=</span><span class="k">array</span><span class="p">(</span><span class="s2">&quot;A&quot;</span><span class="p">,</span><span class="s2">&quot;B&quot;</span><span class="p">,</span><span class="s2">&quot;C&quot;</span><span class="p">,</span><span class="s2">&quot;D&quot;</span><span class="p">,</span><span class="s2">&quot;E&quot;</span><span class="p">,</span><span class="s2">&quot;F&quot;</span><span class="p">);</span>
</span><span class='line'>  <span class="k">return</span> <span class="nv">$tmp</span><span class="o">.</span><span class="nv">$arr</span><span class="p">[</span><span class="nv">$dec</span><span class="o">-</span><span class="mi">10</span><span class="p">];</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="k">function</span> <span class="nf">SetToHexString</span><span class="p">(</span><span class="nv">$str</span><span class="p">)</span>  <span class="p">{</span>
</span><span class='line'>  <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nv">$str</span><span class="p">)</span> <span class="k">return</span> <span class="k">false</span><span class="p">;</span>
</span><span class='line'>  <span class="nv">$tmp</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">;</span>
</span><span class='line'>  <span class="k">for</span><span class="p">(</span><span class="nv">$i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="nv">$i</span><span class="o">&lt;</span><span class="nb">strlen</span><span class="p">(</span><span class="nv">$str</span><span class="p">);</span><span class="nv">$i</span><span class="o">++</span><span class="p">)</span>
</span><span class='line'>  <span class="p">{</span>
</span><span class='line'>      <span class="nv">$ord</span><span class="o">=</span><span class="nb">ord</span><span class="p">(</span><span class="nv">$str</span><span class="p">[</span><span class="nv">$i</span><span class="p">]);</span>
</span><span class='line'>      <span class="nv">$tmp</span><span class="o">.=</span><span class="nx">SingleDecToHex</span><span class="p">((</span><span class="nv">$ord</span><span class="o">-</span><span class="nv">$ord</span><span class="o">%</span><span class="mi">16</span><span class="p">)</span><span class="o">/</span><span class="mi">16</span><span class="p">);</span>
</span><span class='line'>      <span class="nv">$tmp</span><span class="o">.=</span><span class="nx">SingleDecToHex</span><span class="p">(</span><span class="nv">$ord</span><span class="o">%</span><span class="mi">16</span><span class="p">);</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="k">return</span> <span class="nv">$tmp</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="k">function</span> <span class="nf">qianqian_code</span><span class="p">(</span><span class="nv">$str</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>  <span class="nv">$s</span><span class="o">=</span><span class="nb">strtolower</span><span class="p">(</span><span class="nv">$str</span><span class="p">);</span>
</span><span class='line'>        <span class="nv">$keys</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span><span class="s2">&quot;&#39;&quot;</span><span class="p">,</span><span class="s2">&quot;(&quot;</span><span class="p">,</span><span class="s2">&quot;)&quot;</span><span class="p">,</span><span class="s2">&quot;[&quot;</span><span class="p">,</span><span class="s2">&quot;]&quot;</span><span class="p">,</span><span class="s2">&quot;,&quot;</span><span class="p">,</span><span class="s2">&quot;.&quot;</span><span class="p">,</span><span class="s2">&quot;&#39;&quot;</span><span class="p">,</span><span class="s2">&quot;</span><span class="se">\&quot;</span><span class="s2">&quot;</span><span class="p">,</span><span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="s2">&quot;`&quot;</span><span class="p">,</span> <span class="s2">&quot;~&quot;</span><span class="p">,</span> <span class="s2">&quot;!&quot;</span><span class="p">,</span> <span class="s2">&quot;@&quot;</span><span class="p">,</span> <span class="s2">&quot;#&quot;</span><span class="p">,</span> <span class="s2">&quot;$&quot;</span><span class="p">,</span> <span class="s2">&quot;%&quot;</span><span class="p">,</span> <span class="s2">&quot;^&quot;</span><span class="p">,</span> <span class="s2">&quot;&amp;&quot;</span><span class="p">,</span> <span class="s2">&quot;*&quot;</span><span class="p">,</span> <span class="s2">&quot;(&quot;</span><span class="p">,</span> <span class="s2">&quot;)&quot;</span><span class="p">,</span> <span class="s2">&quot;-&quot;</span><span class="p">,</span> <span class="s2">&quot;_&quot;</span><span class="p">,</span> <span class="s2">&quot;=&quot;</span><span class="p">,</span> <span class="s2">&quot;+&quot;</span><span class="p">,</span> <span class="s2">&quot;,&quot;</span><span class="p">,</span> <span class="s2">&quot;&lt;&quot;</span><span class="p">,</span> <span class="s2">&quot;.&quot;</span><span class="p">,</span> <span class="s2">&quot;&gt;&quot;</span><span class="p">,</span> <span class="s2">&quot;/&quot;</span><span class="p">,</span> <span class="s2">&quot;?&quot;</span><span class="p">,</span> <span class="s2">&quot;;&quot;</span><span class="p">,</span> <span class="s2">&quot;:&quot;</span><span class="p">,</span> <span class="s2">&quot;</span><span class="se">\&quot;</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s2">&quot;[&quot;</span><span class="p">,</span> <span class="s2">&quot;{&quot;</span><span class="p">,</span> <span class="s2">&quot;]&quot;</span><span class="p">,</span> <span class="s2">&quot;}&quot;</span><span class="p">,</span> <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s2">&quot;|&quot;</span><span class="p">,</span> <span class="s2">&quot;€&quot;</span><span class="p">,</span><span class="s2">&quot;　&quot;</span><span class="p">,</span> <span class="s2">&quot;。&quot;</span><span class="p">,</span> <span class="s2">&quot;，&quot;</span><span class="p">,</span> <span class="s2">&quot;、&quot;</span><span class="p">,</span> <span class="s2">&quot;；&quot;</span><span class="p">,</span> <span class="s2">&quot;：&quot;</span><span class="p">,</span> <span class="s2">&quot;？&quot;</span><span class="p">,</span> <span class="s2">&quot;！&quot;</span><span class="p">,</span> <span class="s2">&quot;…&quot;</span><span class="p">,</span> <span class="s2">&quot;—&quot;</span><span class="p">,</span> <span class="s2">&quot;·&quot;</span><span class="p">,</span><span class="s2">&quot;ˉ&quot;</span><span class="p">,</span> <span class="s2">&quot;¨&quot;</span><span class="p">,</span> <span class="s2">&quot;‘&quot;</span><span class="p">,</span> <span class="s2">&quot;’&quot;</span><span class="p">,</span> <span class="s2">&quot;“&quot;</span><span class="p">,</span> <span class="s2">&quot;”&quot;</span><span class="p">,</span> <span class="s2">&quot;々&quot;</span><span class="p">,</span> <span class="s2">&quot;～&quot;</span><span class="p">,</span> <span class="s2">&quot;‖&quot;</span><span class="p">,</span> <span class="s2">&quot;∶&quot;</span><span class="p">,</span> <span class="s2">&quot;＂&quot;</span><span class="p">,</span> <span class="s2">&quot;＇&quot;</span><span class="p">,</span><span class="s2">&quot;｀&quot;</span><span class="p">,</span> <span class="s2">&quot;｜&quot;</span><span class="p">,</span> <span class="s2">&quot;〃&quot;</span><span class="p">,</span> <span class="s2">&quot;〔&quot;</span><span class="p">,</span> <span class="s2">&quot;〕&quot;</span><span class="p">,</span> <span class="s2">&quot;〈&quot;</span><span class="p">,</span> <span class="s2">&quot;〉&quot;</span><span class="p">,</span> <span class="s2">&quot;《&quot;</span><span class="p">,</span> <span class="s2">&quot;》&quot;</span><span class="p">,</span> <span class="s2">&quot;「&quot;</span><span class="p">,</span> <span class="s2">&quot;」&quot;</span><span class="p">,</span> <span class="s2">&quot;『&quot;</span><span class="p">,</span> <span class="s2">&quot;』&quot;</span><span class="p">,</span> <span class="s2">&quot;．&quot;</span><span class="p">,</span> <span class="s2">&quot;〖&quot;</span><span class="p">,</span> <span class="s2">&quot;〗&quot;</span><span class="p">,</span> <span class="s2">&quot;【&quot;</span><span class="p">,</span> <span class="s2">&quot;】&quot;</span><span class="p">,</span> <span class="s2">&quot;（&quot;</span><span class="p">,</span> <span class="s2">&quot;）&quot;</span><span class="p">,</span> <span class="s2">&quot;［&quot;</span><span class="p">,</span> <span class="s2">&quot;］&quot;</span><span class="p">,</span><span class="s2">&quot;｛&quot;</span><span class="p">,</span> <span class="s2">&quot;｝&quot;</span><span class="p">,</span> <span class="s2">&quot;≈&quot;</span><span class="p">,</span> <span class="s2">&quot;≡&quot;</span><span class="p">,</span> <span class="s2">&quot;≠&quot;</span><span class="p">,</span> <span class="s2">&quot;＝&quot;</span><span class="p">,</span> <span class="s2">&quot;≤&quot;</span><span class="p">,</span> <span class="s2">&quot;≥&quot;</span><span class="p">,</span> <span class="s2">&quot;＜&quot;</span><span class="p">,</span> <span class="s2">&quot;＞&quot;</span><span class="p">,</span> <span class="s2">&quot;≮&quot;</span><span class="p">,</span> <span class="s2">&quot;≯&quot;</span><span class="p">,</span> <span class="s2">&quot;∷&quot;</span><span class="p">,</span> <span class="s2">&quot;±&quot;</span><span class="p">,</span><span class="s2">&quot;＋&quot;</span><span class="p">,</span> <span class="s2">&quot;－&quot;</span><span class="p">,</span> <span class="s2">&quot;×&quot;</span><span class="p">,</span> <span class="s2">&quot;÷&quot;</span><span class="p">,</span> <span class="s2">&quot;／&quot;</span><span class="p">,</span> <span class="s2">&quot;∫&quot;</span><span class="p">,</span> <span class="s2">&quot;∮&quot;</span><span class="p">,</span> <span class="s2">&quot;∝&quot;</span><span class="p">,</span> <span class="s2">&quot;∞&quot;</span><span class="p">,</span> <span class="s2">&quot;∧&quot;</span><span class="p">,</span> <span class="s2">&quot;∨&quot;</span><span class="p">,</span> <span class="s2">&quot;∑&quot;</span><span class="p">,</span> <span class="s2">&quot;∏&quot;</span><span class="p">,</span> <span class="s2">&quot;∪&quot;</span><span class="p">,</span><span class="s2">&quot;∩&quot;</span><span class="p">,</span> <span class="s2">&quot;∈&quot;</span><span class="p">,</span> <span class="s2">&quot;∵&quot;</span><span class="p">,</span> <span class="s2">&quot;∴&quot;</span><span class="p">,</span> <span class="s2">&quot;⊥&quot;</span><span class="p">,</span> <span class="s2">&quot;∥&quot;</span><span class="p">,</span> <span class="s2">&quot;∠&quot;</span><span class="p">,</span> <span class="s2">&quot;⌒&quot;</span><span class="p">,</span> <span class="s2">&quot;⊙&quot;</span><span class="p">,</span> <span class="s2">&quot;≌&quot;</span><span class="p">,</span> <span class="s2">&quot;∽&quot;</span><span class="p">,</span> <span class="s2">&quot;√&quot;</span><span class="p">,</span> <span class="s2">&quot;§&quot;</span><span class="p">,</span> <span class="s2">&quot;№&quot;</span><span class="p">,</span><span class="s2">&quot;☆&quot;</span><span class="p">,</span> <span class="s2">&quot;★&quot;</span><span class="p">,</span> <span class="s2">&quot;○&quot;</span><span class="p">,</span> <span class="s2">&quot;●&quot;</span><span class="p">,</span> <span class="s2">&quot;◎&quot;</span><span class="p">,</span> <span class="s2">&quot;◇&quot;</span><span class="p">,</span> <span class="s2">&quot;◆&quot;</span><span class="p">,</span> <span class="s2">&quot;□&quot;</span><span class="p">,</span> <span class="s2">&quot;℃&quot;</span><span class="p">,</span> <span class="s2">&quot;‰&quot;</span><span class="p">,</span> <span class="s2">&quot;■&quot;</span><span class="p">,</span> <span class="s2">&quot;△&quot;</span><span class="p">,</span> <span class="s2">&quot;▲&quot;</span><span class="p">,</span> <span class="s2">&quot;※&quot;</span><span class="p">,</span> <span class="s2">&quot;→&quot;</span><span class="p">,</span><span class="s2">&quot;←&quot;</span><span class="p">,</span> <span class="s2">&quot;↑&quot;</span><span class="p">,</span> <span class="s2">&quot;↓&quot;</span><span class="p">,</span> <span class="s2">&quot;〓&quot;</span><span class="p">,</span> <span class="s2">&quot;¤&quot;</span><span class="p">,</span> <span class="s2">&quot;°&quot;</span><span class="p">,</span> <span class="s2">&quot;＃&quot;</span><span class="p">,</span> <span class="s2">&quot;＆&quot;</span><span class="p">,</span> <span class="s2">&quot;＠&quot;</span><span class="p">,</span> <span class="s2">&quot;＼&quot;</span><span class="p">,</span> <span class="s2">&quot;︿&quot;</span><span class="p">,</span> <span class="s2">&quot;＿&quot;</span><span class="p">,</span> <span class="s2">&quot;￣&quot;</span><span class="p">,</span> <span class="s2">&quot;―&quot;</span><span class="p">,</span><span class="s2">&quot;♂&quot;</span><span class="p">,</span> <span class="s2">&quot;♀&quot;</span><span class="p">,</span> <span class="s2">&quot;Ⅰ&quot;</span><span class="p">,</span> <span class="s2">&quot;Ⅱ&quot;</span><span class="p">,</span> <span class="s2">&quot;Ⅲ&quot;</span><span class="p">,</span> <span class="s2">&quot;Ⅳ&quot;</span><span class="p">,</span> <span class="s2">&quot;Ⅴ&quot;</span><span class="p">,</span> <span class="s2">&quot;Ⅵ&quot;</span><span class="p">,</span> <span class="s2">&quot;Ⅶ&quot;</span><span class="p">,</span> <span class="s2">&quot;Ⅷ&quot;</span><span class="p">,</span> <span class="s2">&quot;Ⅸ&quot;</span><span class="p">,</span> <span class="s2">&quot;Ⅹ&quot;</span><span class="p">,</span> <span class="s2">&quot;Ⅺ&quot;</span><span class="p">,</span><span class="s2">&quot;Ⅻ&quot;</span><span class="p">,</span> <span class="s2">&quot;⒈&quot;</span><span class="p">,</span> <span class="s2">&quot;⒉&quot;</span><span class="p">,</span> <span class="s2">&quot;⒊&quot;</span><span class="p">,</span> <span class="s2">&quot;⒋&quot;</span><span class="p">,</span> <span class="s2">&quot;⒌&quot;</span><span class="p">,</span> <span class="s2">&quot;⒍&quot;</span><span class="p">,</span> <span class="s2">&quot;⒎&quot;</span><span class="p">,</span> <span class="s2">&quot;⒏&quot;</span><span class="p">,</span> <span class="s2">&quot;⒐&quot;</span><span class="p">,</span> <span class="s2">&quot;⒑&quot;</span><span class="p">,</span> <span class="s2">&quot;⒒&quot;</span><span class="p">,</span> <span class="s2">&quot;⒓&quot;</span><span class="p">,</span><span class="s2">&quot;⒔&quot;</span><span class="p">,</span> <span class="s2">&quot;⒕&quot;</span><span class="p">,</span> <span class="s2">&quot;⒖&quot;</span><span class="p">,</span> <span class="s2">&quot;⒗&quot;</span><span class="p">,</span> <span class="s2">&quot;⒘&quot;</span><span class="p">,</span> <span class="s2">&quot;⒙&quot;</span><span class="p">,</span> <span class="s2">&quot;⒚&quot;</span><span class="p">,</span> <span class="s2">&quot;⒛&quot;</span><span class="p">,</span> <span class="s2">&quot;㈠&quot;</span><span class="p">,</span> <span class="s2">&quot;㈡&quot;</span><span class="p">,</span> <span class="s2">&quot;㈢&quot;</span><span class="p">,</span> <span class="s2">&quot;㈣&quot;</span><span class="p">,</span> <span class="s2">&quot;㈤&quot;</span><span class="p">,</span><span class="s2">&quot;㈥&quot;</span><span class="p">,</span> <span class="s2">&quot;㈦&quot;</span><span class="p">,</span> <span class="s2">&quot;㈧&quot;</span><span class="p">,</span> <span class="s2">&quot;㈨&quot;</span><span class="p">,</span> <span class="s2">&quot;㈩&quot;</span><span class="p">,</span> <span class="s2">&quot;①&quot;</span><span class="p">,</span> <span class="s2">&quot;②&quot;</span><span class="p">,</span> <span class="s2">&quot;③&quot;</span><span class="p">,</span> <span class="s2">&quot;④&quot;</span><span class="p">,</span> <span class="s2">&quot;⑤&quot;</span><span class="p">,</span> <span class="s2">&quot;⑥&quot;</span><span class="p">,</span> <span class="s2">&quot;⑦&quot;</span><span class="p">,</span> <span class="s2">&quot;⑧&quot;</span><span class="p">,</span> <span class="s2">&quot;⑨&quot;</span><span class="p">,</span> <span class="s2">&quot;⑩&quot;</span><span class="p">,</span><span class="s2">&quot;⑴&quot;</span><span class="p">,</span> <span class="s2">&quot;⑵&quot;</span><span class="p">,</span> <span class="s2">&quot;⑶&quot;</span><span class="p">,</span> <span class="s2">&quot;⑷&quot;</span><span class="p">,</span> <span class="s2">&quot;⑸&quot;</span><span class="p">,</span> <span class="s2">&quot;⑹&quot;</span><span class="p">,</span> <span class="s2">&quot;⑺&quot;</span><span class="p">,</span> <span class="s2">&quot;⑻&quot;</span><span class="p">,</span> <span class="s2">&quot;⑼&quot;</span><span class="p">,</span> <span class="s2">&quot;⑽&quot;</span><span class="p">,</span> <span class="s2">&quot;⑾&quot;</span><span class="p">,</span> <span class="s2">&quot;⑿&quot;</span><span class="p">,</span> <span class="s2">&quot;⒀&quot;</span><span class="p">,</span><span class="s2">&quot;⒁&quot;</span><span class="p">,</span> <span class="s2">&quot;⒂&quot;</span><span class="p">,</span> <span class="s2">&quot;⒃&quot;</span><span class="p">,</span> <span class="s2">&quot;⒄&quot;</span><span class="p">,</span> <span class="s2">&quot;⒅&quot;</span><span class="p">,</span> <span class="s2">&quot;⒆&quot;</span><span class="p">,</span> <span class="s2">&quot;⒇&quot;</span><span class="p">,</span> <span class="s2">&quot;┌&quot;</span><span class="p">,</span> <span class="s2">&quot;┍&quot;</span><span class="p">,</span> <span class="s2">&quot;┎&quot;</span><span class="p">,</span> <span class="s2">&quot;┏&quot;</span><span class="p">,</span> <span class="s2">&quot;┐&quot;</span><span class="p">,</span> <span class="s2">&quot;┑&quot;</span><span class="p">,</span> <span class="s2">&quot;┒&quot;</span><span class="p">,</span><span class="s2">&quot;┓&quot;</span><span class="p">,</span> <span class="s2">&quot;─&quot;</span><span class="p">,</span> <span class="s2">&quot;┄&quot;</span><span class="p">,</span> <span class="s2">&quot;┈&quot;</span><span class="p">,</span> <span class="s2">&quot;└&quot;</span><span class="p">,</span> <span class="s2">&quot;┕&quot;</span><span class="p">,</span> <span class="s2">&quot;┖&quot;</span><span class="p">,</span> <span class="s2">&quot;┗&quot;</span><span class="p">,</span> <span class="s2">&quot;┘&quot;</span><span class="p">,</span> <span class="s2">&quot;┙&quot;</span><span class="p">,</span> <span class="s2">&quot;┚&quot;</span><span class="p">,</span> <span class="s2">&quot;┛&quot;</span><span class="p">,</span> <span class="s2">&quot;━&quot;</span><span class="p">,</span> <span class="s2">&quot;┅&quot;</span><span class="p">,</span> <span class="s2">&quot;┉&quot;</span><span class="p">,</span><span class="s2">&quot;├&quot;</span><span class="p">,</span> <span class="s2">&quot;┝&quot;</span><span class="p">,</span> <span class="s2">&quot;┞&quot;</span><span class="p">,</span> <span class="s2">&quot;┟&quot;</span><span class="p">,</span> <span class="s2">&quot;┠&quot;</span><span class="p">,</span> <span class="s2">&quot;┡&quot;</span><span class="p">,</span> <span class="s2">&quot;┢&quot;</span><span class="p">,</span> <span class="s2">&quot;┣&quot;</span><span class="p">,</span> <span class="s2">&quot;│&quot;</span><span class="p">,</span> <span class="s2">&quot;┆&quot;</span><span class="p">,</span> <span class="s2">&quot;┊&quot;</span><span class="p">,</span> <span class="s2">&quot;┤&quot;</span><span class="p">,</span> <span class="s2">&quot;┥&quot;</span><span class="p">,</span> <span class="s2">&quot;┦&quot;</span><span class="p">,</span> <span class="s2">&quot;┧&quot;</span><span class="p">,</span> <span class="s2">&quot;┨&quot;</span><span class="p">,</span><span class="s2">&quot;┩&quot;</span><span class="p">,</span> <span class="s2">&quot;┪&quot;</span><span class="p">,</span> <span class="s2">&quot;┫&quot;</span><span class="p">,</span> <span class="s2">&quot;┃&quot;</span><span class="p">,</span> <span class="s2">&quot;┇&quot;</span><span class="p">,</span> <span class="s2">&quot;┋&quot;</span><span class="p">,</span> <span class="s2">&quot;┬&quot;</span><span class="p">,</span> <span class="s2">&quot;┭&quot;</span><span class="p">,</span> <span class="s2">&quot;┮&quot;</span><span class="p">,</span> <span class="s2">&quot;┯&quot;</span><span class="p">,</span> <span class="s2">&quot;┰&quot;</span><span class="p">,</span> <span class="s2">&quot;┱&quot;</span><span class="p">,</span> <span class="s2">&quot;┲&quot;</span><span class="p">,</span> <span class="s2">&quot;┳&quot;</span><span class="p">,</span> <span class="s2">&quot;┴&quot;</span><span class="p">,</span> <span class="s2">&quot;┵&quot;</span><span class="p">,</span><span class="s2">&quot;┶&quot;</span><span class="p">,</span> <span class="s2">&quot;┷&quot;</span><span class="p">,</span> <span class="s2">&quot;┸&quot;</span><span class="p">,</span> <span class="s2">&quot;┹&quot;</span><span class="p">,</span> <span class="s2">&quot;┺&quot;</span><span class="p">,</span> <span class="s2">&quot;┻&quot;</span><span class="p">,</span> <span class="s2">&quot;┼&quot;</span><span class="p">,</span> <span class="s2">&quot;┽&quot;</span><span class="p">,</span> <span class="s2">&quot;┾&quot;</span><span class="p">,</span> <span class="s2">&quot;┿&quot;</span><span class="p">,</span> <span class="s2">&quot;╀&quot;</span><span class="p">,</span> <span class="s2">&quot;╁&quot;</span><span class="p">,</span> <span class="s2">&quot;╂&quot;</span><span class="p">,</span> <span class="s2">&quot;╃&quot;</span><span class="p">,</span> <span class="s2">&quot;╄&quot;</span><span class="p">,</span> <span class="s2">&quot;╅&quot;</span><span class="p">,</span><span class="s2">&quot;╆&quot;</span><span class="p">,</span> <span class="s2">&quot;╇&quot;</span><span class="p">,</span> <span class="s2">&quot;╈&quot;</span><span class="p">,</span> <span class="s2">&quot;╉&quot;</span><span class="p">,</span> <span class="s2">&quot;╊&quot;</span><span class="p">,</span> <span class="s2">&quot;╋&quot;</span><span class="p">);</span>
</span><span class='line'>  <span class="k">foreach</span> <span class="p">(</span><span class="nv">$keys</span> <span class="k">as</span> <span class="nv">$key</span><span class="p">)</span>
</span><span class='line'>        <span class="p">{</span>
</span><span class='line'>          <span class="nv">$s</span><span class="o">=</span><span class="nb">str_replace</span><span class="p">(</span><span class="nv">$key</span><span class="p">,</span><span class="s2">&quot;&quot;</span><span class="p">,</span><span class="nv">$s</span><span class="p">);</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>  <span class="k">return</span> <span class="nx">SetToHexString</span><span class="p">(</span><span class="nb">iconv</span><span class="p">(</span><span class="s1">&#39;UTF-8&#39;</span><span class="p">,</span><span class="s1">&#39;UTF-16LE&#39;</span><span class="p">,</span><span class="nv">$s</span><span class="p">));</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="k">function</span> <span class="nf">conv</span><span class="p">(</span><span class="nv">$num</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>  <span class="nv">$tp</span> <span class="o">=</span> <span class="nb">bcmod</span><span class="p">(</span><span class="nv">$num</span><span class="p">,</span><span class="mi">4294967296</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'>  <span class="k">if</span><span class="p">(</span><span class="nb">bccomp</span><span class="p">(</span><span class="nv">$num</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span><span class="o">&gt;=</span><span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nb">bccomp</span><span class="p">(</span><span class="nv">$tp</span><span class="p">,</span><span class="mi">2147483648</span><span class="p">)</span><span class="o">&gt;</span><span class="mi">0</span><span class="p">)</span>
</span><span class='line'>  <span class="nv">$tp</span><span class="o">=</span><span class="nb">bcadd</span><span class="p">(</span><span class="nv">$tp</span><span class="p">,</span><span class="o">-</span><span class="mi">4294967296</span><span class="p">);</span>
</span><span class='line'>  <span class="k">if</span><span class="p">(</span><span class="nb">bccomp</span><span class="p">(</span><span class="nv">$num</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span><span class="o">&lt;</span><span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nb">bccomp</span><span class="p">(</span><span class="nv">$tp</span><span class="p">,</span><span class="mi">2147483648</span><span class="p">)</span><span class="o">&lt;</span><span class="mi">0</span><span class="p">)</span>
</span><span class='line'>  <span class="nv">$tp</span><span class="o">=</span><span class="nb">bcadd</span><span class="p">(</span><span class="nv">$tp</span><span class="p">,</span><span class="mi">4294967296</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'>  <span class="k">return</span> <span class="nv">$tp</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="k">function</span> <span class="nf">CodeFunc</span><span class="p">(</span><span class="nv">$Id</span><span class="p">,</span><span class="nv">$artist</span><span class="p">,</span><span class="nv">$title</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>  <span class="nv">$Id</span><span class="o">=</span><span class="p">(</span><span class="nx">int</span><span class="p">)</span><span class="nv">$Id</span><span class="p">;</span>
</span><span class='line'>  <span class="nv">$utf8Str</span><span class="o">=</span><span class="nx">SetToHexString</span><span class="p">(</span><span class="nv">$artist</span><span class="o">.</span><span class="nv">$title</span><span class="p">);</span>
</span><span class='line'>  <span class="nv">$length</span><span class="o">=</span><span class="nb">strlen</span><span class="p">(</span><span class="nv">$utf8Str</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">;</span>
</span><span class='line'>  <span class="k">for</span><span class="p">(</span><span class="nv">$i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="nv">$i</span><span class="o">&lt;=</span><span class="nv">$length</span><span class="o">-</span><span class="mi">1</span><span class="p">;</span><span class="nv">$i</span><span class="o">++</span><span class="p">)</span>
</span><span class='line'>      <span class="k">eval</span><span class="p">(</span><span class="s1">&#39;$song[&#39;</span><span class="o">.</span><span class="nv">$i</span><span class="o">.</span><span class="s1">&#39;] = 0x&#39;</span><span class="o">.</span><span class="nb">substr</span><span class="p">(</span><span class="nv">$utf8Str</span><span class="p">,</span><span class="nv">$i</span><span class="o">*</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="s1">&#39;;&#39;</span><span class="p">);</span>
</span><span class='line'>  <span class="nv">$tmp2</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
</span><span class='line'>  <span class="nv">$tmp3</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
</span><span class='line'>  <span class="nv">$tmp1</span> <span class="o">=</span> <span class="p">(</span><span class="nv">$Id</span> <span class="o">&amp;</span> <span class="mh">0x0000FF00</span><span class="p">)</span> <span class="o">&gt;&gt;</span> <span class="mi">8</span><span class="p">;</span> <span class="c1">//右移8位后为0x0000015F </span>
</span><span class='line'>
</span><span class='line'>  <span class="k">if</span> <span class="p">(</span> <span class="p">(</span><span class="nv">$Id</span> <span class="o">&amp;</span> <span class="mh">0x00FF0000</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">)</span> <span class="p">{</span>
</span><span class='line'>      <span class="nv">$tmp3</span> <span class="o">=</span> <span class="mh">0x000000FF</span> <span class="o">&amp;</span> <span class="o">~</span><span class="nv">$tmp1</span><span class="p">;</span> <span class="c1">//CL 0x000000E7 </span>
</span><span class='line'>  <span class="p">}</span><span class="k">else</span> <span class="p">{</span>
</span><span class='line'>      <span class="nv">$tmp3</span> <span class="o">=</span> <span class="mh">0x000000FF</span> <span class="o">&amp;</span> <span class="p">((</span><span class="nv">$Id</span> <span class="o">&amp;</span> <span class="mh">0x00FF0000</span><span class="p">)</span> <span class="o">&gt;&gt;</span> <span class="mi">16</span><span class="p">);</span> <span class="c1">//右移16位后为0x00000001 </span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>    <span class="nv">$tmp3</span> <span class="o">=</span> <span class="nv">$tmp3</span> <span class="o">|</span> <span class="p">((</span><span class="mh">0x000000FF</span> <span class="o">&amp;</span> <span class="nv">$Id</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="mi">8</span><span class="p">);</span> <span class="c1">//tmp3 0x00001801 </span>
</span><span class='line'>    <span class="nv">$tmp3</span> <span class="o">=</span> <span class="nv">$tmp3</span> <span class="o">&lt;&lt;</span> <span class="mi">8</span><span class="p">;</span> <span class="c1">//tmp3 0x00180100 </span>
</span><span class='line'>    <span class="nv">$tmp3</span> <span class="o">=</span> <span class="nv">$tmp3</span> <span class="o">|</span> <span class="p">(</span><span class="mh">0x000000FF</span> <span class="o">&amp;</span> <span class="nv">$tmp1</span><span class="p">);</span> <span class="c1">//tmp3 0x0018015F </span>
</span><span class='line'>    <span class="nv">$tmp3</span> <span class="o">=</span> <span class="nv">$tmp3</span> <span class="o">&lt;&lt;</span> <span class="mi">8</span><span class="p">;</span> <span class="c1">//tmp3 0x18015F00 </span>
</span><span class='line'>    <span class="k">if</span> <span class="p">(</span> <span class="p">(</span><span class="nv">$Id</span> <span class="o">&amp;</span> <span class="mh">0xFF000000</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">)</span> <span class="p">{</span>
</span><span class='line'>        <span class="nv">$tmp3</span> <span class="o">=</span> <span class="nv">$tmp3</span> <span class="o">|</span> <span class="p">(</span><span class="mh">0x000000FF</span> <span class="o">&amp;</span> <span class="p">(</span><span class="o">~</span><span class="nv">$Id</span><span class="p">));</span> <span class="c1">//tmp3 0x18015FE7 </span>
</span><span class='line'>    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span><span class='line'>        <span class="nv">$tmp3</span> <span class="o">=</span> <span class="nv">$tmp3</span> <span class="o">|</span> <span class="p">(</span><span class="mh">0x000000FF</span> <span class="o">&amp;</span> <span class="p">(</span><span class="nv">$Id</span> <span class="o">&gt;&gt;</span> <span class="mi">24</span><span class="p">));</span> <span class="c1">//右移24位后为0x00000000 </span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'>    <span class="nv">$i</span><span class="o">=</span><span class="nv">$length</span><span class="o">-</span><span class="mi">1</span><span class="p">;</span>
</span><span class='line'>  <span class="k">while</span><span class="p">(</span><span class="nv">$i</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">){</span>
</span><span class='line'>      <span class="nv">$char</span> <span class="o">=</span> <span class="nv">$song</span><span class="p">[</span><span class="nv">$i</span><span class="p">];</span>
</span><span class='line'>      <span class="k">if</span><span class="p">(</span><span class="nv">$char</span> <span class="o">&gt;=</span> <span class="mh">0x80</span><span class="p">)</span> <span class="nv">$char</span> <span class="o">=</span> <span class="nv">$char</span> <span class="o">-</span> <span class="mh">0x100</span><span class="p">;</span>
</span><span class='line'>      <span class="nv">$tmp1</span> <span class="o">=</span> <span class="p">(</span><span class="nv">$char</span> <span class="o">+</span> <span class="nv">$tmp2</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0x00000000FFFFFFFF</span><span class="p">;</span>
</span><span class='line'>      <span class="nv">$tmp2</span> <span class="o">=</span> <span class="p">(</span><span class="nv">$tmp2</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="nv">$i</span><span class="o">%</span><span class="mi">2</span> <span class="o">+</span> <span class="mi">4</span><span class="p">))</span> <span class="o">&amp;</span> <span class="mh">0x00000000FFFFFFFF</span><span class="p">;</span>
</span><span class='line'>      <span class="nv">$tmp2</span> <span class="o">=</span> <span class="p">(</span><span class="nv">$tmp1</span> <span class="o">+</span> <span class="nv">$tmp2</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0x00000000FFFFFFFF</span><span class="p">;</span>
</span><span class='line'>      <span class="nv">$i</span> <span class="o">-=</span> <span class="mi">1</span><span class="p">;</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="nv">$i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
</span><span class='line'>  <span class="nv">$tmp1</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
</span><span class='line'>  <span class="k">while</span><span class="p">(</span><span class="nv">$i</span><span class="o">&lt;=</span><span class="nv">$length</span><span class="o">-</span><span class="mi">1</span><span class="p">){</span>
</span><span class='line'>      <span class="nv">$char</span> <span class="o">=</span> <span class="nv">$song</span><span class="p">[</span><span class="nv">$i</span><span class="p">];</span>
</span><span class='line'>      <span class="k">if</span><span class="p">(</span><span class="nv">$char</span> <span class="o">&gt;=</span> <span class="mi">128</span><span class="p">)</span> <span class="nv">$char</span> <span class="o">=</span> <span class="nv">$char</span> <span class="o">-</span> <span class="mi">256</span><span class="p">;</span>
</span><span class='line'>      <span class="nv">$tmp7</span> <span class="o">=</span> <span class="p">(</span><span class="nv">$char</span> <span class="o">+</span> <span class="nv">$tmp1</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0x00000000FFFFFFFF</span><span class="p">;</span>
</span><span class='line'>      <span class="nv">$tmp1</span> <span class="o">=</span> <span class="p">(</span><span class="nv">$tmp1</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="nv">$i</span><span class="o">%</span><span class="mi">2</span> <span class="o">+</span> <span class="mi">3</span><span class="p">))</span> <span class="o">&amp;</span> <span class="mh">0x00000000FFFFFFFF</span><span class="p">;</span>
</span><span class='line'>      <span class="nv">$tmp1</span> <span class="o">=</span> <span class="p">(</span><span class="nv">$tmp1</span> <span class="o">+</span> <span class="nv">$tmp7</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0x00000000FFFFFFFF</span><span class="p">;</span>
</span><span class='line'>      <span class="nv">$i</span> <span class="o">+=</span> <span class="mi">1</span><span class="p">;</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'>  <span class="nv">$t</span> <span class="o">=</span> <span class="nx">conv</span><span class="p">(</span><span class="nv">$tmp2</span> <span class="o">^</span> <span class="nv">$tmp3</span><span class="p">);</span>
</span><span class='line'>  <span class="nv">$t</span> <span class="o">=</span> <span class="nx">conv</span><span class="p">((</span><span class="nv">$t</span><span class="o">+</span><span class="p">(</span><span class="nv">$tmp1</span> <span class="o">|</span> <span class="nv">$Id</span><span class="p">)));</span>
</span><span class='line'>  <span class="nv">$t</span> <span class="o">=</span> <span class="nx">conv</span><span class="p">(</span><span class="nb">bcmul</span><span class="p">(</span><span class="nv">$t</span> <span class="p">,</span> <span class="p">(</span><span class="nv">$tmp1</span> <span class="o">|</span> <span class="nv">$tmp3</span><span class="p">)));</span>
</span><span class='line'>  <span class="nv">$t</span> <span class="o">=</span> <span class="nx">conv</span><span class="p">(</span><span class="nb">bcmul</span><span class="p">(</span><span class="nv">$t</span> <span class="p">,</span> <span class="p">(</span><span class="nv">$tmp2</span> <span class="o">^</span> <span class="nv">$Id</span><span class="p">)));</span>
</span><span class='line'>
</span><span class='line'>  <span class="k">if</span><span class="p">(</span><span class="nb">bccomp</span><span class="p">(</span><span class="nv">$t</span> <span class="p">,</span> <span class="mi">2147483648</span><span class="p">)</span><span class="o">&gt;</span><span class="mi">0</span><span class="p">)</span>
</span><span class='line'>  <span class="nv">$t</span> <span class="o">=</span> <span class="nb">bcadd</span><span class="p">(</span><span class="nv">$t</span> <span class="p">,</span> <span class="o">-</span><span class="mi">4294967296</span><span class="p">);</span>
</span><span class='line'>  <span class="k">return</span> <span class="nv">$t</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>  <span class="nb">header</span><span class="p">(</span><span class="s2">&quot;Content-Type:text/html;charset=UTF-8&quot;</span><span class="p">);</span>
</span><span class='line'>        <span class="nv">$artist</span> <span class="o">=</span> <span class="nv">$_POST</span><span class="p">[</span><span class="s2">&quot;artist&quot;</span><span class="p">];</span>
</span><span class='line'>        <span class="nv">$title</span> <span class="o">=</span> <span class="nv">$_POST</span><span class="p">[</span><span class="s2">&quot;title&quot;</span><span class="p">];</span>
</span><span class='line'>
</span><span class='line'>  <span class="nv">$doc</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">DOMDocument</span><span class="p">();</span>
</span><span class='line'>  <span class="nv">$doc</span><span class="o">-&gt;</span><span class="na">load</span><span class="p">(</span><span class="s2">&quot;http://lrccnc.ttplayer.com/dll/lyricsvr.dll?sh?Artist=&quot;</span><span class="o">.</span><span class="nx">qianqian_code</span><span class="p">(</span><span class="nv">$artist</span><span class="p">)</span><span class="o">.</span><span class="s2">&quot;&amp;Title=&quot;</span><span class="o">.</span><span class="nx">qianqian_code</span><span class="p">(</span><span class="nv">$title</span><span class="p">)</span><span class="o">.</span><span class="s2">&quot;&amp;Flags=0&quot;</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'>  <span class="nv">$lrcNode</span> <span class="o">=</span> <span class="nv">$doc</span><span class="o">-&gt;</span><span class="na">getElementsByTagName</span><span class="p">(</span><span class="s2">&quot;lrc&quot;</span><span class="p">);</span>
</span><span class='line'>  <span class="nv">$code</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'>  <span class="k">foreach</span><span class="p">(</span><span class="nv">$lrcNode</span> <span class="k">as</span> <span class="nv">$lrc</span><span class="p">)</span>
</span><span class='line'>  <span class="p">{</span>
</span><span class='line'>      
</span><span class='line'>      <span class="nv">$artist</span><span class="o">=</span><span class="nv">$lrc</span><span class="o">-&gt;</span><span class="na">getAttribute</span><span class="p">(</span><span class="s2">&quot;artist&quot;</span><span class="p">);</span>
</span><span class='line'>      <span class="nv">$title</span><span class="o">=</span><span class="nv">$lrc</span><span class="o">-&gt;</span><span class="na">getAttribute</span><span class="p">(</span><span class="s2">&quot;title&quot;</span><span class="p">);</span>
</span><span class='line'>              <span class="k">if</span> <span class="p">(</span> <span class="p">(</span><span class="nv">$code</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>  <span class="o">||</span> <span class="nb">strpos</span><span class="p">(</span><span class="nv">$title</span><span class="p">,</span><span class="s2">&quot;中&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="nb">strpos</span><span class="p">(</span><span class="nv">$artist</span><span class="p">,</span><span class="s2">&quot;中&quot;</span><span class="p">)</span> <span class="p">)</span>
</span><span class='line'>                <span class="p">{</span>
</span><span class='line'>                  <span class="nv">$id</span><span class="o">=</span><span class="nv">$lrc</span><span class="o">-&gt;</span><span class="na">getAttribute</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">);</span>
</span><span class='line'>          <span class="nv">$code</span><span class="o">=</span><span class="nx">CodeFunc</span><span class="p">(</span><span class="nv">$id</span><span class="p">,</span><span class="nv">$artist</span><span class="p">,</span><span class="nv">$title</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'>                <span class="p">}</span>
</span><span class='line'>  
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>  <span class="k">if</span> <span class="p">(</span><span class="nv">$code</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>          <span class="nv">$lrcstr</span><span class="o">=</span><span class="nb">file_get_contents</span><span class="p">(</span><span class="s2">&quot;http://lrccnc.ttplayer.com/dll/lyricsvr.dll?dl?Id=&quot;</span><span class="o">.</span><span class="nv">$id</span><span class="o">.</span><span class="s2">&quot;&amp;Code=&quot;</span><span class="o">.</span><span class="nv">$code</span><span class="p">);</span>
</span><span class='line'>          <span class="nv">$lrcstr</span><span class="o">=</span><span class="nb">preg_replace</span><span class="p">(</span><span class="s2">&quot;/\[(.+?)\]/&quot;</span><span class="p">,</span><span class="s2">&quot;&quot;</span><span class="p">,</span><span class="nv">$lrcstr</span><span class="p">);</span> <span class="c1">//替换掉时间标签</span>
</span><span class='line'>              <span class="nv">$lrcstr</span><span class="o">=</span><span class="nb">preg_replace</span><span class="p">(</span><span class="s2">&quot;/((.*)QQ:(.*))/&quot;</span><span class="p">,</span><span class="s2">&quot;&quot;</span><span class="p">,</span><span class="nv">$lrcstr</span><span class="p">);</span> <span class="c1">// 替换联系QQ什么的广告</span>
</span><span class='line'>                <span class="nv">$lrcstr</span><span class="o">=</span><span class="nb">preg_replace</span><span class="p">(</span><span class="s2">&quot;/((.*)QQ：(.*))/&quot;</span><span class="p">,</span><span class="s2">&quot;&quot;</span><span class="p">,</span><span class="nv">$lrcstr</span><span class="p">);</span>
</span><span class='line'>          <span class="k">echo</span> <span class="nb">trim</span><span class="p">(</span><span class="nv">$lrcstr</span><span class="p">);</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>
</span><span class='line'><span class="cp">?&gt;</span><span class="x"></span>
</span></code></pre></td></tr></table></div></figure>


<h3>本文作者：Martian http://blog.4321.la 转载请注明</h3>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[MacBook Pro ＋ Mac OS X Lion SSD优化总结［基于镁光M4］]]></title>
    <link href="http://blog.4321.la/articles/2012/01/25/macbook-pro-ssd-optimize/"/>
    <updated>2012-01-25T18:25:00+08:00</updated>
    <id>http://blog.4321.la/articles/2012/01/25/macbook-pro-ssd-optimize</id>
    <content type="html"><![CDATA[<p>我在买来这台MacBook Pro还是11年的事情，买来以后我就感觉被坑得很彻底——显卡性能渣到集显程度、开机速度太慢、发热、Flash太渣看Bilibili太不爽⋯⋯</p>

<p>Lion出来以后上述问题更加明显，甚至连Chrome都不好用了。于是只能在再次掏腰包升机硬件了，先把内存4G升级到8G，结果发现几乎没有改善，尤其是Xcode，超级吃内存，于是一狠心，我就买了个镁光M4的SSD。</p>

<p>我买的SSD只有64GB，因为这东西的单位储存成本实在是太高了。SSD对我来说是个新鲜物，买来以后听 <a href="https://plus.google.com/106587986552086492432/posts">+Shadowmourne G</a> 忽悠一阵子，才知道这东西还得优化，于是谷歌了半天，加上也用了一段时间了，总结一下，方便以后自己用还有其他朋友参考。</p>

<!-- more -->


<h2>性能优化：</h2>

<p>1、 关闭紧急运动传感器：</p>

<p>这个东西就是在瞬间移动的时候给HDD一个信号，让他停止读写拿开磁头。对于SSD是完全没必要的，可以通过下面的命令完全关闭：</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ sudo pmset -a sms 0</span></code></pre></td></tr></table></div></figure>


<p><strong>需要特别说明的是，我把SSD更换上以后，把光驱拆下来，把原来的HDD放到了光驱上，经过查询资料，MBP的光驱位是没有紧急运动传感器的。</strong></p>

<p>2、 <strong>Trim</strong></p>

<p>Trim这东西，很坑爹。网上几乎所有人都说要开启Trim，为了减少性能衰减和延长SSD的寿命。我当时看了我朋友的MacBook Air，SSD的Trim是默认开启的，但是我换上M4以后，Lion下并没有自动开启。</p>

<p>在几个论坛上搜索了一下，有一个软件叫Tri Enabler可以强制开启，后来发现<a href="http://hardforum.com/showthread.php?p=1037771689">M4还有垃圾回收机制</a>，于是我又纠结了。</p>

<p>最后我找到了这篇文章：</p>

<p><a href="http://digitaldj.net/2011/07/21/trim-enabler-for-lion/">http://digitaldj.net/2011/07/21/trim-enabler-for-lion/</a></p>

<p>这篇文章中提到：</p>

<blockquote><p>DO NOT USE TRIM ENABLER (VERSION 1.1 OR 1.2) TO ENABLE TRIM ON LION.（可以通过终端开启）</p></blockquote>




<blockquote><p>There has also been some confusion about garbage collection and TRIM. TRIM is ALWAYS preferred over Garbage Collection and will likely yield better results. If you have garbage collection, you don’t necessarily need TRIM, but it’ll probably offer better performance and there’s always a chance there’ll be a degradation of speed over time. Therefore, when using Garbage Collection, you may have to take the drive out and do a secure erase so that everything is re-marked as free space.</p></blockquote>




<blockquote><p>Running garbage collection and TRIM at the same time is NOT a problem. They’re designed to work together. You can look at it like so: TRIM is called by your OS each time space is freed up. Garbage Collection is run by the drive’s firmware when idle and determines which parts of the drive can be cleaned up and rearranged. TRIM is obviously more efficient and obviously the drive’s firmware is aware of the TRIM commands and accounts for this.</p></blockquote>




<blockquote><p>While it’s true that using TRIM and garbage collection at the same time is essentially using two mechanisms to do the same thing, the firmware on your SSD drive is designed to handle these things. All SSD manufacturers, GC or not, recommend the use of TRIM.</p></blockquote>


<p>作者在文中说明了关于垃圾回收和Trim的关系，<strong>所以你的SSD不管有没有GC</strong>，都推荐开启Trim。综上，我们所做的就是开启Trim，但是<strong>不要通过那个TRIM ENABLER软件</strong>。方法仍然可以参照那篇文章所说的在命令行里面开启，这里不再赘述。</p>

<p>3、用noatime方式挂载SSD系统盘</p>

<blockquote><p>用 noatime 方式挂载系统盘，这样可以减少不必要的 I/O 次数，虽然 SSD 做这些操作非常快速，但考虑到最后访问时间这个属性其实很少用到，大家关心的一般都是最后修改时间和创建时间，所以完全可以关闭这个属性，这在 Unix/Linux 下是非常常见的文件系统优化选项。</p></blockquote>


<p>在<strong>/Library/LaunchDaemons</strong>里面创建一个<strong>noatime.plist</strong>，内容为：</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>&lt;?xml version="1.0" encoding="UTF-8"?>
</span><span class='line'>&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
</span><span class='line'>    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
</span><span class='line'>&lt;plist version="1.0">
</span><span class='line'>    &lt;dict>
</span><span class='line'>        &lt;key>Label&lt;/key>
</span><span class='line'>        &lt;string>noatime&lt;/string>
</span><span class='line'>        &lt;key>ProgramArguments&lt;/key>
</span><span class='line'>        &lt;array>
</span><span class='line'>            &lt;string>mount&lt;/string>
</span><span class='line'>            &lt;string>-vuwo&lt;/string>
</span><span class='line'>            &lt;string>noatime&lt;/string>
</span><span class='line'>            &lt;string>/&lt;/string>
</span><span class='line'>        &lt;/array>
</span><span class='line'>        &lt;key>RunAtLoad&lt;/key>
</span><span class='line'>        &lt;true/>
</span><span class='line'>    &lt;/dict>
</span><span class='line'>&lt;/plist></span></code></pre></td></tr></table></div></figure>


<p>然后修改权限：</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ sudo chown root:wheel /Library/LaunchDaemons/noatime.plist</span></code></pre></td></tr></table></div></figure>


<p>重启，查看是否生效，可以输入：</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>mount | grep " / "</span></code></pre></td></tr></table></div></figure>


<p>如果看到返回下面的信息，说明OK（注意有noatime）：</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>/dev/disk0s2 on / (hfs, local, journaled, noatime)</span></code></pre></td></tr></table></div></figure>


<h2>榨干空间：</h2>

<p>1、关闭休眠：</p>

<blockquote><p>默认的在 MB/MBP 上, 系统会在磁盘上维护一个和内存等大的 sleepimage 文件, 当电量耗尽时将内存中所有数据写入磁盘, 系统进入深度休眠状态, 下次唤醒时再从磁盘文件恢复状态. SSD 寸土寸金, 保留一个 8GB 大小又很少被用到的文件是很奢侈的行为.</p></blockquote>




<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ sudo pmset -a hibernatemode 0
</span><span class='line'>$ sudo rm /var/vm/sleepimage*</span></code></pre></td></tr></table></div></figure>


<p>2、关闭Time Machine本地备份</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ sudo tmutil disablelocal</span></code></pre></td></tr></table></div></figure>


<p>3、清理垃圾：</p>

<p>推荐下载<a href="http://macpaw.com/">CleanMyMac</a>或者<a href="http://itunes.apple.com/cn/app/disk-diet/id445512770?l=en&amp;mt=12">Disk Diet</a>这两块软件进行清理。</p>

<p>这样，我们就搞定了大部分的优化。有任何问题请在下面询问，或者Google一下。(>_&lt;)</p>

<p>参考文章：</p>

<p><a href="http://hi.baidu.com/omys/blog/item/67fc8a0e3a7d84fd37d1220b.html">分享下 SSD for Macbook Pro 的优化</a></p>

<p><a href="http://davidx.me/2011/09/24/optimize-ssd-on-mac/">Mac下优化SSD</a></p>

<p><a href="http://digitaldj.net/2011/07/21/trim-enabler-for-lion/">TRIM Enabler for Lion</a></p>

<p><a href="http://blog.jjgod.org/2010/04/17/macosx-ssd-tweaks/">Mac OS X 下与 SSD 相关的优化</a></p>

<p><a href="http://yuzhuohui.info/blog/2011/12/19/macbook-pro-ssd-optimize/">Macbook Pro SSD 优化小结</a></p>

<p><a href="http://hardforum.com/showthread.php?p=1037771689">M4 Garbage Collection?</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[[教程]在Mac OS X上架设属于你的Octopress]]></title>
    <link href="http://blog.4321.la/articles/2012/01/25/set-up-octopress/"/>
    <updated>2012-01-25T16:09:00+08:00</updated>
    <id>http://blog.4321.la/articles/2012/01/25/set-up-octopress</id>
    <content type="html"><![CDATA[<p>终于，耗时N天，把我的博客从WordPress转到了Octopress，并且很无耻的托管到GitHub上面，免费高速～</p>

<p>这篇文章教大家简单的Octopress的安装与使用。</p>

<p>（如果你用的Windows，你可能会碰到一堆雷⋯⋯强烈推荐Linux或者Mac OS X）</p>

<!-- more -->


<h2>1.安装</h2>

<p>Octopress的安装不同于WordPress，WordPress是安装到服务器上面的，Octopress是安装在你本地的（如果选择Deploy到GitHub上）。首先需要准备的是Ruby环境：（下面教程均在Mac OS X Lion 10.7.2测试通过）</p>

<p>1、 参考这篇文章，安装GCC：<a href="http://www.memoryz.info/install-gcc-on-mac.html">http://www.memoryz.info/install-gcc-on-mac.html</a> 如果你已经安装了Xcode，则无需重负安装GCC</p>

<p>2、 安装<a href="http://mxcl.github.com/homebrew/">Homebrew</a>（或者你可以参考：<a href="https://github.com/mxcl/homebrew/wiki/installation">https://github.com/mxcl/homebrew/wiki/installation</a>）：</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"
</span><span class='line'>$ brew update</span></code></pre></td></tr></table></div></figure>


<p>3、 安装Git：</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ brew install git</span></code></pre></td></tr></table></div></figure>


<p>4、 安装<a href="http://beginrescueend.com/">RVM</a>（或者参考：<a href="http://beginrescueend.com/rvm/install/">http://beginrescueend.com/rvm/install/</a>）：</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ bash -s stable &lt; &lt;(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)</span></code></pre></td></tr></table></div></figure>


<p>5、 安装Ruby 1.9.2</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ rvm install 1.9.2
</span><span class='line'>$ rvm 1.9.2 --default</span></code></pre></td></tr></table></div></figure>


<p>6、 安装Pow</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ curl get.pow.cx | sh</span></code></pre></td></tr></table></div></figure>


<p>7、 先cd到一个好的目录，比如Desktop，然后下载Octopress：</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ git clone git://github.com/imathis/octopress.git octopress
</span><span class='line'>$ cd octopress</span></code></pre></td></tr></table></div></figure>


<p>8、 安装一些东西：</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ gem install bundler
</span><span class='line'>$ rbenv rehash
</span><span class='line'>$ bundle install
</span><span class='line'>$ rake install</span></code></pre></td></tr></table></div></figure>


<p>这样，就安装好了Octopress了，输入<strong>rake preview</strong>，从localhost:4000可以预览结果</p>

<h2>2.发布</h2>

<p>1、 在GitHub名为 “http://你的GitHub用户名.github.com” 的repository。</p>

<p>2、 在Octopress目录里面设定资料：</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ rake setup_github_pages</span></code></pre></td></tr></table></div></figure>


<p>3、 生成HTML：</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ rake generate</span></code></pre></td></tr></table></div></figure>


<p>4、 发布：</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ rake deploy</span></code></pre></td></tr></table></div></figure>


<p>这样等待几分钟，就可以通过 http://你的GitHub用户名.github.com 查看你的全新的Octopress BLOG！</p>

<h2>3.绑定域名</h2>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ echo '你要绑定的域名' >> source/CNAME</span></code></pre></td></tr></table></div></figure>


<p>然后，将你要绑定的域名CNAME到 http://你的GitHub用户名.github.com，如果是@纪录，需要加入207.97.227.245。</p>

<h2>4.发布文章</h2>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ rake new_post['title']</span></code></pre></td></tr></table></div></figure>


<p>运行上面的命令，Octopress会在source/_posts生成一个markdown（推荐阅读：<a href="http://markdown.tw/">http://markdown.tw/</a>）文件</p>

<p>更多的如何编辑文档，请参阅：<a href="http://octopress.org/docs/">http://octopress.org/docs/</a></p>

<p>在Mac下，Markdown编辑器推荐一款国产的小软件：Mou <a href="http://mouapp.com/">http://mouapp.com/</a></p>

<p>当你把Markdown文档编辑好以后再运行rake generate和rake deploy发布到GitHub上面</p>

<h2>5.总结</h2>

<p>很多的技巧，比如修改模板，Octopress官方上有详细的说明，于是我不再赘述。经过几天使用，这东西确实是Geek向，包括修改模板、导入评论等等已经让我无奈了N次⋯⋯</p>

<p>如果你对PHP＋MYSQL的WordPress的臃肿和那难用后台编辑器不能忍受，不妨尝试一下Octopress。同时，托管到GitHub上面也无需再支出高昂的空间费用。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[捐赠 4321.La - Support future development of 4321.La]]></title>
    <link href="http://blog.4321.la/articles/2012/01/24/donate/"/>
    <updated>2012-01-24T22:55:00+08:00</updated>
    <id>http://blog.4321.la/articles/2012/01/24/donate</id>
    <content type="html"><![CDATA[<p>非常高兴看到我制作的软件能够帮助到您！</p>

<p>如果您喜欢我的作品，可以捐赠4321.La以支持我们后续的开发。</p>

<!-- more -->


<h4>捐赠方式：</h4>

<h4>1.<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&amp;business=fzyadmin%40gmail%2ecom&amp;item_name=Support%20future%20development%20of%204321.La%20app&amp;no_shipping=1&amp;no_note=1&amp;tax=0&amp;currency_code=USD&amp;lc=US&amp;bn=PP%2dDonationsBF&amp;charset=UTF%2d8">Donate via PayPal</a></h4>

<h4>2.<a href="https://me.alipay.com/martian">Donate via 支付宝</a></h4>

<h4>3.<a href="http://www.amazon.cn/registry/wishlist/1JUEM4PZIL82C">Donate via Amazon.cn</a></h4>

<h3>Thanks for being awesome!</h3>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Hello Octopress]]></title>
    <link href="http://blog.4321.la/articles/2012/01/22/hello-octopress/"/>
    <updated>2012-01-22T14:23:00+08:00</updated>
    <id>http://blog.4321.la/articles/2012/01/22/hello-octopress</id>
    <content type="html"><![CDATA[<p><img src="http://i.imgur.com/x1UiS.png" alt="Octopress" /></p>

<h1>Hello Octopress!</h1>

<p><strong><a href="http://octopress.org/">Octopress</a></strong>, 是一个各种新技术结合起来的博客系统。</p>

<p><a href="http://4321.La">4321.La</a>所在的服务器机房最近线路一直抽风，尤其是我自己访问起来必须挂VPN，不然速度难以忍受，而且服务器上512MB内存近一半被我原来那个<a href="http://wordpress.org/">WordPress</a>博客给占用了，各种不爽。</p>

<!-- more -->


<p>于是就体验了一下Octopress（章鱼发布系统＝。＝），这个东西跟WordPress这样的传统博客有着显著不同：</p>

<p><strong>WordPress：</strong></p>

<ol>
<li>PHP + MYSQL，适合主流的LAMP、LNMP等环境运行。</li>
<li>HTML写作，同时拥有所见即所得编辑器</li>
<li>插件、风格安装简易且较为丰富</li>
<li>评论系统为每个博客独立</li>
<li>只需要apt-get/yum几下，配置好服务器，即可运行。</li>
<li>平民向</li>
</ol>


<p><strong>Octopress：</strong></p>

<ol>
<li>Ruby在本地运行，生成纯HTML再Deploy到服务器。</li>
<li>MarkDown语法写作</li>
<li>插件较少，而且不会Ruby也木法开发＝。＝，网站风格带一套HTML5，自己修改相当相当费劲。（至少对我这个前端技术菜鸟来说是这样）</li>
<li>评论系统采用Disqus，解决HTML的局限性</li>
<li>你需要有一定的Linux/Ruby/HTML(5)/Javascript/CSS知识</li>
<li>Geek向(at least now)</li>
</ol>


<p>由于章鱼本身也是个很好玩的动物。章鱼Press也就更耐玩了⋯⋯这套系统总归来说，如果你能把他玩透了，能学到Ruby知识，学习Markdown语法（顺带可以看看TeX），实战HTML/CSS/JavaScript⋯⋯</p>

<p>至于Octopress的使用方法，准备最近发布出来一套教程，包含基本的配置。嘛，春节几天光从这里折腾这章鱼了，等两天再说吧～</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[[开源计划]DynamicLyrics]]></title>
    <link href="http://blog.4321.la/articles/2012/01/01/opensource-dynamiclyrics/"/>
    <updated>2012-01-01T00:10:00+08:00</updated>
    <id>http://blog.4321.la/articles/2012/01/01/opensource-dynamiclyrics</id>
    <content type="html"><![CDATA[<p>Github：</p>

<p><a href="https://github.com/6708539/DynamicLyrics">https://github.com/6708539/DynamicLyrics</a></p>

<p>因为现在开发时间很少，准备把项目逐一开源，让更多的朋友参与进来开发！</p>

<!-- more -->


<p>有任何问题：</p>

<p>1、E-Mail我：fzyadmin在gmail.com</p>

<p>2、Google Plus里面＋我：<a href="https://plus.google.com/100204491389909955903/posts">https://plus.google.com/100204491389909955903/posts</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[[Mac][教程]使用aria2c＋loli.lu实现高速免费迅雷离线下载]]></title>
    <link href="http://blog.4321.la/articles/2011/12/10/lolilu-aria2c/"/>
    <updated>2011-12-10T23:57:00+08:00</updated>
    <id>http://blog.4321.la/articles/2011/12/10/lolilu-aria2c</id>
    <content type="html"><![CDATA[<p>众所周知，Windows下有一款经典的下载软件，叫迅雷，下载速度一直是非常理想的</p>

<p>但是这款软件没有Linux版本，Mac版本也非常的烂并且没有离线下载功能</p>

<p>这篇教程旨在帮助大家动手打造一个方便的高速下载平台，下载工具采用aria2c，中转网站采用loli.lu（迅雷离线分享）</p>

<!-- more -->


<p>教程在Mac OS X Lion 10.7.2下编写，Linux用户操作方法大同小异，Windows用户请自主研究。</p>

<p>前期准备：下载并编译aria2c（只需进行一次即刻，以后可以直接调用～）</p>

<p>第一步：登录 <a href="http://aria2.sourceforge.net/">http://aria2.sourceforge.net/</a> 下载aria2c</p>

<p>或者，你可以通过这个地址直接下载（推荐还是去sourceforge下载最新版本）：<a href="http://superb-sea2.dl.sourceforge.net/project/aria2/stable/aria2-1.13.0/aria2-1.13.0.tar.gz">http://superb-sea2.dl.sourceforge.net/project/aria2/stable/aria2-1.13.0/aria2-1.13.0.tar.gz</a></p>

<p><img src="http://i.imgur.com/2t8HQ.png" alt="image" /></p>

<p><img src="http://i.imgur.com/tNAcz.png" alt="image" /></p>

<p>第二步：解压下载的文件，放到一个你记住的位置</p>

<p><img src="http://i.imgur.com/4nd8d.png" alt="image" /></p>

<p>第三步：编译aria2c</p>

<p>进入应用程序 － 实用工具 － 终端</p>

<p>输入命令： cd 文件夹位置（右键 － 查看简介可以看到）/文件夹名</p>

<p>比如按照第二步所示，我的文件夹放在/Users/Martian/Documents，文件夹名是aria2-1.13.0，就输入 cd /Users/Martian/Documents/aria2-1.13.0，然后按下回车键</p>

<p><img src="http://i.imgur.com/2q6Go.png" alt="image" /></p>

<p>第四步：输入命令“./configure; make; make install”（不含引号），然后回车，就会自动配置、编译、安装aria2c</p>

<p>备注：编译aria2c需要安装g++，如果您已经安装了xcode套装则已经自动安装，否则请查阅相关教程先安装g++，这里不再赘述</p>

<p>或者参阅这篇教程，独立安装gcc：<a href="http://www.memoryz.info/install-gcc-on-mac.html">http://www.memoryz.info/install-gcc-on-mac.html</a></p>

<p><img src="http://i.imgur.com/i9AeI.png" alt="image" /></p>

<p><img src="http://i.imgur.com/QoJM7.png" alt="image" /></p>

<p><img src="http://i.imgur.com/WcDKq.png" alt="image" /></p>

<p>这样，我们就编译安装好了一款多线程、轻量级的下载工具：aria2c</p>

<p>下面开始使用loli.lu实现迅雷离线下载</p>

<p>第一步：登录http://loli.lu ，选择一个您要下载的资源，单击</p>

<p><img src="http://i.imgur.com/4fM96.png" alt="image" /></p>

<p>第二步：在弹出的悬浮框中，选择批量下载 － aria2c</p>

<p><img src="http://i.imgur.com/5TiAE.png" alt="image" /></p>

<p>第三步：在出来的文本框中，按Command+C复制下载地址</p>

<p><img src="http://i.imgur.com/gGRwy.png" alt="image" /></p>

<p>第四步：启动终端，cd到一个你要下载保存的目录，比如下载到桌面，输入 cd ~/Desktop</p>

<p>然后，把刚才的下载地址粘贴进去（Command+V），按回车键开始下载</p>

<p>出现如下图所示的内容代表已经开始下载了！</p>

<p><img src="http://i.imgur.com/tqnCz.png" alt="image" /></p>

<p>备注：aria2c支持断点续传，下次下载的话cd到下载保存目录，然后重新运行之前的下载命令即可</p>

<p>这样，我们就实现了通过迅雷离线服务器高速下载文件。当然Loli.lu不仅可以让用户下载与分享其他用户上传好的资源，同样可以发布资源</p>

<p>比如，我从极影的BT站找到了一个动漫的种子然后想要下载</p>

<p><img src="http://i.imgur.com/uvcYc.png" alt="image" /></p>

<p>首先我要做的就是把种子的地址复制下来，比如 http://bt.ktxp.com/down/1323442938/065d7936de1b6cd5351688b8841bef62835562ab.torrent</p>

<p>然后打开http://loli.lu，选择右上角的登录，输入用户名密码登录</p>

<p>（Loli.lu采用Google Open ID系统，与Gmail同步登录，无需重复注册，您的资料会被保密）</p>

<p>登录后，您可以选择右上角的发布资源（推荐），或者选择“我要直接获得资源下载地址”（需要任务即时被迅雷秒杀才可以，推荐选择发布资源）</p>

<p><img src="http://i.imgur.com/cAuz6.png" alt="image" /></p>

<p><img src="http://i.imgur.com/mD0pa.png" alt="image" /></p>

<p>稍等片刻，任务提交成功后，会自动跳到下载地址，然后按照教程前面所叙述的方法下载即可！</p>

<p><img src="http://i.imgur.com/mD0pa.png" alt="image" /></p>

<p>教程到此结束，如果大家有任何问题，欢迎到Google Plus里+Martian Z（博客留言由于近期比较繁忙，暂时不能回复，抱歉）</p>

<p>Loli.lu目前是一个发展中的项目，我们回在后期增加对Mac、Linux系统的专门优化（譬如客户端添加资源），同时也会增加用户RSS订阅功能，推送订阅下载地址等，希望您能支持并关注我们的发展。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[【Project-LOLI】Loli.lu 免费迅雷离线下载分享计划]]></title>
    <link href="http://blog.4321.la/articles/2011/12/08/project-lolilu/"/>
    <updated>2011-12-08T00:06:00+08:00</updated>
    <id>http://blog.4321.la/articles/2011/12/08/project-lolilu</id>
    <content type="html"><![CDATA[<p><img src="http://i.imgur.com/WBRYk.png" alt="image" /></p>

<p><a href="http://Loli.lu">http://Loli.lu</a>是由 足兆叉虫 和 Martian 共同开发的免费的、非商业的、有爱的迅雷离线下载分享系统。（其实主要是足兆叉虫在开发，我表示完全不会Python）</p>

<p>旨在提供一个完善（以后会实现～）、简洁、高速的下载分享平台</p>

<!-- more -->


<p>网站特性如下：</p>

<p>1、采用Google OpenID用户系统，GMail帐户直接登陆，无需重复注册</p>

<p>2、网站支持已上传的资源地址分享功能与标签功能，您可以即刻搜索其他用户已经分享的资源，或者上传新的资源再发布在各大论坛网站中进行分享。</p>

<p>3、支持Chrome、Safari、FireFox浏览器下载，速度与迅雷VIP离线速度相同（暂不支持Opera，永远不会支持IE与非Chromium核心的其他国产浏览器），支持aria2c、wget批量下载（designed for Linux/Mac users）</p>

<p>4、登录后，您可以直接添加下载任务并获取离线下载地址，全部过程完全免费，并且可以享受迅雷VIP用户的下载速度，非常适合冷门资源。</p>

<p><img src="http://i.imgur.com/GYJDR.png" alt="image" /></p>

<p>补充说明：</p>

<p>1、资源均为网友上传，由迅雷离线服务器提供下载资源</p>

<p>2、网站不支持IE浏览器，如果您是Windows用户，建议您更换浏览器（推荐Chrome）</p>

<p>3、Chrome、Safari、Firefox用户通过浏览器下载需要安装游猴脚本，详情请访问Loli.lu参见左栏（lolilu已更新，无需脚本！）</p>

<p>4、aria2c是一款轻量级的多线程多协议下载工具，您可能需要从这里下载并进行编译安装：<a href="http://aria2.sourceforge.net/">http://aria2.sourceforge.net/</a></p>

<p>5、Project-LOLI目前还是一个发展中的项目，网站还在完善之中，如果Loli.lu不能满足你们的需要，如果您有任何的建议或问题请及时联系我们</p>

<p>+Martian Z ：<a href="https://plus.google.com/100204491389909955903/posts">https://plus.google.com/100204491389909955903/posts</a></p>

<p>+足兆叉虫：<a href="https://plus.google.com/109559563687025213768/">https://plus.google.com/109559563687025213768/</a>posts</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[[Mac][原创]MusicSeekerX – 搜索与下载音乐]]></title>
    <link href="http://blog.4321.la/articles/2011/08/28/musicseekerx/"/>
    <updated>2011-08-28T23:47:00+08:00</updated>
    <id>http://blog.4321.la/articles/2011/08/28/musicseekerx</id>
    <content type="html"><![CDATA[<p>好吧，写歌词软件写得有些吐血，我就顺带完善一下之前的软件——给MusicSeeker开发了Mac版本，拉着Madimo一块开发了一下，两天的时间就完工了。</p>

<p>MusicSeekerX是一款仿MusicSeeker的软件（废话），用来辅助Mac用户在Mac系统下（还是废话）下载音乐。</p>

<p><img src="http://i.imgur.com/eXcFL.png" alt="image" /></p>

<p>软件的特性还是啰嗦一下吧：</p>

<p>1、支持无损音乐（flac）的搜索下载，支持下载无损音乐后自动转换为iTunes可识别的无损格式（alac m4a）</p>

<p>2、支持下载MP3音乐后自动添加专辑封面、添加歌词</p>

<p>3、优先选择高码率，音乐质量一目了然，适合各种无损控。</p>

<p>软件的下载保存目录、软件的一些设置都在菜单 – 偏好设置里面，推荐大家先进行设置。</p>

<p>软件的缺点我也不多说了，毕竟是两天就完工的作品，我在软件里面加入了比较完善的自动更新机制（废话，别人的现成的库），后续的功能还有BUG的修复软件会自动检查更新的。</p>

<p>如果您在使用过程中发现什么问题的话，别忘了反馈一下，谢谢支持～</p>

<p>如果软件确实对您起到了帮助，可以考虑捐赠作者以平衡域名、空间支出费用，捐赠地址：http://blog.4321.la/2011/09/474.html</p>

<p>再次感谢各位的支持！</p>

<!-- more -->


<p>下载地址：
<a href="http://dl.4321.la/MusicSeekerX.zip">http://dl.4321.la/MusicSeekerX.zip</a></p>

<blockquote><p>BTW，我的G+：http://googleplus.4321.la/，欢迎各位圈我～</p><p>8月29日更新，2.0版本发布</p><p>MusicSeekerX 2.0</p><p>1、添加Apple LossLess(m4a)转码支持</p><p>2、添加Apple LossLess(m4a)的专辑图片、歌词自动添加功能</p><p>3、修复一处定位文件失败的BUG</p><p>请各位在软件中点击检查更新菜单，即可自动升级！</p></blockquote>


<blockquote><p>非Lion用户请尝试通过下面的方法修改以运行软件：</p><p>经简单修改即可在Mac OS X 10.6下运行，解压后，右键单击MusicSeeker.app，选择显示包内容</p><p>方法是将原Contents/Info.plist里的</p><p>LSMinimumSystemVersion</p><p>10.7</p><p>改为</p><p>LSMinimumSystemVersion</p><p>10.6</p><p>在10.6.6下测试通过。但没有试过OS X其他版本。</p><p>（由G+上面的朋友H Liang提供，10.6的朋友可以试一下，我会在下个版本完美支持10.6版本）</p></blockquote>


<blockquote><p>出现全部音乐不能下载情况的朋友，请尝试将DNS改为Google Public Dns：8.8.8.8/8.8.4.4后重试。</p></blockquote>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[[OBJC]Objective-c实现千千静听歌词搜索（近乎完美版本）]]></title>
    <link href="http://blog.4321.la/articles/2011/08/25/qianqianlyrics/"/>
    <updated>2011-08-25T23:43:00+08:00</updated>
    <id>http://blog.4321.la/articles/2011/08/25/qianqianlyrics</id>
    <content type="html"><![CDATA[<p>千千静听的歌词搜索算法貌似早就不是啥秘密了，网上流传着PHP版本，ASP版本，Delphi版本，C＃的一个有BUG的版本。</p>

<p>然后最近研究开发Mac的程序，然后就翻译了一份OBJC版本，其中Unicode Encode的相关部分是Keefo提供的，非常感谢他的指点，毕竟二进制操作什么的需要对语言很熟悉，刚接触Objc实在是心有余力不足啊～～</p>

<!-- more -->


<p>不多说了，直接贴三个类，第一个是QianQianLRC的类，里面基本都是静态成员函数，很容易调用</p>

<p>另一个是辅助+(void)getLyricsListByTitle:(NSString *)Title getLyricsListByArtist:(NSString *)Artist AddToArrayController:(NSArrayController*)array_controller Server:(NSInteger)server的KeyValue类，如果了解一些cocoa的开发模式的话应该对Key Value略有了解，还有一个是Bing Translator的静态类，用来调用Bing Translator实现简体中文 – 繁体中文的转化。</p>

<p>之所以说这是个近乎完美版本，又之所以加上Bing Translator，就是因为千千LRC搜索的过程中如果含有繁体汉字（比如繁体中文、日语），一定是搜索不出来结果的，所以需要对里面的繁体汉字进行转换，好了不多说了，贴代码。下面代码在XCode 4下编译通过。还有就是我这个博客插件不支持objc语言，随便选了一个，大家凑合看吧。</p>

<p>文章来源：http://blog.4321.la  转载请自觉注明！</p>

<p>QianQianLyrics.h</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
</pre></td><td class='code'><pre><code class='objc'><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="c1">//  QianQianLyrics.h</span>
</span><span class='line'><span class="c1">//  DynamicLyrics</span>
</span><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="c1">//  Created by Martian on 11-8-8.</span>
</span><span class='line'><span class="c1">//  Copyright 2011年 4321.La. All rights reserved.</span>
</span><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="cp">#import &lt;Foundation/Foundation.h&gt;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">@</span><span class="n">interface</span> <span class="n">QianQianLyrics</span> <span class="o">:</span> <span class="n">NSObject</span><span class="p">{</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="o">+</span><span class="p">(</span><span class="n">NSString</span><span class="o">*</span><span class="p">)</span><span class="nl">getLyricsByTitle:</span><span class="p">(</span><span class="n">NSString</span><span class="o">*</span><span class="p">)</span><span class="n">Title</span> <span class="nl">getLyricsByArtist:</span><span class="p">(</span><span class="n">NSString</span><span class="o">*</span><span class="p">)</span><span class="n">Artist</span><span class="p">;</span>
</span><span class='line'><span class="o">+</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nl">getLyricsListByTitle:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">Title</span> <span class="nl">getLyricsListByArtist:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">Artist</span> <span class="nl">AddToArrayController:</span><span class="p">(</span><span class="n">NSArrayController</span><span class="o">*</span><span class="p">)</span><span class="n">array_controller</span> <span class="nl">Server:</span><span class="p">(</span><span class="n">NSInteger</span><span class="p">)</span><span class="n">server</span><span class="p">;</span>
</span><span class='line'><span class="o">+</span><span class="p">(</span><span class="n">NSString</span><span class="o">*</span><span class="p">)</span><span class="nl">getLyricsByTitle:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">Title</span> <span class="nl">getLyricsByArtist:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">Artist</span> <span class="nl">getLyricsByID:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">ID</span><span class="p">;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="k">@end</span>
</span></code></pre></td></tr></table></div></figure>


<p>QianQianLyrics.m</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
<span class='line-number'>42</span>
<span class='line-number'>43</span>
<span class='line-number'>44</span>
<span class='line-number'>45</span>
<span class='line-number'>46</span>
<span class='line-number'>47</span>
<span class='line-number'>48</span>
<span class='line-number'>49</span>
<span class='line-number'>50</span>
<span class='line-number'>51</span>
<span class='line-number'>52</span>
<span class='line-number'>53</span>
<span class='line-number'>54</span>
<span class='line-number'>55</span>
<span class='line-number'>56</span>
<span class='line-number'>57</span>
<span class='line-number'>58</span>
<span class='line-number'>59</span>
<span class='line-number'>60</span>
<span class='line-number'>61</span>
<span class='line-number'>62</span>
<span class='line-number'>63</span>
<span class='line-number'>64</span>
<span class='line-number'>65</span>
<span class='line-number'>66</span>
<span class='line-number'>67</span>
<span class='line-number'>68</span>
<span class='line-number'>69</span>
<span class='line-number'>70</span>
<span class='line-number'>71</span>
<span class='line-number'>72</span>
<span class='line-number'>73</span>
<span class='line-number'>74</span>
<span class='line-number'>75</span>
<span class='line-number'>76</span>
<span class='line-number'>77</span>
<span class='line-number'>78</span>
<span class='line-number'>79</span>
<span class='line-number'>80</span>
<span class='line-number'>81</span>
<span class='line-number'>82</span>
<span class='line-number'>83</span>
<span class='line-number'>84</span>
<span class='line-number'>85</span>
<span class='line-number'>86</span>
<span class='line-number'>87</span>
<span class='line-number'>88</span>
<span class='line-number'>89</span>
<span class='line-number'>90</span>
<span class='line-number'>91</span>
<span class='line-number'>92</span>
<span class='line-number'>93</span>
<span class='line-number'>94</span>
<span class='line-number'>95</span>
<span class='line-number'>96</span>
<span class='line-number'>97</span>
<span class='line-number'>98</span>
<span class='line-number'>99</span>
<span class='line-number'>100</span>
<span class='line-number'>101</span>
<span class='line-number'>102</span>
<span class='line-number'>103</span>
<span class='line-number'>104</span>
<span class='line-number'>105</span>
<span class='line-number'>106</span>
<span class='line-number'>107</span>
<span class='line-number'>108</span>
<span class='line-number'>109</span>
<span class='line-number'>110</span>
<span class='line-number'>111</span>
<span class='line-number'>112</span>
<span class='line-number'>113</span>
<span class='line-number'>114</span>
<span class='line-number'>115</span>
<span class='line-number'>116</span>
<span class='line-number'>117</span>
<span class='line-number'>118</span>
<span class='line-number'>119</span>
<span class='line-number'>120</span>
<span class='line-number'>121</span>
<span class='line-number'>122</span>
<span class='line-number'>123</span>
<span class='line-number'>124</span>
<span class='line-number'>125</span>
<span class='line-number'>126</span>
<span class='line-number'>127</span>
<span class='line-number'>128</span>
<span class='line-number'>129</span>
<span class='line-number'>130</span>
<span class='line-number'>131</span>
<span class='line-number'>132</span>
<span class='line-number'>133</span>
<span class='line-number'>134</span>
<span class='line-number'>135</span>
<span class='line-number'>136</span>
<span class='line-number'>137</span>
<span class='line-number'>138</span>
<span class='line-number'>139</span>
<span class='line-number'>140</span>
<span class='line-number'>141</span>
<span class='line-number'>142</span>
<span class='line-number'>143</span>
<span class='line-number'>144</span>
<span class='line-number'>145</span>
<span class='line-number'>146</span>
<span class='line-number'>147</span>
<span class='line-number'>148</span>
<span class='line-number'>149</span>
<span class='line-number'>150</span>
<span class='line-number'>151</span>
<span class='line-number'>152</span>
<span class='line-number'>153</span>
<span class='line-number'>154</span>
<span class='line-number'>155</span>
<span class='line-number'>156</span>
<span class='line-number'>157</span>
<span class='line-number'>158</span>
<span class='line-number'>159</span>
<span class='line-number'>160</span>
<span class='line-number'>161</span>
<span class='line-number'>162</span>
<span class='line-number'>163</span>
<span class='line-number'>164</span>
<span class='line-number'>165</span>
<span class='line-number'>166</span>
<span class='line-number'>167</span>
<span class='line-number'>168</span>
<span class='line-number'>169</span>
<span class='line-number'>170</span>
<span class='line-number'>171</span>
<span class='line-number'>172</span>
<span class='line-number'>173</span>
<span class='line-number'>174</span>
<span class='line-number'>175</span>
<span class='line-number'>176</span>
<span class='line-number'>177</span>
<span class='line-number'>178</span>
<span class='line-number'>179</span>
<span class='line-number'>180</span>
<span class='line-number'>181</span>
<span class='line-number'>182</span>
<span class='line-number'>183</span>
<span class='line-number'>184</span>
<span class='line-number'>185</span>
<span class='line-number'>186</span>
<span class='line-number'>187</span>
<span class='line-number'>188</span>
<span class='line-number'>189</span>
<span class='line-number'>190</span>
<span class='line-number'>191</span>
<span class='line-number'>192</span>
<span class='line-number'>193</span>
<span class='line-number'>194</span>
<span class='line-number'>195</span>
<span class='line-number'>196</span>
<span class='line-number'>197</span>
<span class='line-number'>198</span>
<span class='line-number'>199</span>
<span class='line-number'>200</span>
<span class='line-number'>201</span>
<span class='line-number'>202</span>
<span class='line-number'>203</span>
<span class='line-number'>204</span>
<span class='line-number'>205</span>
<span class='line-number'>206</span>
<span class='line-number'>207</span>
<span class='line-number'>208</span>
<span class='line-number'>209</span>
<span class='line-number'>210</span>
<span class='line-number'>211</span>
<span class='line-number'>212</span>
<span class='line-number'>213</span>
<span class='line-number'>214</span>
<span class='line-number'>215</span>
<span class='line-number'>216</span>
<span class='line-number'>217</span>
<span class='line-number'>218</span>
<span class='line-number'>219</span>
<span class='line-number'>220</span>
<span class='line-number'>221</span>
<span class='line-number'>222</span>
<span class='line-number'>223</span>
<span class='line-number'>224</span>
<span class='line-number'>225</span>
<span class='line-number'>226</span>
<span class='line-number'>227</span>
<span class='line-number'>228</span>
<span class='line-number'>229</span>
<span class='line-number'>230</span>
<span class='line-number'>231</span>
<span class='line-number'>232</span>
<span class='line-number'>233</span>
<span class='line-number'>234</span>
<span class='line-number'>235</span>
<span class='line-number'>236</span>
<span class='line-number'>237</span>
<span class='line-number'>238</span>
<span class='line-number'>239</span>
<span class='line-number'>240</span>
<span class='line-number'>241</span>
<span class='line-number'>242</span>
<span class='line-number'>243</span>
<span class='line-number'>244</span>
<span class='line-number'>245</span>
<span class='line-number'>246</span>
<span class='line-number'>247</span>
<span class='line-number'>248</span>
<span class='line-number'>249</span>
<span class='line-number'>250</span>
<span class='line-number'>251</span>
<span class='line-number'>252</span>
<span class='line-number'>253</span>
<span class='line-number'>254</span>
<span class='line-number'>255</span>
<span class='line-number'>256</span>
<span class='line-number'>257</span>
<span class='line-number'>258</span>
<span class='line-number'>259</span>
<span class='line-number'>260</span>
<span class='line-number'>261</span>
<span class='line-number'>262</span>
<span class='line-number'>263</span>
<span class='line-number'>264</span>
<span class='line-number'>265</span>
<span class='line-number'>266</span>
<span class='line-number'>267</span>
<span class='line-number'>268</span>
<span class='line-number'>269</span>
<span class='line-number'>270</span>
<span class='line-number'>271</span>
<span class='line-number'>272</span>
<span class='line-number'>273</span>
<span class='line-number'>274</span>
<span class='line-number'>275</span>
<span class='line-number'>276</span>
<span class='line-number'>277</span>
<span class='line-number'>278</span>
<span class='line-number'>279</span>
<span class='line-number'>280</span>
<span class='line-number'>281</span>
<span class='line-number'>282</span>
<span class='line-number'>283</span>
<span class='line-number'>284</span>
<span class='line-number'>285</span>
<span class='line-number'>286</span>
<span class='line-number'>287</span>
<span class='line-number'>288</span>
<span class='line-number'>289</span>
<span class='line-number'>290</span>
<span class='line-number'>291</span>
<span class='line-number'>292</span>
<span class='line-number'>293</span>
<span class='line-number'>294</span>
<span class='line-number'>295</span>
<span class='line-number'>296</span>
<span class='line-number'>297</span>
<span class='line-number'>298</span>
<span class='line-number'>299</span>
<span class='line-number'>300</span>
<span class='line-number'>301</span>
<span class='line-number'>302</span>
<span class='line-number'>303</span>
<span class='line-number'>304</span>
</pre></td><td class='code'><pre><code class='objc'><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="c1">//  QianQianLyrics.m</span>
</span><span class='line'><span class="c1">//  DynamicLyrics</span>
</span><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="c1">//  Created by Martian on 11-8-8.</span>
</span><span class='line'><span class="c1">//  Copyright 2011年 4321.La. All rights reserved.</span>
</span><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="cp">#import &quot;QianQianLyrics.h&quot;</span>
</span><span class='line'><span class="cp">#import &quot;RequestSender.h&quot;</span>
</span><span class='line'><span class="cp">#import &quot;KeyValue_SearchLyrics.h&quot;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">@</span><span class="n">implementation</span> <span class="n">QianQianLyrics</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="n">FOUNDATION_STATIC_INLINE</span> <span class="kt">char</span> <span class="n">SingleDecToHex</span><span class="p">(</span><span class="kt">int</span> <span class="n">dec</span><span class="p">)</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'><span class="err">    </span><span class="n">dec</span> <span class="o">=</span> <span class="n">dec</span> <span class="o">%</span> <span class="mi">16</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="k">if</span><span class="p">(</span><span class="n">dec</span> <span class="o">&lt;</span> <span class="mi">10</span><span class="p">)</span>
</span><span class='line'><span class="err">    </span><span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="k">return</span> <span class="p">(</span><span class="kt">char</span><span class="p">)(</span><span class="n">dec</span><span class="o">+</span><span class="sc">&#39;0&#39;</span><span class="p">);</span>
</span><span class='line'><span class="err">    </span><span class="p">}</span>
</span><span class='line'><span class="err">    </span><span class="kt">char</span> <span class="n">arr</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span><span class="o">=</span><span class="p">{</span><span class="sc">&#39;A&#39;</span><span class="p">,</span><span class="sc">&#39;B&#39;</span><span class="p">,</span><span class="sc">&#39;C&#39;</span><span class="p">,</span><span class="sc">&#39;D&#39;</span><span class="p">,</span><span class="sc">&#39;E&#39;</span><span class="p">,</span><span class="sc">&#39;F&#39;</span><span class="p">};</span>
</span><span class='line'><span class="err">    </span><span class="k">return</span> <span class="n">arr</span><span class="p">[</span><span class="n">dec</span><span class="o">-</span><span class="mi">10</span><span class="p">];</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="n">FOUNDATION_STATIC_INLINE</span> <span class="kt">long</span> <span class="n">Conv</span><span class="p">(</span><span class="kt">long</span> <span class="n">i</span><span class="p">)</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'><span class="err">    </span><span class="kt">long</span> <span class="n">r</span> <span class="o">=</span> <span class="n">i</span> <span class="o">%</span> <span class="mh">0x100000000</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&gt;=</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="n">r</span> <span class="o">&gt;</span> <span class="mh">0x80000000</span><span class="p">)</span>
</span><span class='line'><span class="err">        </span><span class="n">r</span> <span class="o">=</span> <span class="n">r</span> <span class="o">-</span> <span class="mh">0x100000000</span><span class="p">;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="n">r</span> <span class="o">&lt;</span> <span class="mh">0x80000000</span><span class="p">)</span>
</span><span class='line'><span class="err">        </span><span class="n">r</span> <span class="o">=</span> <span class="n">r</span> <span class="o">+</span> <span class="mh">0x100000000</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="k">return</span> <span class="n">r</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="n">FOUNDATION_STATIC_INLINE</span> <span class="n">NSString</span> <span class="o">*</span><span class="n">ttpCode</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="n">artist</span><span class="p">,</span> <span class="n">NSString</span> <span class="o">*</span><span class="n">title</span><span class="p">,</span> <span class="kt">long</span> <span class="n">lrcId</span><span class="p">)</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">bytes</span><span class="o">=</span><span class="p">[[</span><span class="n">artist</span> <span class="nl">stringByAppendingString:</span><span class="n">title</span><span class="p">]</span> <span class="nl">cStringUsingEncoding:</span><span class="n">NSUTF8StringEncoding</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="kt">long</span> <span class="n">len</span><span class="o">=</span> <span class="n">strlen</span><span class="p">(</span><span class="n">bytes</span><span class="p">);</span>
</span><span class='line'><span class="err">    </span><span class="kt">int</span> <span class="o">*</span><span class="n">song</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="o">*</span><span class="p">)</span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="o">*</span><span class="n">len</span><span class="p">);</span>
</span><span class='line'><span class="err">    </span><span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">len</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
</span><span class='line'><span class="err">        </span><span class="n">song</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">bytes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">&amp;</span> <span class="mh">0xff</span><span class="p">;</span><span class="err"> </span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="kt">long</span> <span class="n">intVal1</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">intVal2</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">intVal3</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="n">intVal1</span> <span class="o">=</span> <span class="p">(</span><span class="n">lrcId</span> <span class="o">&amp;</span> <span class="mh">0x0000FF00</span><span class="p">)</span> <span class="o">&gt;&gt;</span> <span class="mi">8</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="k">if</span> <span class="p">((</span><span class="n">lrcId</span> <span class="o">&amp;</span> <span class="mh">0xFF0000</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="n">intVal3</span> <span class="o">=</span> <span class="mh">0xFF</span> <span class="o">&amp;</span> <span class="o">~</span><span class="n">intVal1</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="n">intVal3</span> <span class="o">=</span> <span class="mh">0xFF</span> <span class="o">&amp;</span> <span class="p">((</span><span class="n">lrcId</span> <span class="o">&amp;</span> <span class="mh">0x00FF0000</span><span class="p">)</span> <span class="o">&gt;&gt;</span> <span class="mi">16</span><span class="p">);</span>
</span><span class='line'><span class="err">    </span><span class="p">}</span>
</span><span class='line'><span class="err">    </span><span class="n">intVal3</span> <span class="o">=</span> <span class="n">intVal3</span> <span class="o">|</span> <span class="p">((</span><span class="mh">0xFF</span> <span class="o">&amp;</span> <span class="n">lrcId</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="mi">8</span><span class="p">);</span>
</span><span class='line'><span class="err">    </span><span class="n">intVal3</span> <span class="o">=</span> <span class="n">intVal3</span> <span class="o">&lt;&lt;</span> <span class="mi">8</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="n">intVal3</span> <span class="o">=</span> <span class="n">intVal3</span> <span class="o">|</span> <span class="p">(</span><span class="mh">0xFF</span> <span class="o">&amp;</span> <span class="n">intVal1</span><span class="p">);</span>
</span><span class='line'><span class="err">    </span><span class="n">intVal3</span> <span class="o">=</span> <span class="n">intVal3</span> <span class="o">&lt;&lt;</span> <span class="mi">8</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="k">if</span> <span class="p">((</span><span class="n">lrcId</span> <span class="o">&amp;</span> <span class="mh">0xFF000000</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="n">intVal3</span> <span class="o">=</span> <span class="n">intVal3</span> <span class="o">|</span> <span class="p">(</span><span class="mh">0xFF</span> <span class="o">&amp;</span> <span class="p">(</span><span class="o">~</span><span class="n">lrcId</span><span class="p">));</span>
</span><span class='line'><span class="err">    </span><span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="n">intVal3</span> <span class="o">=</span> <span class="n">intVal3</span> <span class="o">|</span> <span class="p">(</span><span class="mh">0xFF</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">lrcId</span> <span class="o">&gt;&gt;</span> <span class="mi">24</span><span class="p">));</span>
</span><span class='line'><span class="err">    </span><span class="p">}</span>
</span><span class='line'><span class="err">    </span><span class="kt">long</span> <span class="n">uBound</span> <span class="o">=</span> <span class="n">len</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="k">while</span> <span class="p">(</span><span class="n">uBound</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="kt">int</span> <span class="n">c</span> <span class="o">=</span> <span class="n">song</span><span class="p">[</span><span class="n">uBound</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="k">if</span> <span class="p">(</span><span class="n">c</span> <span class="o">&gt;=</span> <span class="mh">0x80</span><span class="p">)</span>
</span><span class='line'><span class="err">            </span><span class="n">c</span> <span class="o">=</span> <span class="n">c</span> <span class="o">-</span> <span class="mh">0x100</span><span class="p">;</span>
</span><span class='line'><span class="err">        </span><span class="n">intVal1</span> <span class="o">=</span> <span class="p">(</span><span class="n">c</span> <span class="o">+</span> <span class="n">intVal2</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0x00000000FFFFFFFF</span><span class="p">;</span>
</span><span class='line'><span class="err">        </span><span class="n">intVal2</span> <span class="o">=</span> <span class="p">(</span><span class="n">intVal2</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="n">uBound</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">+</span> <span class="mi">4</span><span class="p">))</span> <span class="o">&amp;</span> <span class="mh">0x00000000FFFFFFFF</span><span class="p">;</span>
</span><span class='line'><span class="err">        </span><span class="n">intVal2</span> <span class="o">=</span> <span class="p">(</span><span class="n">intVal1</span> <span class="o">+</span> <span class="n">intVal2</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0x00000000FFFFFFFF</span><span class="p">;</span>
</span><span class='line'><span class="err">        </span><span class="n">uBound</span> <span class="o">-=</span> <span class="mi">1</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="p">}</span>
</span><span class='line'><span class="err">    </span><span class="n">uBound</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="n">intVal1</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="k">while</span> <span class="p">(</span><span class="n">uBound</span> <span class="o">&lt;=</span> <span class="n">len</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="kt">long</span> <span class="n">c</span> <span class="o">=</span> <span class="n">song</span><span class="p">[</span><span class="n">uBound</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="k">if</span> <span class="p">(</span><span class="n">c</span> <span class="o">&gt;=</span> <span class="mi">128</span><span class="p">)</span>
</span><span class='line'><span class="err">            </span><span class="n">c</span> <span class="o">=</span> <span class="n">c</span> <span class="o">-</span> <span class="mi">256</span><span class="p">;</span>
</span><span class='line'><span class="err">        </span><span class="kt">long</span> <span class="n">intVal4</span> <span class="o">=</span> <span class="p">(</span><span class="n">c</span> <span class="o">+</span> <span class="n">intVal1</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0x00000000FFFFFFFF</span><span class="p">;</span>
</span><span class='line'><span class="err">        </span><span class="n">intVal1</span> <span class="o">=</span> <span class="p">(</span><span class="n">intVal1</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="n">uBound</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">+</span> <span class="mi">3</span><span class="p">))</span> <span class="o">&amp;</span> <span class="mh">0x00000000FFFFFFFF</span><span class="p">;</span>
</span><span class='line'><span class="err">        </span><span class="n">intVal1</span> <span class="o">=</span> <span class="p">(</span><span class="n">intVal1</span> <span class="o">+</span> <span class="n">intVal4</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0x00000000FFFFFFFF</span><span class="p">;</span>
</span><span class='line'><span class="err">        </span><span class="n">uBound</span> <span class="o">+=</span> <span class="mi">1</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="p">}</span>
</span><span class='line'><span class="err">    </span><span class="kt">long</span> <span class="n">intVal5</span> <span class="o">=</span> <span class="n">Conv</span><span class="p">(</span><span class="n">intVal2</span> <span class="o">^</span> <span class="n">intVal3</span><span class="p">);</span>
</span><span class='line'><span class="err">    </span><span class="n">intVal5</span> <span class="o">=</span> <span class="n">Conv</span><span class="p">(</span><span class="n">intVal5</span> <span class="o">+</span> <span class="p">(</span><span class="n">intVal1</span> <span class="o">|</span> <span class="n">lrcId</span><span class="p">));</span>
</span><span class='line'><span class="err">    </span><span class="n">intVal5</span> <span class="o">=</span> <span class="n">Conv</span><span class="p">(</span><span class="n">intVal5</span> <span class="o">*</span> <span class="p">(</span><span class="n">intVal1</span> <span class="o">|</span> <span class="n">intVal3</span><span class="p">));</span>
</span><span class='line'><span class="err">    </span><span class="n">intVal5</span> <span class="o">=</span> <span class="n">Conv</span><span class="p">(</span><span class="n">intVal5</span> <span class="o">*</span> <span class="p">(</span><span class="n">intVal2</span> <span class="o">^</span> <span class="n">lrcId</span><span class="p">));</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="kt">long</span> <span class="n">intVal6</span> <span class="o">=</span> <span class="n">intVal5</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="k">if</span> <span class="p">(</span><span class="n">intVal6</span> <span class="o">&gt;</span> <span class="mh">0x80000000</span><span class="p">)</span> <span class="n">intVal5</span> <span class="o">=</span> <span class="n">intVal6</span> <span class="o">-</span> <span class="mh">0x100000000</span><span class="p">;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="k">return</span> <span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithFormat:</span><span class="s">@&quot;%d&quot;</span><span class="p">,</span><span class="n">intVal5</span><span class="p">];</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="n">FOUNDATION_STATIC_INLINE</span> <span class="n">NSMutableString</span><span class="o">*</span> <span class="n">SetToHexString</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="n">str</span><span class="p">)</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">s</span> <span class="o">=</span> <span class="p">[</span><span class="n">str</span> <span class="nl">cStringUsingEncoding:</span><span class="n">NSUnicodeStringEncoding</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="n">NSMutableString</span> <span class="o">*</span><span class="n">result</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSMutableString</span> <span class="n">string</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="p">)</span> <span class="k">return</span> <span class="nb">NULL</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="kt">int</span> <span class="n">n</span><span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)[</span><span class="n">str</span> <span class="nl">lengthOfBytesUsingEncoding:</span><span class="n">NSUnicodeStringEncoding</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="k">for</span><span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="n">i</span><span class="o">&lt;</span><span class="n">n</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
</span><span class='line'><span class="err">    </span><span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="kt">unsigned</span> <span class="n">ord</span><span class="o">=</span><span class="p">(</span><span class="kt">unsigned</span><span class="p">)</span><span class="n">s</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="k">if</span> <span class="p">(</span><span class="n">j</span><span class="o">+</span><span class="mi">2</span><span class="o">&gt;</span><span class="mi">1022</span><span class="p">)</span>
</span><span class='line'><span class="err">        </span><span class="p">{</span>
</span><span class='line'><span class="err">            </span><span class="k">return</span> <span class="nb">NULL</span><span class="p">;</span>
</span><span class='line'><span class="err">        </span><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="p">[</span><span class="n">result</span> <span class="nl">appendFormat:</span><span class="s">@&quot;%c%c&quot;</span><span class="p">,</span><span class="n">SingleDecToHex</span><span class="p">((</span><span class="n">ord</span><span class="o">-</span><span class="n">ord</span><span class="o">%</span><span class="mi">16</span><span class="p">)</span><span class="o">/</span><span class="mi">16</span><span class="p">),</span><span class="n">SingleDecToHex</span><span class="p">(</span><span class="n">ord</span><span class="o">%</span><span class="mi">16</span><span class="p">)];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="p">}</span>
</span><span class='line'><span class="err">    </span><span class="k">return</span> <span class="n">result</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="o">+</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nl">getLyricsListByTitle:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">Title</span> <span class="nl">getLyricsListByArtist:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">Artist</span> <span class="nl">AddToArrayController:</span><span class="p">(</span><span class="n">NSArrayController</span><span class="o">*</span><span class="p">)</span><span class="n">array_controller</span> <span class="nl">Server:</span><span class="p">(</span><span class="n">NSInteger</span><span class="p">)</span><span class="n">server</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'><span class="err">    </span><span class="n">NSUserDefaults</span> <span class="o">*</span><span class="n">userDefaults</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSUserDefaults</span> <span class="n">standardUserDefaults</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="p">[</span><span class="n">userDefaults</span> <span class="nl">setInteger:</span><span class="n">server</span> <span class="nl">forKey:</span><span class="s">@&quot;LyricsServer&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="p">[</span><span class="n">array_controller</span> <span class="nl">removeObjects:</span><span class="p">[</span><span class="n">array_controller</span> <span class="n">arrangedObjects</span><span class="p">]];</span>
</span><span class='line'><span class="err">    </span><span class="k">@try</span> <span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="c1">//char CharToDelete[] =  {&#39; &#39;, &#39;`&#39;, &#39;~&#39;, &#39;!&#39;, &#39;@&#39;, &#39;#&#39;, &#39;$&#39;, &#39;%&#39;, &#39;^&#39;, &#39;&amp;&#39;, &#39;*&#39;, &#39;(&#39;, &#39;)&#39;, &#39;-&#39;, &#39;_&#39;, &#39;=&#39;,&#39;+&#39;, &#39;,&#39;, &#39;&lt;&#39;, &#39;.&#39;, &#39;&gt;&#39;, &#39;/&#39;, &#39;?&#39;, &#39;;&#39;, &#39;:&#39;, &#39;\&quot;&#39;, &#39;[&#39;, &#39;{&#39;, &#39;]&#39;, &#39;}&#39;, &#39;\\&#39;, &#39;|&#39;};</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSArray</span> <span class="o">*</span><span class="n">CharToDelete</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSArray</span> <span class="nl">arrayWithObjects:</span><span class="s">@&quot;,&quot;</span><span class="p">,</span><span class="s">@&quot;.&quot;</span><span class="p">,</span><span class="s">@&quot;&#39;&quot;</span><span class="p">,</span><span class="s">@&quot;</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">,</span><span class="s">@&quot; &quot;</span><span class="p">,</span> <span class="s">@&quot;`&quot;</span><span class="p">,</span> <span class="s">@&quot;~&quot;</span><span class="p">,</span> <span class="s">@&quot;!&quot;</span><span class="p">,</span> <span class="s">@&quot;@&quot;</span><span class="p">,</span> <span class="s">@&quot;#&quot;</span><span class="p">,</span> <span class="s">@&quot;$&quot;</span><span class="p">,</span> <span class="s">@&quot;%&quot;</span><span class="p">,</span> <span class="s">@&quot;^&quot;</span><span class="p">,</span> <span class="s">@&quot;&amp;&quot;</span><span class="p">,</span> <span class="s">@&quot;*&quot;</span><span class="p">,</span> <span class="s">@&quot;(&quot;</span><span class="p">,</span> <span class="s">@&quot;)&quot;</span><span class="p">,</span> <span class="s">@&quot;-&quot;</span><span class="p">,</span> <span class="s">@&quot;_&quot;</span><span class="p">,</span> <span class="s">@&quot;=&quot;</span><span class="p">,</span> <span class="s">@&quot;+&quot;</span><span class="p">,</span> <span class="s">@&quot;, @&quot;</span><span class="p">,</span> <span class="s">@&quot;&lt;&quot;</span><span class="p">,</span> <span class="s">@&quot;.&quot;</span><span class="p">,</span> <span class="s">@&quot;&gt;&quot;</span><span class="p">,</span> <span class="s">@&quot;/&quot;</span><span class="p">,</span> <span class="s">@&quot;?&quot;</span><span class="p">,</span> <span class="s">@&quot;;&quot;</span><span class="p">,</span> <span class="s">@&quot;:&quot;</span><span class="p">,</span> <span class="s">@&quot;</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">,</span> <span class="s">@&quot;[&quot;</span><span class="p">,</span> <span class="s">@&quot;{&quot;</span><span class="p">,</span> <span class="s">@&quot;]&quot;</span><span class="p">,</span> <span class="s">@&quot;}&quot;</span><span class="p">,</span> <span class="s">@&quot;</span><span class="se">\\</span><span class="s">&quot;</span><span class="p">,</span> <span class="s">@&quot;|&quot;</span><span class="p">,</span> <span class="s">@&quot;€&quot;</span><span class="p">,</span><span class="s">@&quot;　&quot;</span><span class="p">,</span> <span class="s">@&quot;。&quot;</span><span class="p">,</span> <span class="s">@&quot;，&quot;</span><span class="p">,</span> <span class="s">@&quot;、&quot;</span><span class="p">,</span> <span class="s">@&quot;；&quot;</span><span class="p">,</span> <span class="s">@&quot;：&quot;</span><span class="p">,</span> <span class="s">@&quot;？&quot;</span><span class="p">,</span> <span class="s">@&quot;！&quot;</span><span class="p">,</span> <span class="s">@&quot;…&quot;</span><span class="p">,</span> <span class="s">@&quot;—&quot;</span><span class="p">,</span> <span class="s">@&quot;·&quot;</span><span class="p">,</span><span class="s">@&quot;ˉ&quot;</span><span class="p">,</span> <span class="s">@&quot;¨&quot;</span><span class="p">,</span> <span class="s">@&quot;‘&quot;</span><span class="p">,</span> <span class="s">@&quot;’&quot;</span><span class="p">,</span> <span class="s">@&quot;“&quot;</span><span class="p">,</span> <span class="s">@&quot;”&quot;</span><span class="p">,</span> <span class="s">@&quot;々&quot;</span><span class="p">,</span> <span class="s">@&quot;～&quot;</span><span class="p">,</span> <span class="s">@&quot;‖&quot;</span><span class="p">,</span> <span class="s">@&quot;∶&quot;</span><span class="p">,</span> <span class="s">@&quot;＂&quot;</span><span class="p">,</span> <span class="s">@&quot;＇&quot;</span><span class="p">,</span><span class="s">@&quot;｀&quot;</span><span class="p">,</span> <span class="s">@&quot;｜&quot;</span><span class="p">,</span> <span class="s">@&quot;〃&quot;</span><span class="p">,</span> <span class="s">@&quot;〔&quot;</span><span class="p">,</span> <span class="s">@&quot;〕&quot;</span><span class="p">,</span> <span class="s">@&quot;〈&quot;</span><span class="p">,</span> <span class="s">@&quot;〉&quot;</span><span class="p">,</span> <span class="s">@&quot;《&quot;</span><span class="p">,</span> <span class="s">@&quot;》&quot;</span><span class="p">,</span> <span class="s">@&quot;「&quot;</span><span class="p">,</span> <span class="s">@&quot;」&quot;</span><span class="p">,</span><span class="err">@</span> <span class="s">&quot;『&quot;</span><span class="p">,</span> <span class="s">@&quot;』&quot;</span><span class="p">,</span> <span class="s">@&quot;．&quot;</span><span class="p">,</span> <span class="s">@&quot;〖&quot;</span><span class="p">,</span> <span class="s">@&quot;〗&quot;</span><span class="p">,</span> <span class="s">@&quot;【&quot;</span><span class="p">,</span> <span class="s">@&quot;】&quot;</span><span class="p">,</span> <span class="s">@&quot;（&quot;</span><span class="p">,</span> <span class="s">@&quot;）&quot;</span><span class="p">,</span> <span class="s">@&quot;［&quot;</span><span class="p">,</span> <span class="s">@&quot;］&quot;</span><span class="p">,</span><span class="s">@&quot;｛&quot;</span><span class="p">,</span> <span class="s">@&quot;｝&quot;</span><span class="p">,</span> <span class="s">@&quot;≈&quot;</span><span class="p">,</span> <span class="s">@&quot;≡&quot;</span><span class="p">,</span> <span class="s">@&quot;≠&quot;</span><span class="p">,</span> <span class="s">@&quot;＝&quot;</span><span class="p">,</span> <span class="s">@&quot;≤&quot;</span><span class="p">,</span> <span class="s">@&quot;≥&quot;</span><span class="p">,</span> <span class="s">@&quot;＜&quot;</span><span class="p">,</span> <span class="s">@&quot;＞&quot;</span><span class="p">,</span> <span class="s">@&quot;≮&quot;</span><span class="p">,</span> <span class="s">@&quot;≯&quot;</span><span class="p">,</span> <span class="s">@&quot;∷&quot;</span><span class="p">,</span> <span class="s">@&quot;±&quot;</span><span class="p">,</span><span class="s">@&quot;＋&quot;</span><span class="p">,</span> <span class="s">@&quot;－&quot;</span><span class="p">,</span> <span class="s">@&quot;×&quot;</span><span class="p">,</span> <span class="s">@&quot;÷&quot;</span><span class="p">,</span> <span class="s">@&quot;／&quot;</span><span class="p">,</span> <span class="s">@&quot;∫&quot;</span><span class="p">,</span> <span class="s">@&quot;∮&quot;</span><span class="p">,</span> <span class="s">@&quot;∝&quot;</span><span class="p">,</span> <span class="s">@&quot;∞&quot;</span><span class="p">,</span> <span class="s">@&quot;∧&quot;</span><span class="p">,</span> <span class="s">@&quot;∨&quot;</span><span class="p">,</span> <span class="s">@&quot;∑&quot;</span><span class="p">,</span> <span class="s">@&quot;∏&quot;</span><span class="p">,</span> <span class="s">@&quot;∪&quot;</span><span class="p">,</span><span class="s">@&quot;∩&quot;</span><span class="p">,</span> <span class="s">@&quot;∈&quot;</span><span class="p">,</span> <span class="s">@&quot;∵&quot;</span><span class="p">,</span> <span class="s">@&quot;∴&quot;</span><span class="p">,</span> <span class="s">@&quot;⊥&quot;</span><span class="p">,</span> <span class="s">@&quot;∥&quot;</span><span class="p">,</span> <span class="s">@&quot;∠&quot;</span><span class="p">,</span> <span class="s">@&quot;⌒&quot;</span><span class="p">,</span> <span class="s">@&quot;⊙&quot;</span><span class="p">,</span> <span class="s">@&quot;≌&quot;</span><span class="p">,</span> <span class="s">@&quot;∽&quot;</span><span class="p">,</span> <span class="s">@&quot;√&quot;</span><span class="p">,</span> <span class="s">@&quot;§&quot;</span><span class="p">,</span> <span class="s">@&quot;№&quot;</span><span class="p">,</span><span class="s">@&quot;☆&quot;</span><span class="p">,</span> <span class="s">@&quot;★&quot;</span><span class="p">,</span> <span class="s">@&quot;○&quot;</span><span class="p">,</span> <span class="s">@&quot;●&quot;</span><span class="p">,</span> <span class="s">@&quot;◎&quot;</span><span class="p">,</span> <span class="s">@&quot;◇&quot;</span><span class="p">,</span> <span class="s">@&quot;◆&quot;</span><span class="p">,</span> <span class="s">@&quot;□&quot;</span><span class="p">,</span> <span class="s">@&quot;℃&quot;</span><span class="p">,</span> <span class="s">@&quot;‰&quot;</span><span class="p">,</span> <span class="s">@&quot;■&quot;</span><span class="p">,</span> <span class="s">@&quot;△&quot;</span><span class="p">,</span> <span class="s">@&quot;▲&quot;</span><span class="p">,</span> <span class="s">@&quot;※&quot;</span><span class="p">,</span> <span class="s">@&quot;→&quot;</span><span class="p">,</span><span class="s">@&quot;←&quot;</span><span class="p">,</span> <span class="s">@&quot;↑&quot;</span><span class="p">,</span> <span class="s">@&quot;↓&quot;</span><span class="p">,</span> <span class="s">@&quot;〓&quot;</span><span class="p">,</span> <span class="s">@&quot;¤&quot;</span><span class="p">,</span> <span class="s">@&quot;°&quot;</span><span class="p">,</span> <span class="s">@&quot;＃&quot;</span><span class="p">,</span> <span class="s">@&quot;＆&quot;</span><span class="p">,</span> <span class="s">@&quot;＠&quot;</span><span class="p">,</span> <span class="s">@&quot;＼&quot;</span><span class="p">,</span> <span class="s">@&quot;︿&quot;</span><span class="p">,</span> <span class="s">@&quot;＿&quot;</span><span class="p">,</span> <span class="s">@&quot;￣&quot;</span><span class="p">,</span> <span class="s">@&quot;―&quot;</span><span class="p">,</span><span class="s">@&quot;♂&quot;</span><span class="p">,</span> <span class="s">@&quot;♀&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅰ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅱ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅲ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅳ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅴ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅵ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅶ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅷ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅸ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅹ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅺ&quot;</span><span class="p">,</span><span class="s">@&quot;Ⅻ&quot;</span><span class="p">,</span> <span class="s">@&quot;⒈&quot;</span><span class="p">,</span> <span class="s">@&quot;⒉&quot;</span><span class="p">,</span> <span class="s">@&quot;⒊&quot;</span><span class="p">,</span> <span class="s">@&quot;⒋&quot;</span><span class="p">,</span> <span class="s">@&quot;⒌&quot;</span><span class="p">,</span> <span class="s">@&quot;⒍&quot;</span><span class="p">,</span> <span class="s">@&quot;⒎&quot;</span><span class="p">,</span> <span class="s">@&quot;⒏&quot;</span><span class="p">,</span> <span class="s">@&quot;⒐&quot;</span><span class="p">,</span> <span class="s">@&quot;⒑&quot;</span><span class="p">,</span> <span class="s">@&quot;⒒&quot;</span><span class="p">,</span> <span class="s">@&quot;⒓&quot;</span><span class="p">,</span><span class="s">@&quot;⒔&quot;</span><span class="p">,</span> <span class="s">@&quot;⒕&quot;</span><span class="p">,</span> <span class="s">@&quot;⒖&quot;</span><span class="p">,</span> <span class="s">@&quot;⒗&quot;</span><span class="p">,</span> <span class="s">@&quot;⒘&quot;</span><span class="p">,</span> <span class="s">@&quot;⒙&quot;</span><span class="p">,</span> <span class="s">@&quot;⒚&quot;</span><span class="p">,</span> <span class="s">@&quot;⒛&quot;</span><span class="p">,</span> <span class="s">@&quot;㈠&quot;</span><span class="p">,</span> <span class="s">@&quot;㈡&quot;</span><span class="p">,</span> <span class="s">@&quot;㈢&quot;</span><span class="p">,</span> <span class="s">@&quot;㈣&quot;</span><span class="p">,</span> <span class="s">@&quot;㈤&quot;</span><span class="p">,</span><span class="s">@&quot;㈥&quot;</span><span class="p">,</span> <span class="s">@&quot;㈦&quot;</span><span class="p">,</span> <span class="s">@&quot;㈧&quot;</span><span class="p">,</span> <span class="s">@&quot;㈨&quot;</span><span class="p">,</span> <span class="s">@&quot;㈩&quot;</span><span class="p">,</span> <span class="s">@&quot;①&quot;</span><span class="p">,</span> <span class="s">@&quot;②&quot;</span><span class="p">,</span> <span class="s">@&quot;③&quot;</span><span class="p">,</span> <span class="s">@&quot;④&quot;</span><span class="p">,</span> <span class="s">@&quot;⑤&quot;</span><span class="p">,</span> <span class="s">@&quot;⑥&quot;</span><span class="p">,</span> <span class="s">@&quot;⑦&quot;</span><span class="p">,</span> <span class="s">@&quot;⑧&quot;</span><span class="p">,</span> <span class="s">@&quot;⑨&quot;</span><span class="p">,</span> <span class="s">@&quot;⑩&quot;</span><span class="p">,</span><span class="s">@&quot;⑴&quot;</span><span class="p">,</span> <span class="s">@&quot;⑵&quot;</span><span class="p">,</span> <span class="s">@&quot;⑶&quot;</span><span class="p">,</span> <span class="s">@&quot;⑷&quot;</span><span class="p">,</span> <span class="s">@&quot;⑸&quot;</span><span class="p">,</span> <span class="s">@&quot;⑹&quot;</span><span class="p">,</span> <span class="s">@&quot;⑺&quot;</span><span class="p">,</span> <span class="s">@&quot;⑻&quot;</span><span class="p">,</span> <span class="s">@&quot;⑼&quot;</span><span class="p">,</span> <span class="s">@&quot;⑽&quot;</span><span class="p">,</span> <span class="s">@&quot;⑾&quot;</span><span class="p">,</span> <span class="s">@&quot;⑿&quot;</span><span class="p">,</span> <span class="s">@&quot;⒀&quot;</span><span class="p">,</span><span class="s">@&quot;⒁&quot;</span><span class="p">,</span> <span class="s">@&quot;⒂&quot;</span><span class="p">,</span> <span class="s">@&quot;⒃&quot;</span><span class="p">,</span> <span class="s">@&quot;⒄&quot;</span><span class="p">,</span> <span class="s">@&quot;⒅&quot;</span><span class="p">,</span> <span class="s">@&quot;⒆&quot;</span><span class="p">,</span> <span class="s">@&quot;⒇&quot;</span><span class="p">,</span> <span class="s">@&quot;┌&quot;</span><span class="p">,</span> <span class="s">@&quot;┍&quot;</span><span class="p">,</span> <span class="s">@&quot;┎&quot;</span><span class="p">,</span> <span class="s">@&quot;┏&quot;</span><span class="p">,</span> <span class="s">@&quot;┐&quot;</span><span class="p">,</span> <span class="s">@&quot;┑&quot;</span><span class="p">,</span> <span class="s">@&quot;┒&quot;</span><span class="p">,</span><span class="s">@&quot;┓&quot;</span><span class="p">,</span> <span class="s">@&quot;─&quot;</span><span class="p">,</span> <span class="s">@&quot;┄&quot;</span><span class="p">,</span> <span class="s">@&quot;┈&quot;</span><span class="p">,</span> <span class="s">@&quot;└&quot;</span><span class="p">,</span> <span class="s">@&quot;┕&quot;</span><span class="p">,</span> <span class="s">@&quot;┖&quot;</span><span class="p">,</span> <span class="s">@&quot;┗&quot;</span><span class="p">,</span> <span class="s">@&quot;┘&quot;</span><span class="p">,</span> <span class="s">@&quot;┙&quot;</span><span class="p">,</span> <span class="s">@&quot;┚&quot;</span><span class="p">,</span> <span class="s">@&quot;┛&quot;</span><span class="p">,</span> <span class="s">@&quot;━&quot;</span><span class="p">,</span> <span class="s">@&quot;┅&quot;</span><span class="p">,</span> <span class="s">@&quot;┉&quot;</span><span class="p">,</span><span class="s">@&quot;├&quot;</span><span class="p">,</span> <span class="s">@&quot;┝&quot;</span><span class="p">,</span> <span class="s">@&quot;┞&quot;</span><span class="p">,</span> <span class="s">@&quot;┟&quot;</span><span class="p">,</span> <span class="s">@&quot;┠&quot;</span><span class="p">,</span> <span class="s">@&quot;┡&quot;</span><span class="p">,</span> <span class="s">@&quot;┢&quot;</span><span class="p">,</span> <span class="s">@&quot;┣&quot;</span><span class="p">,</span> <span class="s">@&quot;│&quot;</span><span class="p">,</span> <span class="s">@&quot;┆&quot;</span><span class="p">,</span> <span class="s">@&quot;┊&quot;</span><span class="p">,</span> <span class="s">@&quot;┤&quot;</span><span class="p">,</span> <span class="s">@&quot;┥&quot;</span><span class="p">,</span> <span class="s">@&quot;┦&quot;</span><span class="p">,</span> <span class="s">@&quot;┧&quot;</span><span class="p">,</span> <span class="s">@&quot;┨&quot;</span><span class="p">,</span><span class="s">@&quot;┩&quot;</span><span class="p">,</span> <span class="s">@&quot;┪&quot;</span><span class="p">,</span> <span class="s">@&quot;┫&quot;</span><span class="p">,</span> <span class="s">@&quot;┃&quot;</span><span class="p">,</span> <span class="s">@&quot;┇&quot;</span><span class="p">,</span> <span class="s">@&quot;┋&quot;</span><span class="p">,</span> <span class="s">@&quot;┬&quot;</span><span class="p">,</span> <span class="s">@&quot;┭&quot;</span><span class="p">,</span> <span class="s">@&quot;┮&quot;</span><span class="p">,</span> <span class="s">@&quot;┯&quot;</span><span class="p">,</span> <span class="s">@&quot;┰&quot;</span><span class="p">,</span> <span class="s">@&quot;┱&quot;</span><span class="p">,</span> <span class="s">@&quot;┲&quot;</span><span class="p">,</span> <span class="s">@&quot;┳&quot;</span><span class="p">,</span> <span class="s">@&quot;┴&quot;</span><span class="p">,</span> <span class="s">@&quot;┵&quot;</span><span class="p">,</span><span class="s">@&quot;┶&quot;</span><span class="p">,</span> <span class="s">@&quot;┷&quot;</span><span class="p">,</span> <span class="s">@&quot;┸&quot;</span><span class="p">,</span> <span class="s">@&quot;┹&quot;</span><span class="p">,</span> <span class="s">@&quot;┺&quot;</span><span class="p">,</span> <span class="s">@&quot;┻&quot;</span><span class="p">,</span> <span class="s">@&quot;┼&quot;</span><span class="p">,</span> <span class="s">@&quot;┽&quot;</span><span class="p">,</span> <span class="s">@&quot;┾&quot;</span><span class="p">,</span> <span class="s">@&quot;┿&quot;</span><span class="p">,</span> <span class="s">@&quot;╀&quot;</span><span class="p">,</span> <span class="s">@&quot;╁&quot;</span><span class="p">,</span> <span class="s">@&quot;╂&quot;</span><span class="p">,</span> <span class="s">@&quot;╃&quot;</span><span class="p">,</span> <span class="s">@&quot;╄&quot;</span><span class="p">,</span> <span class="s">@&quot;╅&quot;</span><span class="p">,</span><span class="s">@&quot;╆&quot;</span><span class="p">,</span> <span class="s">@&quot;╇&quot;</span><span class="p">,</span> <span class="s">@&quot;╈&quot;</span><span class="p">,</span> <span class="s">@&quot;╉&quot;</span><span class="p">,</span> <span class="s">@&quot;╊&quot;</span><span class="p">,</span> <span class="s">@&quot;╋&quot;</span><span class="p">,</span> <span class="nb">nil</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSMutableString</span> <span class="o">*</span><span class="n">_Title</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSMutableString</span> <span class="nl">stringWithString:</span> <span class="p">[</span><span class="n">Title</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot; &quot;</span> <span class="nl">withString:</span><span class="s">@&quot;&quot;</span><span class="p">]];</span>
</span><span class='line'><span class="err">        </span><span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="p">[</span><span class="n">CharToDelete</span> <span class="n">count</span><span class="p">];</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
</span><span class='line'><span class="err">            </span><span class="p">[</span><span class="n">_Title</span> <span class="nl">setString:</span><span class="p">[</span><span class="n">_Title</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithString:</span><span class="p">[</span><span class="n">CharToDelete</span> <span class="nl">objectAtIndex:</span><span class="n">i</span><span class="p">]]</span> <span class="nl">withString:</span><span class="s">@&quot;&quot;</span><span class="p">]];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="p">[</span><span class="n">_Title</span> <span class="nl">setString:</span><span class="p">[</span><span class="n">_Title</span> <span class="n">lowercaseString</span><span class="p">]];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSMutableString</span> <span class="o">*</span><span class="n">_Artist</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSMutableString</span> <span class="nl">stringWithString:</span><span class="p">[</span><span class="n">Artist</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot; &quot;</span> <span class="nl">withString:</span><span class="s">@&quot;&quot;</span><span class="p">]];</span>
</span><span class='line'><span class="err">        </span><span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">32</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
</span><span class='line'><span class="err">            </span><span class="p">[</span><span class="n">_Artist</span> <span class="nl">setString:</span><span class="p">[</span><span class="n">_Artist</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithString:</span><span class="p">[</span><span class="n">CharToDelete</span> <span class="nl">objectAtIndex:</span><span class="n">i</span><span class="p">]]</span> <span class="nl">withString:</span><span class="s">@&quot;&quot;</span><span class="p">]];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="p">[</span><span class="n">_Artist</span> <span class="nl">setString:</span><span class="p">[</span><span class="n">_Artist</span> <span class="n">lowercaseString</span><span class="p">]];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSString</span> <span class="o">*</span><span class="n">url</span><span class="p">;</span>
</span><span class='line'><span class="err">        </span><span class="k">if</span> <span class="p">(</span><span class="n">server</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
</span><span class='line'><span class="err">        </span><span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="n">url</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithFormat:</span><span class="s">@&quot;http://ttlrccnc.qianqian.com/dll/lyricsvr.dll?sh?Artist=%@&amp;Title=%@&amp;Flags=0&quot;</span><span class="p">,</span><span class="n">SetToHexString</span><span class="p">(</span><span class="n">_Artist</span><span class="p">),</span><span class="n">SetToHexString</span><span class="p">(</span><span class="n">_Title</span><span class="p">)];</span>
</span><span class='line'><span class="err">        </span><span class="p">}</span>
</span><span class='line'><span class="err">        </span><span class="k">else</span>
</span><span class='line'><span class="err">        </span><span class="p">{</span>
</span><span class='line'><span class="err">            </span><span class="n">url</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithFormat:</span><span class="s">@&quot;http://ttlrcct.qianqian.com/dll/lyricsvr.dll?sh?Artist=%@&amp;Title=%@&amp;Flags=0&quot;</span><span class="p">,</span><span class="n">SetToHexString</span><span class="p">(</span><span class="n">_Artist</span><span class="p">),</span><span class="n">SetToHexString</span><span class="p">(</span><span class="n">_Title</span><span class="p">)];</span>
</span><span class='line'><span class="err">        </span><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSString</span> <span class="o">*</span><span class="n">result</span> <span class="o">=</span> <span class="p">[</span><span class="n">RequestSender</span> <span class="nl">sendRequest:</span><span class="n">url</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSArray</span> <span class="o">*</span><span class="n">tempArray</span> <span class="o">=</span> <span class="p">[</span><span class="n">result</span> <span class="nl">componentsSeparatedByString:</span><span class="s">@&quot;&lt;lrc&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">i</span><span class="o">&lt;</span><span class="p">[</span><span class="n">tempArray</span> <span class="n">count</span><span class="p">];</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
</span><span class='line'><span class="err">        </span><span class="p">{</span>
</span><span class='line'><span class="err">            </span><span class="cm">/*</span>
</span><span class='line'><span class="cm">             之前用的自带的XML Parser，结果发现当XML的属性含有两个空格的时候，会自动变成一个空格，导致后期加密ttpCode得到的结果不对</span>
</span><span class='line'><span class="cm">             很奇怪的BUG，坑爹的苹果库。字符串处理吧……</span>
</span><span class='line'><span class="cm">             */</span>
</span><span class='line'><span class="err">            </span><span class="n">NSString</span> <span class="o">*</span><span class="n">r</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithString:</span><span class="p">[</span><span class="n">tempArray</span> <span class="nl">objectAtIndex:</span><span class="n">i</span><span class="p">]];</span>
</span><span class='line'><span class="err">            </span><span class="n">NSString</span> <span class="o">*</span><span class="n">lrcID</span> <span class="o">=</span> <span class="p">[</span><span class="n">r</span> <span class="nl">substringFromIndex:</span><span class="p">[</span><span class="n">r</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;id=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">].</span><span class="n">location</span> <span class="o">+</span> <span class="mi">4</span><span class="p">];</span>
</span><span class='line'><span class="err">            </span><span class="n">lrcID</span> <span class="o">=</span> <span class="p">[</span><span class="n">lrcID</span> <span class="nl">substringToIndex:</span><span class="p">[</span><span class="n">lrcID</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;</span><span class="se">\&quot;</span><span class="s"> arti&quot;</span><span class="p">].</span><span class="n">location</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">            </span><span class="n">NSString</span> <span class="o">*</span><span class="n">artist</span> <span class="o">=</span> <span class="p">[</span><span class="n">r</span> <span class="nl">substringFromIndex:</span><span class="p">[</span><span class="n">r</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;artist=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">].</span><span class="n">location</span> <span class="o">+</span> <span class="mi">8</span><span class="p">];</span>
</span><span class='line'><span class="err">            </span><span class="n">artist</span> <span class="o">=</span> <span class="p">[</span><span class="n">artist</span> <span class="nl">substringToIndex:</span><span class="p">[</span><span class="n">artist</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;</span><span class="se">\&quot;</span><span class="s"> title&quot;</span><span class="p">].</span><span class="n">location</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">            </span><span class="n">NSString</span> <span class="o">*</span><span class="n">title</span> <span class="o">=</span> <span class="p">[</span><span class="n">r</span> <span class="nl">substringFromIndex:</span><span class="p">[</span><span class="n">r</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;title=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">].</span><span class="n">location</span> <span class="o">+</span> <span class="mi">7</span><span class="p">];</span>
</span><span class='line'><span class="err">            </span><span class="n">title</span> <span class="o">=</span> <span class="p">[</span><span class="n">title</span> <span class="nl">substringToIndex:</span><span class="p">[</span><span class="n">title</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;</span><span class="se">\&quot;</span><span class="s">&gt;&lt;/lrc&quot;</span><span class="p">].</span><span class="n">location</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">            </span><span class="n">title</span> <span class="o">=</span> <span class="p">[</span><span class="n">title</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot;&amp;apos;&quot;</span> <span class="nl">withString:</span><span class="s">@&quot;&#39;&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err">            </span><span class="n">artist</span> <span class="o">=</span> <span class="p">[</span><span class="n">artist</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot;&amp;apos;&quot;</span> <span class="nl">withString:</span><span class="s">@&quot;&#39;&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err">            </span><span class="n">title</span> <span class="o">=</span> <span class="p">[</span><span class="n">title</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot;&amp;quot;&quot;</span> <span class="nl">withString:</span><span class="s">@&quot;</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err">            </span><span class="n">artist</span> <span class="o">=</span> <span class="p">[</span><span class="n">artist</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot;&amp;quot;&quot;</span> <span class="nl">withString:</span><span class="s">@&quot;</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err">            </span><span class="n">title</span> <span class="o">=</span> <span class="p">[</span><span class="n">title</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot;&amp;amp;&quot;</span> <span class="nl">withString:</span><span class="s">@&quot;&amp;&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err">            </span><span class="n">artist</span> <span class="o">=</span> <span class="p">[</span><span class="n">artist</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot;&amp;amp;&quot;</span> <span class="nl">withString:</span><span class="s">@&quot;&amp;&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err">            </span><span class="n">KeyValue_SearchLyrics</span><span class="o">*</span> <span class="n">keyValue_SearchLyrics</span> <span class="o">=</span> <span class="p">[[</span><span class="n">KeyValue_SearchLyrics</span> <span class="n">alloc</span><span class="p">]</span> <span class="nl">initWithID:</span><span class="n">lrcID</span> <span class="nl">initWithTitle:</span><span class="n">title</span> <span class="nl">initWithArtist:</span><span class="n">artist</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">            </span><span class="p">[</span><span class="n">array_controller</span> <span class="nl">addObject:</span><span class="n">keyValue_SearchLyrics</span><span class="p">];</span>
</span><span class='line'><span class="err">            </span><span class="p">[</span><span class="n">keyValue_SearchLyrics</span> <span class="n">release</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="p">}</span>
</span><span class='line'><span class="err">    </span><span class="k">@catch</span> <span class="p">(</span><span class="n">NSException</span> <span class="o">*</span><span class="n">exception</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="k">return</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="o">+</span><span class="p">(</span><span class="n">NSString</span><span class="o">*</span><span class="p">)</span><span class="nl">getLyricsByTitle:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">Title</span> <span class="nl">getLyricsByArtist:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">Artist</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'><span class="err">    </span><span class="k">@try</span> <span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="n">NSArray</span> <span class="o">*</span><span class="n">CharToDelete</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSArray</span> <span class="nl">arrayWithObjects:</span><span class="s">@&quot;,&quot;</span><span class="p">,</span><span class="s">@&quot;.&quot;</span><span class="p">,</span><span class="s">@&quot;&#39;&quot;</span><span class="p">,</span><span class="s">@&quot;</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">,</span><span class="s">@&quot; &quot;</span><span class="p">,</span> <span class="s">@&quot;`&quot;</span><span class="p">,</span> <span class="s">@&quot;~&quot;</span><span class="p">,</span> <span class="s">@&quot;!&quot;</span><span class="p">,</span> <span class="s">@&quot;@&quot;</span><span class="p">,</span> <span class="s">@&quot;#&quot;</span><span class="p">,</span> <span class="s">@&quot;$&quot;</span><span class="p">,</span> <span class="s">@&quot;%&quot;</span><span class="p">,</span> <span class="s">@&quot;^&quot;</span><span class="p">,</span> <span class="s">@&quot;&amp;&quot;</span><span class="p">,</span> <span class="s">@&quot;*&quot;</span><span class="p">,</span> <span class="s">@&quot;(&quot;</span><span class="p">,</span> <span class="s">@&quot;)&quot;</span><span class="p">,</span> <span class="s">@&quot;-&quot;</span><span class="p">,</span> <span class="s">@&quot;_&quot;</span><span class="p">,</span> <span class="s">@&quot;=&quot;</span><span class="p">,</span> <span class="s">@&quot;+&quot;</span><span class="p">,</span> <span class="s">@&quot;, @&quot;</span><span class="p">,</span> <span class="s">@&quot;&lt;&quot;</span><span class="p">,</span> <span class="s">@&quot;.&quot;</span><span class="p">,</span> <span class="s">@&quot;&gt;&quot;</span><span class="p">,</span> <span class="s">@&quot;/&quot;</span><span class="p">,</span> <span class="s">@&quot;?&quot;</span><span class="p">,</span> <span class="s">@&quot;;&quot;</span><span class="p">,</span> <span class="s">@&quot;:&quot;</span><span class="p">,</span> <span class="s">@&quot;</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">,</span> <span class="s">@&quot;[&quot;</span><span class="p">,</span> <span class="s">@&quot;{&quot;</span><span class="p">,</span> <span class="s">@&quot;]&quot;</span><span class="p">,</span> <span class="s">@&quot;}&quot;</span><span class="p">,</span> <span class="s">@&quot;</span><span class="se">\\</span><span class="s">&quot;</span><span class="p">,</span> <span class="s">@&quot;|&quot;</span><span class="p">,</span> <span class="s">@&quot;€&quot;</span><span class="p">,</span><span class="s">@&quot;　&quot;</span><span class="p">,</span> <span class="s">@&quot;。&quot;</span><span class="p">,</span> <span class="s">@&quot;，&quot;</span><span class="p">,</span> <span class="s">@&quot;、&quot;</span><span class="p">,</span> <span class="s">@&quot;；&quot;</span><span class="p">,</span> <span class="s">@&quot;：&quot;</span><span class="p">,</span> <span class="s">@&quot;？&quot;</span><span class="p">,</span> <span class="s">@&quot;！&quot;</span><span class="p">,</span> <span class="s">@&quot;…&quot;</span><span class="p">,</span> <span class="s">@&quot;—&quot;</span><span class="p">,</span> <span class="s">@&quot;·&quot;</span><span class="p">,</span><span class="s">@&quot;ˉ&quot;</span><span class="p">,</span> <span class="s">@&quot;¨&quot;</span><span class="p">,</span> <span class="s">@&quot;‘&quot;</span><span class="p">,</span> <span class="s">@&quot;’&quot;</span><span class="p">,</span> <span class="s">@&quot;“&quot;</span><span class="p">,</span> <span class="s">@&quot;”&quot;</span><span class="p">,</span> <span class="s">@&quot;々&quot;</span><span class="p">,</span> <span class="s">@&quot;～&quot;</span><span class="p">,</span> <span class="s">@&quot;‖&quot;</span><span class="p">,</span> <span class="s">@&quot;∶&quot;</span><span class="p">,</span> <span class="s">@&quot;＂&quot;</span><span class="p">,</span> <span class="s">@&quot;＇&quot;</span><span class="p">,</span><span class="s">@&quot;｀&quot;</span><span class="p">,</span> <span class="s">@&quot;｜&quot;</span><span class="p">,</span> <span class="s">@&quot;〃&quot;</span><span class="p">,</span> <span class="s">@&quot;〔&quot;</span><span class="p">,</span> <span class="s">@&quot;〕&quot;</span><span class="p">,</span> <span class="s">@&quot;〈&quot;</span><span class="p">,</span> <span class="s">@&quot;〉&quot;</span><span class="p">,</span> <span class="s">@&quot;《&quot;</span><span class="p">,</span> <span class="s">@&quot;》&quot;</span><span class="p">,</span> <span class="s">@&quot;「&quot;</span><span class="p">,</span> <span class="s">@&quot;」&quot;</span><span class="p">,</span><span class="err">@</span> <span class="s">&quot;『&quot;</span><span class="p">,</span> <span class="s">@&quot;』&quot;</span><span class="p">,</span> <span class="s">@&quot;．&quot;</span><span class="p">,</span> <span class="s">@&quot;〖&quot;</span><span class="p">,</span> <span class="s">@&quot;〗&quot;</span><span class="p">,</span> <span class="s">@&quot;【&quot;</span><span class="p">,</span> <span class="s">@&quot;】&quot;</span><span class="p">,</span> <span class="s">@&quot;（&quot;</span><span class="p">,</span> <span class="s">@&quot;）&quot;</span><span class="p">,</span> <span class="s">@&quot;［&quot;</span><span class="p">,</span> <span class="s">@&quot;］&quot;</span><span class="p">,</span><span class="s">@&quot;｛&quot;</span><span class="p">,</span> <span class="s">@&quot;｝&quot;</span><span class="p">,</span> <span class="s">@&quot;≈&quot;</span><span class="p">,</span> <span class="s">@&quot;≡&quot;</span><span class="p">,</span> <span class="s">@&quot;≠&quot;</span><span class="p">,</span> <span class="s">@&quot;＝&quot;</span><span class="p">,</span> <span class="s">@&quot;≤&quot;</span><span class="p">,</span> <span class="s">@&quot;≥&quot;</span><span class="p">,</span> <span class="s">@&quot;＜&quot;</span><span class="p">,</span> <span class="s">@&quot;＞&quot;</span><span class="p">,</span> <span class="s">@&quot;≮&quot;</span><span class="p">,</span> <span class="s">@&quot;≯&quot;</span><span class="p">,</span> <span class="s">@&quot;∷&quot;</span><span class="p">,</span> <span class="s">@&quot;±&quot;</span><span class="p">,</span><span class="s">@&quot;＋&quot;</span><span class="p">,</span> <span class="s">@&quot;－&quot;</span><span class="p">,</span> <span class="s">@&quot;×&quot;</span><span class="p">,</span> <span class="s">@&quot;÷&quot;</span><span class="p">,</span> <span class="s">@&quot;／&quot;</span><span class="p">,</span> <span class="s">@&quot;∫&quot;</span><span class="p">,</span> <span class="s">@&quot;∮&quot;</span><span class="p">,</span> <span class="s">@&quot;∝&quot;</span><span class="p">,</span> <span class="s">@&quot;∞&quot;</span><span class="p">,</span> <span class="s">@&quot;∧&quot;</span><span class="p">,</span> <span class="s">@&quot;∨&quot;</span><span class="p">,</span> <span class="s">@&quot;∑&quot;</span><span class="p">,</span> <span class="s">@&quot;∏&quot;</span><span class="p">,</span> <span class="s">@&quot;∪&quot;</span><span class="p">,</span><span class="s">@&quot;∩&quot;</span><span class="p">,</span> <span class="s">@&quot;∈&quot;</span><span class="p">,</span> <span class="s">@&quot;∵&quot;</span><span class="p">,</span> <span class="s">@&quot;∴&quot;</span><span class="p">,</span> <span class="s">@&quot;⊥&quot;</span><span class="p">,</span> <span class="s">@&quot;∥&quot;</span><span class="p">,</span> <span class="s">@&quot;∠&quot;</span><span class="p">,</span> <span class="s">@&quot;⌒&quot;</span><span class="p">,</span> <span class="s">@&quot;⊙&quot;</span><span class="p">,</span> <span class="s">@&quot;≌&quot;</span><span class="p">,</span> <span class="s">@&quot;∽&quot;</span><span class="p">,</span> <span class="s">@&quot;√&quot;</span><span class="p">,</span> <span class="s">@&quot;§&quot;</span><span class="p">,</span> <span class="s">@&quot;№&quot;</span><span class="p">,</span><span class="s">@&quot;☆&quot;</span><span class="p">,</span> <span class="s">@&quot;★&quot;</span><span class="p">,</span> <span class="s">@&quot;○&quot;</span><span class="p">,</span> <span class="s">@&quot;●&quot;</span><span class="p">,</span> <span class="s">@&quot;◎&quot;</span><span class="p">,</span> <span class="s">@&quot;◇&quot;</span><span class="p">,</span> <span class="s">@&quot;◆&quot;</span><span class="p">,</span> <span class="s">@&quot;□&quot;</span><span class="p">,</span> <span class="s">@&quot;℃&quot;</span><span class="p">,</span> <span class="s">@&quot;‰&quot;</span><span class="p">,</span> <span class="s">@&quot;■&quot;</span><span class="p">,</span> <span class="s">@&quot;△&quot;</span><span class="p">,</span> <span class="s">@&quot;▲&quot;</span><span class="p">,</span> <span class="s">@&quot;※&quot;</span><span class="p">,</span> <span class="s">@&quot;→&quot;</span><span class="p">,</span><span class="s">@&quot;←&quot;</span><span class="p">,</span> <span class="s">@&quot;↑&quot;</span><span class="p">,</span> <span class="s">@&quot;↓&quot;</span><span class="p">,</span> <span class="s">@&quot;〓&quot;</span><span class="p">,</span> <span class="s">@&quot;¤&quot;</span><span class="p">,</span> <span class="s">@&quot;°&quot;</span><span class="p">,</span> <span class="s">@&quot;＃&quot;</span><span class="p">,</span> <span class="s">@&quot;＆&quot;</span><span class="p">,</span> <span class="s">@&quot;＠&quot;</span><span class="p">,</span> <span class="s">@&quot;＼&quot;</span><span class="p">,</span> <span class="s">@&quot;︿&quot;</span><span class="p">,</span> <span class="s">@&quot;＿&quot;</span><span class="p">,</span> <span class="s">@&quot;￣&quot;</span><span class="p">,</span> <span class="s">@&quot;―&quot;</span><span class="p">,</span><span class="s">@&quot;♂&quot;</span><span class="p">,</span> <span class="s">@&quot;♀&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅰ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅱ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅲ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅳ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅴ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅵ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅶ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅷ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅸ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅹ&quot;</span><span class="p">,</span> <span class="s">@&quot;Ⅺ&quot;</span><span class="p">,</span><span class="s">@&quot;Ⅻ&quot;</span><span class="p">,</span> <span class="s">@&quot;⒈&quot;</span><span class="p">,</span> <span class="s">@&quot;⒉&quot;</span><span class="p">,</span> <span class="s">@&quot;⒊&quot;</span><span class="p">,</span> <span class="s">@&quot;⒋&quot;</span><span class="p">,</span> <span class="s">@&quot;⒌&quot;</span><span class="p">,</span> <span class="s">@&quot;⒍&quot;</span><span class="p">,</span> <span class="s">@&quot;⒎&quot;</span><span class="p">,</span> <span class="s">@&quot;⒏&quot;</span><span class="p">,</span> <span class="s">@&quot;⒐&quot;</span><span class="p">,</span> <span class="s">@&quot;⒑&quot;</span><span class="p">,</span> <span class="s">@&quot;⒒&quot;</span><span class="p">,</span> <span class="s">@&quot;⒓&quot;</span><span class="p">,</span><span class="s">@&quot;⒔&quot;</span><span class="p">,</span> <span class="s">@&quot;⒕&quot;</span><span class="p">,</span> <span class="s">@&quot;⒖&quot;</span><span class="p">,</span> <span class="s">@&quot;⒗&quot;</span><span class="p">,</span> <span class="s">@&quot;⒘&quot;</span><span class="p">,</span> <span class="s">@&quot;⒙&quot;</span><span class="p">,</span> <span class="s">@&quot;⒚&quot;</span><span class="p">,</span> <span class="s">@&quot;⒛&quot;</span><span class="p">,</span> <span class="s">@&quot;㈠&quot;</span><span class="p">,</span> <span class="s">@&quot;㈡&quot;</span><span class="p">,</span> <span class="s">@&quot;㈢&quot;</span><span class="p">,</span> <span class="s">@&quot;㈣&quot;</span><span class="p">,</span> <span class="s">@&quot;㈤&quot;</span><span class="p">,</span><span class="s">@&quot;㈥&quot;</span><span class="p">,</span> <span class="s">@&quot;㈦&quot;</span><span class="p">,</span> <span class="s">@&quot;㈧&quot;</span><span class="p">,</span> <span class="s">@&quot;㈨&quot;</span><span class="p">,</span> <span class="s">@&quot;㈩&quot;</span><span class="p">,</span> <span class="s">@&quot;①&quot;</span><span class="p">,</span> <span class="s">@&quot;②&quot;</span><span class="p">,</span> <span class="s">@&quot;③&quot;</span><span class="p">,</span> <span class="s">@&quot;④&quot;</span><span class="p">,</span> <span class="s">@&quot;⑤&quot;</span><span class="p">,</span> <span class="s">@&quot;⑥&quot;</span><span class="p">,</span> <span class="s">@&quot;⑦&quot;</span><span class="p">,</span> <span class="s">@&quot;⑧&quot;</span><span class="p">,</span> <span class="s">@&quot;⑨&quot;</span><span class="p">,</span> <span class="s">@&quot;⑩&quot;</span><span class="p">,</span><span class="s">@&quot;⑴&quot;</span><span class="p">,</span> <span class="s">@&quot;⑵&quot;</span><span class="p">,</span> <span class="s">@&quot;⑶&quot;</span><span class="p">,</span> <span class="s">@&quot;⑷&quot;</span><span class="p">,</span> <span class="s">@&quot;⑸&quot;</span><span class="p">,</span> <span class="s">@&quot;⑹&quot;</span><span class="p">,</span> <span class="s">@&quot;⑺&quot;</span><span class="p">,</span> <span class="s">@&quot;⑻&quot;</span><span class="p">,</span> <span class="s">@&quot;⑼&quot;</span><span class="p">,</span> <span class="s">@&quot;⑽&quot;</span><span class="p">,</span> <span class="s">@&quot;⑾&quot;</span><span class="p">,</span> <span class="s">@&quot;⑿&quot;</span><span class="p">,</span> <span class="s">@&quot;⒀&quot;</span><span class="p">,</span><span class="s">@&quot;⒁&quot;</span><span class="p">,</span> <span class="s">@&quot;⒂&quot;</span><span class="p">,</span> <span class="s">@&quot;⒃&quot;</span><span class="p">,</span> <span class="s">@&quot;⒄&quot;</span><span class="p">,</span> <span class="s">@&quot;⒅&quot;</span><span class="p">,</span> <span class="s">@&quot;⒆&quot;</span><span class="p">,</span> <span class="s">@&quot;⒇&quot;</span><span class="p">,</span> <span class="s">@&quot;┌&quot;</span><span class="p">,</span> <span class="s">@&quot;┍&quot;</span><span class="p">,</span> <span class="s">@&quot;┎&quot;</span><span class="p">,</span> <span class="s">@&quot;┏&quot;</span><span class="p">,</span> <span class="s">@&quot;┐&quot;</span><span class="p">,</span> <span class="s">@&quot;┑&quot;</span><span class="p">,</span> <span class="s">@&quot;┒&quot;</span><span class="p">,</span><span class="s">@&quot;┓&quot;</span><span class="p">,</span> <span class="s">@&quot;─&quot;</span><span class="p">,</span> <span class="s">@&quot;┄&quot;</span><span class="p">,</span> <span class="s">@&quot;┈&quot;</span><span class="p">,</span> <span class="s">@&quot;└&quot;</span><span class="p">,</span> <span class="s">@&quot;┕&quot;</span><span class="p">,</span> <span class="s">@&quot;┖&quot;</span><span class="p">,</span> <span class="s">@&quot;┗&quot;</span><span class="p">,</span> <span class="s">@&quot;┘&quot;</span><span class="p">,</span> <span class="s">@&quot;┙&quot;</span><span class="p">,</span> <span class="s">@&quot;┚&quot;</span><span class="p">,</span> <span class="s">@&quot;┛&quot;</span><span class="p">,</span> <span class="s">@&quot;━&quot;</span><span class="p">,</span> <span class="s">@&quot;┅&quot;</span><span class="p">,</span> <span class="s">@&quot;┉&quot;</span><span class="p">,</span><span class="s">@&quot;├&quot;</span><span class="p">,</span> <span class="s">@&quot;┝&quot;</span><span class="p">,</span> <span class="s">@&quot;┞&quot;</span><span class="p">,</span> <span class="s">@&quot;┟&quot;</span><span class="p">,</span> <span class="s">@&quot;┠&quot;</span><span class="p">,</span> <span class="s">@&quot;┡&quot;</span><span class="p">,</span> <span class="s">@&quot;┢&quot;</span><span class="p">,</span> <span class="s">@&quot;┣&quot;</span><span class="p">,</span> <span class="s">@&quot;│&quot;</span><span class="p">,</span> <span class="s">@&quot;┆&quot;</span><span class="p">,</span> <span class="s">@&quot;┊&quot;</span><span class="p">,</span> <span class="s">@&quot;┤&quot;</span><span class="p">,</span> <span class="s">@&quot;┥&quot;</span><span class="p">,</span> <span class="s">@&quot;┦&quot;</span><span class="p">,</span> <span class="s">@&quot;┧&quot;</span><span class="p">,</span> <span class="s">@&quot;┨&quot;</span><span class="p">,</span><span class="s">@&quot;┩&quot;</span><span class="p">,</span> <span class="s">@&quot;┪&quot;</span><span class="p">,</span> <span class="s">@&quot;┫&quot;</span><span class="p">,</span> <span class="s">@&quot;┃&quot;</span><span class="p">,</span> <span class="s">@&quot;┇&quot;</span><span class="p">,</span> <span class="s">@&quot;┋&quot;</span><span class="p">,</span> <span class="s">@&quot;┬&quot;</span><span class="p">,</span> <span class="s">@&quot;┭&quot;</span><span class="p">,</span> <span class="s">@&quot;┮&quot;</span><span class="p">,</span> <span class="s">@&quot;┯&quot;</span><span class="p">,</span> <span class="s">@&quot;┰&quot;</span><span class="p">,</span> <span class="s">@&quot;┱&quot;</span><span class="p">,</span> <span class="s">@&quot;┲&quot;</span><span class="p">,</span> <span class="s">@&quot;┳&quot;</span><span class="p">,</span> <span class="s">@&quot;┴&quot;</span><span class="p">,</span> <span class="s">@&quot;┵&quot;</span><span class="p">,</span><span class="s">@&quot;┶&quot;</span><span class="p">,</span> <span class="s">@&quot;┷&quot;</span><span class="p">,</span> <span class="s">@&quot;┸&quot;</span><span class="p">,</span> <span class="s">@&quot;┹&quot;</span><span class="p">,</span> <span class="s">@&quot;┺&quot;</span><span class="p">,</span> <span class="s">@&quot;┻&quot;</span><span class="p">,</span> <span class="s">@&quot;┼&quot;</span><span class="p">,</span> <span class="s">@&quot;┽&quot;</span><span class="p">,</span> <span class="s">@&quot;┾&quot;</span><span class="p">,</span> <span class="s">@&quot;┿&quot;</span><span class="p">,</span> <span class="s">@&quot;╀&quot;</span><span class="p">,</span> <span class="s">@&quot;╁&quot;</span><span class="p">,</span> <span class="s">@&quot;╂&quot;</span><span class="p">,</span> <span class="s">@&quot;╃&quot;</span><span class="p">,</span> <span class="s">@&quot;╄&quot;</span><span class="p">,</span> <span class="s">@&quot;╅&quot;</span><span class="p">,</span><span class="s">@&quot;╆&quot;</span><span class="p">,</span> <span class="s">@&quot;╇&quot;</span><span class="p">,</span> <span class="s">@&quot;╈&quot;</span><span class="p">,</span> <span class="s">@&quot;╉&quot;</span><span class="p">,</span> <span class="s">@&quot;╊&quot;</span><span class="p">,</span> <span class="s">@&quot;╋&quot;</span><span class="p">,</span> <span class="nb">nil</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSMutableString</span> <span class="o">*</span><span class="n">_Title</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSMutableString</span> <span class="nl">stringWithString:</span> <span class="p">[</span><span class="n">Title</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot; &quot;</span> <span class="nl">withString:</span><span class="s">@&quot;&quot;</span><span class="p">]];</span>
</span><span class='line'><span class="err">        </span><span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="p">[</span><span class="n">CharToDelete</span> <span class="n">count</span><span class="p">];</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
</span><span class='line'><span class="err">            </span><span class="p">[</span><span class="n">_Title</span> <span class="nl">setString:</span><span class="p">[</span><span class="n">_Title</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithString:</span><span class="p">[</span><span class="n">CharToDelete</span> <span class="nl">objectAtIndex:</span><span class="n">i</span><span class="p">]]</span> <span class="nl">withString:</span><span class="s">@&quot;&quot;</span><span class="p">]];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="p">[</span><span class="n">_Title</span> <span class="nl">setString:</span><span class="p">[</span><span class="n">_Title</span> <span class="n">lowercaseString</span><span class="p">]];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSMutableString</span> <span class="o">*</span><span class="n">_Artist</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSMutableString</span> <span class="nl">stringWithString:</span><span class="p">[</span><span class="n">Artist</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot; &quot;</span> <span class="nl">withString:</span><span class="s">@&quot;&quot;</span><span class="p">]];</span>
</span><span class='line'><span class="err">        </span><span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">32</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
</span><span class='line'><span class="err">            </span><span class="p">[</span><span class="n">_Artist</span> <span class="nl">setString:</span><span class="p">[</span><span class="n">_Artist</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithString:</span><span class="p">[</span><span class="n">CharToDelete</span> <span class="nl">objectAtIndex:</span><span class="n">i</span><span class="p">]]</span> <span class="nl">withString:</span><span class="s">@&quot;&quot;</span><span class="p">]];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="p">[</span><span class="n">_Artist</span> <span class="nl">setString:</span><span class="p">[</span><span class="n">_Artist</span> <span class="n">lowercaseString</span><span class="p">]];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSUserDefaults</span> <span class="o">*</span><span class="n">userDefaults</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSUserDefaults</span> <span class="n">standardUserDefaults</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="n">NSString</span> <span class="o">*</span><span class="n">url</span><span class="p">;</span>
</span><span class='line'><span class="err">        </span><span class="k">if</span> <span class="p">([</span><span class="n">userDefaults</span> <span class="nl">integerForKey:</span><span class="s">@&quot;LyricsServer&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
</span><span class='line'><span class="err">        </span><span class="p">{</span>
</span><span class='line'><span class="err">            </span><span class="n">url</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithFormat:</span><span class="s">@&quot;http://ttlrccnc.qianqian.com/dll/lyricsvr.dll?sh?Artist=%@&amp;Title=%@&amp;Flags=0&quot;</span><span class="p">,</span><span class="n">SetToHexString</span><span class="p">(</span><span class="n">_Artist</span><span class="p">),</span><span class="n">SetToHexString</span><span class="p">(</span><span class="n">_Title</span><span class="p">)];</span>
</span><span class='line'><span class="err">        </span><span class="p">}</span>
</span><span class='line'><span class="err">        </span><span class="k">else</span>
</span><span class='line'><span class="err">        </span><span class="p">{</span>
</span><span class='line'><span class="err">            </span><span class="n">url</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithFormat:</span><span class="s">@&quot;http://ttlrcct.qianqian.com/dll/lyricsvr.dll?sh?Artist=%@&amp;Title=%@&amp;Flags=0&quot;</span><span class="p">,</span><span class="n">SetToHexString</span><span class="p">(</span><span class="n">_Artist</span><span class="p">),</span><span class="n">SetToHexString</span><span class="p">(</span><span class="n">_Title</span><span class="p">)];</span>
</span><span class='line'><span class="err">        </span><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSString</span> <span class="o">*</span><span class="n">result</span> <span class="o">=</span> <span class="p">[</span><span class="n">RequestSender</span> <span class="nl">sendRequest:</span><span class="n">url</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="n">NSArray</span> <span class="o">*</span><span class="n">tempArray</span> <span class="o">=</span> <span class="p">[</span><span class="n">result</span> <span class="nl">componentsSeparatedByString:</span><span class="s">@&quot;&lt;lrc&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="kt">int</span> <span class="n">finalTextIndex</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
</span><span class='line'><span class="err">        </span><span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">i</span><span class="o">&lt;</span><span class="p">[</span><span class="n">tempArray</span> <span class="n">count</span><span class="p">];</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
</span><span class='line'><span class="err">        </span><span class="p">{</span>
</span><span class='line'><span class="err">            </span><span class="n">NSString</span> <span class="o">*</span><span class="n">r</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithString:</span><span class="p">[</span><span class="n">tempArray</span> <span class="nl">objectAtIndex:</span><span class="n">i</span><span class="p">]];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">            </span><span class="n">NSString</span> <span class="o">*</span><span class="n">artist</span> <span class="o">=</span> <span class="p">[</span><span class="n">r</span> <span class="nl">substringFromIndex:</span><span class="p">[</span><span class="n">r</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;artist=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">].</span><span class="n">location</span> <span class="o">+</span> <span class="mi">8</span><span class="p">];</span>
</span><span class='line'><span class="err">            </span><span class="n">artist</span> <span class="o">=</span> <span class="p">[</span><span class="n">artist</span> <span class="nl">substringToIndex:</span><span class="p">[</span><span class="n">artist</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;</span><span class="se">\&quot;</span><span class="s"> title&quot;</span><span class="p">].</span><span class="n">location</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">            </span><span class="k">if</span> <span class="p">(</span><span class="n">finalTextIndex</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span> <span class="o">||</span> <span class="p">[</span><span class="n">artist</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;中&quot;</span><span class="p">].</span><span class="n">location</span> <span class="o">!=</span> <span class="n">NSNotFound</span> <span class="o">||</span> <span class="p">[</span><span class="n">artist</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;双&quot;</span><span class="p">].</span><span class="n">location</span> <span class="o">!=</span> <span class="n">NSNotFound</span> <span class="o">||</span> <span class="p">[</span><span class="n">artist</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;对照&quot;</span><span class="p">].</span><span class="n">location</span> <span class="o">!=</span> <span class="n">NSNotFound</span><span class="p">)</span>
</span><span class='line'><span class="err">            </span><span class="p">{</span>
</span><span class='line'><span class="err">                </span><span class="n">finalTextIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
</span><span class='line'><span class="err">            </span><span class="p">}</span>
</span><span class='line'><span class="err">        </span><span class="p">}</span>
</span><span class='line'><span class="err">        </span><span class="k">if</span> <span class="p">(</span><span class="n">finalTextIndex</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
</span><span class='line'><span class="err">        </span><span class="p">{</span>
</span><span class='line'><span class="err">            </span><span class="k">return</span> <span class="s">@&quot;NULL&quot;</span><span class="p">;</span>
</span><span class='line'><span class="err">        </span><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSString</span> <span class="o">*</span><span class="n">r</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithString:</span><span class="p">[</span><span class="n">tempArray</span> <span class="nl">objectAtIndex:</span><span class="n">finalTextIndex</span><span class="p">]];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSString</span> <span class="o">*</span><span class="n">lrcID</span> <span class="o">=</span> <span class="p">[</span><span class="n">r</span> <span class="nl">substringFromIndex:</span><span class="p">[</span><span class="n">r</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;id=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">].</span><span class="n">location</span> <span class="o">+</span> <span class="mi">4</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="n">lrcID</span> <span class="o">=</span> <span class="p">[</span><span class="n">lrcID</span> <span class="nl">substringToIndex:</span><span class="p">[</span><span class="n">lrcID</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;</span><span class="se">\&quot;</span><span class="s"> arti&quot;</span><span class="p">].</span><span class="n">location</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSString</span> <span class="o">*</span><span class="n">finalArtist</span> <span class="o">=</span> <span class="p">[</span><span class="n">r</span> <span class="nl">substringFromIndex:</span><span class="p">[</span><span class="n">r</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;artist=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">].</span><span class="n">location</span> <span class="o">+</span> <span class="mi">8</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="n">finalArtist</span> <span class="o">=</span> <span class="p">[</span><span class="n">finalArtist</span> <span class="nl">substringToIndex:</span><span class="p">[</span><span class="n">finalArtist</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;</span><span class="se">\&quot;</span><span class="s"> title&quot;</span><span class="p">].</span><span class="n">location</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSString</span> <span class="o">*</span><span class="n">finalTitle</span> <span class="o">=</span> <span class="p">[</span><span class="n">r</span> <span class="nl">substringFromIndex:</span><span class="p">[</span><span class="n">r</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;title=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">].</span><span class="n">location</span> <span class="o">+</span> <span class="mi">7</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="n">finalTitle</span> <span class="o">=</span> <span class="p">[</span><span class="n">finalTitle</span> <span class="nl">substringToIndex:</span><span class="p">[</span><span class="n">finalTitle</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;</span><span class="se">\&quot;</span><span class="s">&gt;&lt;/lrc&quot;</span><span class="p">].</span><span class="n">location</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="kt">long</span> <span class="n">finalId</span> <span class="o">=</span> <span class="p">[</span><span class="n">lrcID</span> <span class="n">intValue</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="n">finalTitle</span> <span class="o">=</span> <span class="p">[</span><span class="n">finalTitle</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot;&amp;apos;&quot;</span> <span class="nl">withString:</span><span class="s">@&quot;&#39;&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="n">finalArtist</span> <span class="o">=</span> <span class="p">[</span><span class="n">finalArtist</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot;&amp;apos;&quot;</span> <span class="nl">withString:</span><span class="s">@&quot;&#39;&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="n">finalTitle</span> <span class="o">=</span> <span class="p">[</span><span class="n">finalTitle</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot;&amp;quot;&quot;</span> <span class="nl">withString:</span><span class="s">@&quot;</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="n">finalArtist</span> <span class="o">=</span> <span class="p">[</span><span class="n">finalArtist</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot;&amp;quot;&quot;</span> <span class="nl">withString:</span><span class="s">@&quot;</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="n">finalTitle</span> <span class="o">=</span> <span class="p">[</span><span class="n">finalTitle</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot;&amp;amp;&quot;</span> <span class="nl">withString:</span><span class="s">@&quot;&amp;&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="n">finalArtist</span> <span class="o">=</span> <span class="p">[</span><span class="n">finalArtist</span> <span class="nl">stringByReplacingOccurrencesOfString:</span><span class="s">@&quot;&amp;amp;&quot;</span> <span class="nl">withString:</span><span class="s">@&quot;&amp;&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSString</span> <span class="o">*</span><span class="n">finalCode</span> <span class="o">=</span> <span class="n">ttpCode</span><span class="p">(</span><span class="n">finalArtist</span><span class="p">,</span> <span class="n">finalTitle</span><span class="p">,</span> <span class="n">finalId</span><span class="p">);</span>
</span><span class='line'><span class="err">        </span><span class="n">NSString</span> <span class="o">*</span><span class="n">finalUrl</span><span class="p">;</span>
</span><span class='line'><span class="err">        </span><span class="k">if</span> <span class="p">([</span><span class="n">userDefaults</span> <span class="nl">integerForKey:</span><span class="s">@&quot;LyricsServer&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
</span><span class='line'><span class="err">        </span><span class="p">{</span>
</span><span class='line'><span class="err">            </span><span class="n">finalUrl</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithFormat:</span><span class="s">@&quot;http://ttlrccnc.qianqian.com/dll/lyricsvr.dll?dl?Id=%lu&amp;Code=%@&quot;</span><span class="p">,</span><span class="n">finalId</span><span class="p">,</span><span class="n">finalCode</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="p">}</span>
</span><span class='line'><span class="err">        </span><span class="k">else</span>
</span><span class='line'><span class="err">        </span><span class="p">{</span>
</span><span class='line'><span class="err">            </span><span class="n">finalUrl</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithFormat:</span><span class="s">@&quot;http://ttlrcct.qianqian.com/dll/lyricsvr.dll?dl?Id=%lu&amp;Code=%@&quot;</span><span class="p">,</span><span class="n">finalId</span><span class="p">,</span><span class="n">finalCode</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSString</span> <span class="o">*</span><span class="n">finalResult</span> <span class="o">=</span> <span class="p">[</span><span class="n">RequestSender</span> <span class="nl">sendRequest:</span><span class="n">finalUrl</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="k">return</span> <span class="n">finalResult</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="p">}</span>
</span><span class='line'><span class="err">    </span><span class="k">@catch</span> <span class="p">(</span><span class="n">NSException</span> <span class="o">*</span><span class="n">exception</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="k">return</span> <span class="s">@&quot;NULL&quot;</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="o">+</span><span class="p">(</span><span class="n">NSString</span><span class="o">*</span><span class="p">)</span><span class="nl">getLyricsByTitle:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">Title</span> <span class="nl">getLyricsByArtist:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">Artist</span> <span class="nl">getLyricsByID:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">ID</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'><span class="err">    </span><span class="k">@try</span> <span class="p">{</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="kt">long</span> <span class="n">finalId</span> <span class="o">=</span> <span class="p">[[</span><span class="n">NSString</span> <span class="nl">stringWithString:</span><span class="n">ID</span><span class="p">]</span> <span class="n">intValue</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="n">NSLog</span><span class="p">(</span><span class="s">@&quot;%@&quot;</span><span class="p">,</span><span class="n">ID</span><span class="p">);</span>
</span><span class='line'><span class="err">        </span><span class="n">NSUserDefaults</span> <span class="o">*</span><span class="n">userDefaults</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSUserDefaults</span> <span class="n">standardUserDefaults</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSString</span> <span class="o">*</span><span class="n">finalCode</span> <span class="o">=</span> <span class="n">ttpCode</span><span class="p">(</span><span class="n">Artist</span><span class="p">,</span> <span class="n">Title</span><span class="p">,</span> <span class="n">finalId</span><span class="p">);</span>
</span><span class='line'><span class="err">        </span><span class="n">NSString</span> <span class="o">*</span><span class="n">finalUrl</span><span class="p">;</span>
</span><span class='line'><span class="err">        </span><span class="k">if</span> <span class="p">([</span><span class="n">userDefaults</span> <span class="nl">integerForKey:</span><span class="s">@&quot;LyricsServer&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
</span><span class='line'><span class="err">        </span><span class="p">{</span>
</span><span class='line'><span class="err">            </span><span class="n">finalUrl</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithFormat:</span><span class="s">@&quot;http://ttlrccnc.qianqian.com/dll/lyricsvr.dll?dl?Id=%lu&amp;Code=%@&quot;</span><span class="p">,</span><span class="n">finalId</span><span class="p">,</span><span class="n">finalCode</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="p">}</span>
</span><span class='line'><span class="err">        </span><span class="k">else</span>
</span><span class='line'><span class="err">        </span><span class="p">{</span>
</span><span class='line'><span class="err">            </span><span class="n">finalUrl</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithFormat:</span><span class="s">@&quot;http://ttlrcct.qianqian.com/dll/lyricsvr.dll?dl?Id=%lu&amp;Code=%@&quot;</span><span class="p">,</span><span class="n">finalId</span><span class="p">,</span><span class="n">finalCode</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">        </span><span class="n">NSLog</span><span class="p">(</span><span class="s">@&quot;%@&quot;</span><span class="p">,</span><span class="n">finalUrl</span><span class="p">);</span>
</span><span class='line'><span class="err">        </span><span class="n">NSString</span> <span class="o">*</span><span class="n">finalResult</span> <span class="o">=</span> <span class="p">[</span><span class="n">RequestSender</span> <span class="nl">sendRequest:</span><span class="n">finalUrl</span><span class="p">];</span>
</span><span class='line'><span class="err">        </span><span class="k">return</span> <span class="n">finalResult</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="p">}</span>
</span><span class='line'><span class="err">    </span><span class="k">@catch</span> <span class="p">(</span><span class="n">NSException</span> <span class="o">*</span><span class="n">exception</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="k">return</span> <span class="s">@&quot;NULL&quot;</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="k">@end</span>
</span></code></pre></td></tr></table></div></figure>


<p>KeyValue_SearchLyrics.h</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
</pre></td><td class='code'><pre><code class='objc'><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="c1">//  KeyValue_SearchLyrics.h</span>
</span><span class='line'><span class="c1">//  DynamicLyrics</span>
</span><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="cp">#import &lt;Foundation/Foundation.h&gt;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">@</span><span class="n">interface</span> <span class="n">KeyValue_SearchLyrics</span> <span class="o">:</span> <span class="n">NSObject</span><span class="p">{</span>
</span><span class='line'><span class="err">    </span><span class="n">NSString</span> <span class="o">*</span><span class="n">ID</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="n">NSString</span> <span class="o">*</span><span class="n">LyricsTitle</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="n">NSString</span> <span class="o">*</span><span class="n">LyricsArtist</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="k">@property</span> <span class="p">(</span><span class="n">readwrite</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> <span class="n">NSString</span> <span class="o">*</span><span class="n">ID</span><span class="p">;</span>
</span><span class='line'><span class="k">@property</span> <span class="p">(</span><span class="n">readwrite</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> <span class="n">NSString</span> <span class="o">*</span><span class="n">LyricsTitle</span><span class="p">;</span>
</span><span class='line'><span class="k">@property</span> <span class="p">(</span><span class="n">readwrite</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> <span class="n">NSString</span> <span class="o">*</span><span class="n">LyricsArtist</span><span class="p">;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="o">-</span><span class="p">(</span><span class="kt">id</span><span class="p">)</span><span class="nl">initWithID:</span><span class="p">(</span><span class="n">NSString</span><span class="o">*</span><span class="p">)</span><span class="n">nID</span> <span class="nl">initWithTitle:</span><span class="p">(</span><span class="n">NSString</span><span class="o">*</span><span class="p">)</span><span class="n">nLyricsTitle</span> <span class="nl">initWithArtist:</span><span class="p">(</span><span class="n">NSString</span><span class="o">*</span><span class="p">)</span><span class="n">nLyricsArtist</span><span class="p">;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="k">@end</span>
</span></code></pre></td></tr></table></div></figure>


<p>KeyValue_SearchLyrics.m</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
</pre></td><td class='code'><pre><code class='objc'><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="c1">//  KeyValue_SearchLyrics.m</span>
</span><span class='line'><span class="c1">//  DynamicLyrics</span>
</span><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="cp">#import &quot;KeyValue_SearchLyrics.h&quot;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">@</span><span class="n">implementation</span> <span class="n">KeyValue_SearchLyrics</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="k">@synthesize</span> <span class="n">ID</span><span class="p">;</span>
</span><span class='line'><span class="k">@synthesize</span> <span class="n">LyricsTitle</span><span class="p">;</span>
</span><span class='line'><span class="k">@synthesize</span> <span class="n">LyricsArtist</span><span class="p">;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="o">-</span> <span class="p">(</span><span class="kt">id</span><span class="p">)</span><span class="n">init</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'><span class="err">    </span><span class="n">self</span> <span class="o">=</span> <span class="p">[</span><span class="n">super</span> <span class="n">init</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="k">if</span> <span class="p">(</span><span class="n">self</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="c1">// Initialization code here.</span>
</span><span class='line'><span class="err">    </span><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="k">return</span> <span class="n">self</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="o">-</span><span class="p">(</span><span class="kt">id</span><span class="p">)</span><span class="nl">initWithID:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">nID</span> <span class="nl">initWithTitle:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">nLyricsTitle</span> <span class="nl">initWithArtist:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">nLyricsArtist</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'><span class="err">    </span><span class="n">self</span><span class="p">.</span><span class="n">ID</span> <span class="o">=</span> <span class="n">nID</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="n">self</span><span class="p">.</span><span class="n">LyricsArtist</span> <span class="o">=</span> <span class="n">nLyricsArtist</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="n">self</span><span class="p">.</span><span class="n">LyricsTitle</span> <span class="o">=</span> <span class="n">nLyricsTitle</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="k">return</span> <span class="n">self</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="k">@end</span>
</span></code></pre></td></tr></table></div></figure>


<p>BingTranslator.h</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
</pre></td><td class='code'><pre><code class='objc'><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="c1">//  BingTranslator.h</span>
</span><span class='line'><span class="c1">//  V-for-Lyrics</span>
</span><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="c1">//  Created by Martian on 11-8-19.</span>
</span><span class='line'><span class="c1">//  Copyright 2011年 4321.La. All rights reserved.</span>
</span><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="cp">#import &lt;Foundation/Foundation.h&gt;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">@</span><span class="n">interface</span> <span class="n">BingTranslator</span> <span class="o">:</span> <span class="n">NSObject</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="o">+</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="nl">s2t:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">s</span><span class="p">;</span>
</span><span class='line'><span class="o">+</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="nl">t2s:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">s</span><span class="p">;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="k">@end</span>
</span></code></pre></td></tr></table></div></figure>


<p>BingTranslator.m</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
<span class='line-number'>42</span>
<span class='line-number'>43</span>
<span class='line-number'>44</span>
<span class='line-number'>45</span>
<span class='line-number'>46</span>
<span class='line-number'>47</span>
<span class='line-number'>48</span>
<span class='line-number'>49</span>
<span class='line-number'>50</span>
<span class='line-number'>51</span>
<span class='line-number'>52</span>
</pre></td><td class='code'><pre><code class='objc'><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="c1">//  BingTranslator.m</span>
</span><span class='line'><span class="c1">//  V-for-Lyrics</span>
</span><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="cp">#import &quot;BingTranslator.h&quot;</span>
</span><span class='line'><span class="cp">#import &quot;RequestSender.h&quot;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">@</span><span class="n">implementation</span> <span class="n">BingTranslator</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="o">-</span> <span class="p">(</span><span class="kt">id</span><span class="p">)</span><span class="n">init</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'><span class="err">    </span><span class="n">self</span> <span class="o">=</span> <span class="p">[</span><span class="n">super</span> <span class="n">init</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="k">if</span> <span class="p">(</span><span class="n">self</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'><span class="err">        </span><span class="c1">// Initialization code here.</span>
</span><span class='line'><span class="err">    </span><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="k">return</span> <span class="n">self</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="c1">//简体中文 - 繁体中文</span>
</span><span class='line'><span class="o">+</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="nl">s2t:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">s</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'><span class="err">    </span><span class="n">NSString</span> <span class="o">*</span><span class="n">parameter</span> <span class="o">=</span> <span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">CFURLCreateStringByAddingPercentEscapes</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,(</span><span class="n">CFStringRef</span><span class="p">)</span><span class="n">s</span><span class="p">,</span><span class="nb">NULL</span><span class="p">,</span>
</span><span class='line'><span class="err">                                    </span><span class="p">(</span><span class="n">CFStringRef</span><span class="p">)</span><span class="s">@&quot;!*&#39;();:@&amp;amp;=+$,/?%#[] &quot;</span><span class="p">,</span><span class="n">kCFStringEncodingUTF8</span><span class="p">);</span>
</span><span class='line'><span class="err">    </span><span class="n">NSString</span> <span class="o">*</span><span class="n">url</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithFormat:</span><span class="s">@&quot;http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=D730E24E73735C2DF15AC1E004903357669313A5&amp;text=%@&amp;from=zh-CHS&amp;to=zh-CHT&quot;</span><span class="p">,</span><span class="n">parameter</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="n">NSLog</span><span class="p">(</span><span class="s">@&quot;%@&quot;</span><span class="p">,</span><span class="n">url</span><span class="p">);</span>
</span><span class='line'><span class="err">    </span><span class="n">NSString</span> <span class="o">*</span><span class="n">content</span> <span class="o">=</span> <span class="p">[</span><span class="n">RequestSender</span> <span class="nl">sendRequest:</span><span class="n">url</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="n">NSMutableString</span> <span class="o">*</span><span class="n">result</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSMutableString</span> <span class="nl">stringWithString:</span><span class="n">content</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="p">[</span><span class="n">result</span> <span class="nl">setString:</span><span class="p">[</span><span class="n">result</span> <span class="nl">substringFromIndex:</span><span class="p">[</span><span class="n">result</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;Serialization/</span><span class="se">\&quot;</span><span class="s">&gt;&quot;</span><span class="p">].</span><span class="n">location</span> <span class="o">+</span> <span class="mi">16</span><span class="p">]];</span>
</span><span class='line'><span class="err">    </span><span class="p">[</span><span class="n">result</span> <span class="nl">setString:</span><span class="p">[</span><span class="n">result</span> <span class="nl">substringToIndex:</span><span class="p">[</span><span class="n">result</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;&lt;/string&gt;&quot;</span><span class="p">].</span><span class="n">location</span><span class="p">]];</span>
</span><span class='line'><span class="err">    </span><span class="k">return</span> <span class="n">result</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="c1">//繁体中文 - 简体中文</span>
</span><span class='line'><span class="o">+</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="nl">t2s:</span><span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">s</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'><span class="err">    </span><span class="n">NSString</span> <span class="o">*</span><span class="n">parameter</span> <span class="o">=</span> <span class="p">(</span><span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="n">CFURLCreateStringByAddingPercentEscapes</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,(</span><span class="n">CFStringRef</span><span class="p">)</span><span class="n">s</span><span class="p">,</span><span class="nb">NULL</span><span class="p">,</span>
</span><span class='line'><span class="err">                                    </span><span class="p">(</span><span class="n">CFStringRef</span><span class="p">)</span><span class="s">@&quot;!*&#39;();:@&amp;amp;=+$,/?%#[] &quot;</span><span class="p">,</span><span class="n">kCFStringEncodingUTF8</span><span class="p">);</span>
</span><span class='line'><span class="err">    </span><span class="n">NSString</span> <span class="o">*</span><span class="n">url</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithFormat:</span><span class="s">@&quot;http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=D730E24E73735C2DF15AC1E004903357669313A5&amp;text=%@&amp;from=zh-CHT&amp;to=zh-CHS&quot;</span><span class="p">,</span><span class="n">parameter</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="c1">//这里必须强制规定原语言是zh-CHT 不然会导致日语里面的繁体汉字不被翻译，进而影响歌曲搜索。</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="n">NSLog</span><span class="p">(</span><span class="s">@&quot;%@&quot;</span><span class="p">,</span><span class="n">url</span><span class="p">);</span>
</span><span class='line'><span class="err">    </span><span class="n">NSString</span> <span class="o">*</span><span class="n">content</span> <span class="o">=</span> <span class="p">[</span><span class="n">RequestSender</span> <span class="nl">sendRequest:</span><span class="n">url</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="n">NSMutableString</span> <span class="o">*</span><span class="n">result</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSMutableString</span> <span class="nl">stringWithString:</span><span class="n">content</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="p">[</span><span class="n">result</span> <span class="nl">setString:</span><span class="p">[</span><span class="n">result</span> <span class="nl">substringFromIndex:</span><span class="p">[</span><span class="n">result</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;Serialization/</span><span class="se">\&quot;</span><span class="s">&gt;&quot;</span><span class="p">].</span><span class="n">location</span> <span class="o">+</span> <span class="mi">16</span><span class="p">]];</span>
</span><span class='line'><span class="err">    </span><span class="p">[</span><span class="n">result</span> <span class="nl">setString:</span><span class="p">[</span><span class="n">result</span> <span class="nl">substringToIndex:</span><span class="p">[</span><span class="n">result</span> <span class="nl">rangeOfString:</span><span class="s">@&quot;&lt;/string&gt;&quot;</span><span class="p">].</span><span class="n">location</span><span class="p">]];</span>
</span><span class='line'><span class="err">    </span><span class="k">return</span> <span class="n">result</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="k">@end</span>
</span></code></pre></td></tr></table></div></figure>


<p>RequestSender.h</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
</pre></td><td class='code'><pre><code class='objc'><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="c1">//  RequestSender.h</span>
</span><span class='line'><span class="c1">//  MusicSeeker</span>
</span><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="c1">//  Created by Martian on 11-6-3.</span>
</span><span class='line'><span class="c1">//  Copyright 2011 No. All rights reserved.</span>
</span><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="cp">#import &lt;Cocoa/Cocoa.h&gt;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">@</span><span class="n">interface</span> <span class="n">RequestSender</span> <span class="o">:</span> <span class="n">NSObject</span> <span class="p">{</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="o">+</span> <span class="p">(</span><span class="n">NSString</span><span class="o">*</span><span class="p">)</span><span class="nl">sendRequest:</span><span class="p">(</span><span class="n">NSString</span><span class="o">*</span><span class="p">)</span><span class="n">url</span><span class="p">;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="k">@end</span>
</span></code></pre></td></tr></table></div></figure>


<p>RequestSender.m</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
</pre></td><td class='code'><pre><code class='objc'><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="c1">//  RequestSender.m</span>
</span><span class='line'><span class="c1">//  MusicSeeker</span>
</span><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="c1">//  Created by Martian on 11-6-3.</span>
</span><span class='line'><span class="c1">//  Copyright 2011 No. All rights reserved.</span>
</span><span class='line'><span class="c1">//</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="cp">#import &quot;RequestSender.h&quot;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">@</span><span class="n">implementation</span> <span class="n">RequestSender</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="o">+</span> <span class="p">(</span><span class="n">NSString</span><span class="o">*</span><span class="p">)</span><span class="nl">sendRequest:</span><span class="p">(</span><span class="n">NSString</span><span class="o">*</span><span class="p">)</span><span class="n">url</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'><span class="err">    </span><span class="n">NSString</span> <span class="o">*</span><span class="n">urlString</span> <span class="o">=</span> <span class="n">url</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="n">NSMutableURLRequest</span> <span class="o">*</span><span class="n">request</span> <span class="o">=</span> <span class="p">[[</span><span class="n">NSMutableURLRequest</span> <span class="n">alloc</span><span class="p">]</span> <span class="n">init</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="p">[</span><span class="n">request</span> <span class="nl">setURL:</span><span class="p">[</span><span class="n">NSURL</span> <span class="nl">URLWithString:</span><span class="n">urlString</span><span class="p">]];</span>
</span><span class='line'><span class="err">    </span><span class="p">[</span><span class="n">request</span> <span class="nl">setHTTPMethod:</span><span class="s">@&quot;GET&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="n">NSString</span> <span class="o">*</span><span class="n">contentType</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSString</span> <span class="nl">stringWithFormat:</span><span class="s">@&quot;text/xml&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="p">[</span><span class="n">request</span> <span class="nl">addValue:</span><span class="n">contentType</span> <span class="nl">forHTTPHeaderField:</span> <span class="s">@&quot;Content-Type&quot;</span><span class="p">];</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="n">NSHTTPURLResponse</span><span class="o">*</span> <span class="n">urlResponse</span> <span class="o">=</span> <span class="nb">nil</span><span class="p">;</span>
</span><span class='line'><span class="err">    </span><span class="n">NSData</span> <span class="o">*</span><span class="n">responseData</span> <span class="o">=</span> <span class="p">[</span><span class="n">NSURLConnection</span> <span class="nl">sendSynchronousRequest:</span><span class="n">request</span> <span class="nl">returningResponse:</span><span class="o">&amp;</span><span class="n">urlResponse</span> <span class="nl">error:</span><span class="nb">NULL</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="n">NSString</span> <span class="o">*</span><span class="n">result</span> <span class="o">=</span> <span class="p">[[[</span><span class="n">NSString</span> <span class="n">alloc</span><span class="p">]</span> <span class="nl">initWithData:</span><span class="n">responseData</span> <span class="nl">encoding:</span><span class="n">NSUTF8StringEncoding</span><span class="p">]</span> <span class="n">autorelease</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="c1">//0x80000632 gb2312</span>
</span><span class='line'><span class="err">    </span><span class="p">[</span><span class="n">request</span> <span class="n">release</span><span class="p">];</span>
</span><span class='line'><span class="err">    </span><span class="k">if</span> <span class="p">([</span><span class="n">urlResponse</span> <span class="n">statusCode</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="mi">200</span> <span class="o">&amp;&amp;</span> <span class="p">[</span><span class="n">urlResponse</span> <span class="n">statusCode</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">300</span><span class="p">)</span>
</span><span class='line'><span class="err">        </span><span class="k">return</span> <span class="n">result</span><span class="p">;</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="err">    </span><span class="k">return</span> <span class="s">@&quot;NULL&quot;</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="err"> </span>
</span><span class='line'><span class="k">@end</span>
</span></code></pre></td></tr></table></div></figure>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[[原创][Mac]DynamicLyrics – 在菜单栏显示iTunes歌曲歌词的插件[1.1发布]]]></title>
    <link href="http://blog.4321.la/articles/2011/08/13/dynamiclyrics/"/>
    <updated>2011-08-13T23:36:00+08:00</updated>
    <id>http://blog.4321.la/articles/2011/08/13/dynamiclyrics</id>
    <content type="html"><![CDATA[<blockquote><p>2011年10月29发布1.1版本<br/>更新内容如下：</p><p>1、歌词切换添加渐隐、渐显特效，更加平滑</p><p>2、修正软件运行过程中不能退出iTunes的BUG</p><p>3、添加全部歌词复制、LRC内容复制功能</p><p>4、优化部分核心算法，调整界面文字提示细节</p><p>下载地址请见文章结尾，如果您是第一次使用本软件，推荐您耐心阅读一下下面的介绍。</p></blockquote>


<p>Martian是一位喜欢听各种鸟语的歌的人，听不懂也不知道歌是不是高雅，虽说周围人也没几个听懂的，但是天天没事听那些歌词比国产爱情歌还二的歌实在是有损苹果电脑声卡。</p>

<p>于是Martian决定写一个蛋疼的插件，用来支持iTunes的歌词显示</p>

<!-- more -->


<p>但是Martian发现，Windows遗留下来的最大化习惯挥之不去，没事就把Safari的窗口拉到全屏的Matian发现，屏幕一点空都木有了，(￣▽￣”)</p>

<p>所以，我就决定，这个软件一定要顺带把标题栏那点空间给挡住</p>

<p><img src="http://i.imgur.com/T44rX.png" alt="image" /></p>

<p>老规矩，再废话一下软件的特性吧：</p>

<p>1、软件启动后没有界面，不要以为软件是什么木马或者病毒之类的坏东西，在Unix系统下没弹窗让你输密码我可是连个系统文件都读取不到。(￣_￣|||)</p>

<p>2、软件会自动启动iTunes，但是不会自动播放，进去找一首你喜欢的歌，然后播放即可</p>

<p>3、我相信各位用iTunes听歌的果粉应该不会把ID3标签弄得一塌糊涂吧，只要歌曲名里面不带括号之类的符号，没有繁体中文的话，DynamicLyrics都会帮你自动搜索歌词，然后显示在标题栏上</p>

<p>4、如果无法自动找到歌词，单击菜单，选择搜索歌词，就会有个框出来让你选择歌词，搜索后双击就可以</p>

<p><img src="http://i.imgur.com/2uZXu.jpg" alt="image" /></p>

<p>5、电信线路的朋友请注意，不管软件自动匹配歌词成功与否，推荐您都打开搜索歌词窗口，选择电信服务器以后搜索一次歌词，这样软件会记录你的服务器，自动搜索歌词会自动选择电信服务器。</p>

<p>6、单击菜单里面的退出退出软件，当然你也可以去结束进程。</p>

<p>然后，顺带说一下软件的缺点：</p>

<p>1、无法识别内置的Lrc歌词或者是同文件目录的Lrc歌词，只支持服务器上的歌词。这个缺点我会慢慢改进的，但是Martian蛋疼的技术让他进展缓慢，所以请各位理解。</p>

<p>2、无法导出Lrc歌词，下个版本会支持的。</p>

<p>3、可能有一些无法预知的错误，比如内存泄漏。(￣▽￣”)</p>

<p>总之就是这样，作为一位刚接触Cocoa开发模式的苦逼的程序员，希望大家能够谅解。</p>

<p>另外，Martian的周围很少有用Mac的人，所以希望大家测试以后如果有什么问题，请向我的博客反馈一下，方便我进行处理解决。</p>

<p>嗯～就是这样～(｡TωT)ﾉ☆･ﾟ:*:</p>

<p>好，下面放出下载地址：</p>

<p><a href="http://down.4321.la/DynamicLyrics.zip">http://down.4321.la/DynamicLyrics.zip</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[[Mac][原创]MusicSeeker Plug-in for iYY 1.0]]></title>
    <link href="http://blog.4321.la/articles/2011/08/09/iyy-qqmusic/"/>
    <updated>2011-08-09T23:33:00+08:00</updated>
    <id>http://blog.4321.la/articles/2011/08/09/iyy-qqmusic</id>
    <content type="html"><![CDATA[<p>年初的时候入手了MacBook Pro，开始了解Mac OS X系统。</p>

<p>发现常用的软件基本都有可替代方案，但是播放音乐、显示歌词始终找不到完美的程序。</p>

<p>最近发现了iYY这款音乐软件，软件的界面非常华丽，同时支持歌词搜索与显示功能，类似于Windows下的千千静听。</p>

<p><img src="http://www.beyondcow.com/iyy/plugin/img/qqmusic.png" alt="image" /></p>

<!-- more -->


<p>软件的功能恰好满足大部分人的需求，发现的几款软件BUG我也很快就找到作者，并联系他解决了问题。</p>

<p>于是我就开工开发了一款插件，将MusicSeeker的部分功能做到插件里面，实现高品质音乐的无损下载与搜索，使用iYY的用户能方便地下载音乐。</p>

<p><img src="http://i.imgur.com/FZlzx.jpg" alt="image" /></p>

<p>插件特性：</p>

<p>1、支持高码率MP3下载，搜索时候自动显示最高码率的音质</p>

<p>2、支持FLAC无损下载，同时不喜欢FLAC的朋友也可以选择下载320Kbps的MP3</p>

<p>这款插件只能在iYY里面运行，如果有需要的朋友可以到iYY的官方网站下载。</p>

<p>另外独立运行的MusicSeekerX与MusicSorterX正在开发计划中，敬请各位期待！</p>

<p>iYY官方网站：http://beyondcow.com/iyy/</p>

<p>iYY官方插件下载：http://beyondcow.com/iyy/#tab4</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[[原创]KissXiami – 轻量级在线虾米音乐下载网站上线]]></title>
    <link href="http://blog.4321.la/articles/2011/05/07/kissxiami/"/>
    <updated>2011-05-07T23:31:00+08:00</updated>
    <id>http://blog.4321.la/articles/2011/05/07/kissxiami</id>
    <content type="html"><![CDATA[<p>KissXiami.com是我在开发MusicSeeker和MusicSorter这样的.NET WPF架构的东西时的业余作品，主要是想练练PHP，网站非盈利，无广告，简洁的界面……</p>

<p>如果你直接打开KissXiami.com的话，估计会失望……是的，网站简陋到连个首页都木有……</p>

<p>那如何使用呢？</p>

<p>方法很简单：</p>

<p>第一步：上虾米网站上找到自己中意的单曲、专辑、歌手页面、精选集页面。</p>

<p>第二步：从浏览器打开页面。</p>

<p>以上两步做不好的人请自觉去书店买一本老年人学电脑……</p>

<p>例如此时打开的页面的网址是：http://www.xiami.com/song/1769196206</p>

<p>然后，把鼠标放在地址栏上，对，就是显示地址的那东西（据说有一个O开头的浏览器会把地址后面部分隐藏，点一下就可以了……）</p>

<p><img src="http://i.imgur.com/TBsO2.png" alt="image" /></p>

<p>然后更改网址，把www.xiami.com改成www.kissxiami.com，其实说明白了，就是在xiami前面加上一个kiss</p>

<p><img src="http://i.imgur.com/jlaRL.png" alt="image" /></p>

<p>然后，按下亲爱的回车键，就是键盘上标有Enter的那个按键</p>

<p><img src="http://i.imgur.com/9ywms.png" alt="image" /></p>

<p>网页载入完毕以后就会自动探测歌曲的下载地址，音质是虾米的试听音质，很搓，但是总比没有好……</p>

<p>如果你想追求更完美的音质，还是推荐您看看我老早就发布了的那一款软件：MusicSeeker</p>

<p>至于下载，虽然说迅雷也不是不可以，但是我测试还是用目标另存为下载的效果最好，迅雷有时候有速度有时候没有的挺麻烦的……</p>

<p>就写这么多吧，目前KissXiami支持单曲、专辑、歌手页面、精选集，使用的方法都一样，都是把网址里的xiami.com前面加上kiss即可</p>

<p>感谢您的支持，有任何问题或者意见建议请从下面评论，或者给我发E-Mail。</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[[原创软件]MusicSeeker – 歌曲、专辑图片、歌词全自动下载工具 Version 2.0]]></title>
    <link href="http://blog.4321.la/articles/2011/05/07/musicseeker2/"/>
    <updated>2011-05-07T23:27:00+08:00</updated>
    <id>http://blog.4321.la/articles/2011/05/07/musicseeker2</id>
    <content type="html"><![CDATA[<p>MusicSeeker 2.0 是一款基于MusicDonwloader设计思想的，为iPhone、iPod Touch、Android等大屏幕触摸手机、MP4开发的音乐下载软件，基于MusicSeeker第一个版本完善改进而来。</p>

<p>MusicSeeker 2.0软件特性：</p>

<p>0 自动选择最高码率MP3音质（320Kbps）、自动下载导入专辑图片、自动下载LRC歌词、自动下载支持iTunes的静态歌词</p>

<p>1 采用全新的UI设计，基于Windows Aero思想。</p>

<p>2 添加无损音乐（FLAC\APE）源（仅支持部分歌曲）。</p>

<p>3 添加对Windows-64Bit的原生支持（非WOW64）。</p>

<p>4 添加音乐视听功能、音乐分享功能。</p>

<p>5 添加下载目录设置功能。</p>

<p>6 添加全局异常捕获，一定程度防止软件崩溃。</p>

<p>7 修复歌曲下载歌词混乱的BUG。</p>

<p>8 修复下载歌曲重名的BUG，采用“歌曲名 – 歌手名.扩展名”的命名方式。</p>

<p>9 去除部分繁冗的选项，删除自动添加到iTunes的功能（多占用磁盘空间）。</p>

<p>10 删除部分软件特效动画，增加软件运行流畅度。</p>

<p>11 添加对低码率音乐的搜索支持，完善搜索算法，音乐库资源更加全面！</p>

<p>12 进一步完善对日文、韩文搜索优化</p>

<p><img src="http://i.imgur.com/Z4htO.png" alt="image" /></p>

<p>软件介绍：MusicSeeker第一版发布以来，着实解决了许多网友下载音乐的问题，虽然软件是从MusicDownloader上完善而来，但是仍然存在着一些问题，这个版本在修复问题的同时，也进一步的加强了软件的易用性。</p>

<!-- more -->


<p>全新设计的UI： 皮肤设计 – 恋星（http://yistring.com/ifun/），感谢恋星对软件的开发提供界面设计。</p>

<p><img src="http://i.imgur.com/yyIVx.png" alt="image" /></p>

<p>添加了搜索智能提示功能，方便搜索歌曲</p>

<p><img src="http://i.imgur.com/8Bami.png" alt="image" /></p>

<p>添加了歌曲试听功能、复制歌曲试听地址、分享微博功能</p>

<p><img src="http://i.imgur.com/0M04y.png" alt="image" /></p>

<p>MusicSeeker添加了对歌曲信息的编辑功能的支持，如果您想要下载的歌曲的名称过于繁冗，或者专辑名称错误导致无法找到正确的专辑图片，均可以在添加下载任务的时候进行修改。PS：单击“应用”的同时程序会重新根据专辑来获取专辑图片。</p>

<p><img src="http://i.imgur.com/tcIwk.png" alt="image" /></p>

<p>下载列表中添加了右键菜单，同时通过双击下载列表也可以来迅速定位到文件。</p>

<p><img src="http://i.imgur.com/ijNh7.png" alt="image" /></p>

<p>Version2.0里面添加了软件设置，支持设置音乐下载保存路径、无损音乐格式（FLAC或APE）</p>

<p><img src="http://i.imgur.com/FvH2R.png" alt="image" /></p>

<p>下载下来的歌曲均已经含有歌词和专辑图片，是完全兼容iTunes的，上图是在我的iTouch里的播放效果。</p>

<p>最重要的是，歌词、专辑图片全部都是一键下载，完全不需要手动再去搜索资源！</p>

<p>要运行MusicSeeker，您的PC必须安装有Microsoft .Net Framework 3.5 SP1以及微软雅黑字体，如果您使用的Windows 7/Vista系统，则系统已经自带，无需再次安装，如果您用的是Windows Xp系统，则也请下载我们的软件进行运行，如果缺少以上组件，程序会给出提示，同时给出具体的解决方案。</p>

<p>下载地址：</p>

<p><a href="http://down.4321.la/MusicSeekerPlus.zip">http://down.4321.la/MusicSeekerPlus.zip</a></p>

<p>（支持迅雷等下载工具）</p>

<p>最后更新：2011年5月9日
更新内容： 修复无损音乐部分下载地址错误的BUG</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[[原创软件]MusicSorter + MusicNamer – 整理音乐？No Problem!]]></title>
    <link href="http://blog.4321.la/articles/2011/04/08/musicsorter-musicnamer/"/>
    <updated>2011-04-08T23:18:00+08:00</updated>
    <id>http://blog.4321.la/articles/2011/04/08/musicsorter-musicnamer</id>
    <content type="html"><![CDATA[<p>MusicSeeker发布以后有很多的朋友支持我，同时有很多人提出开发一款整理现有音乐的软件，断断续续的开发了一个月，基本完工了，就是您现在正在看的软件——MusicSorter。</p>

<p>MusicSorter是一款整理已有音乐、自动下载专辑图片、下载静态歌词保存到iTunes等软件可以识别的标签中的软件，非常适合iPhone、iPod Touch等大屏幕等支持专辑图片显示的手机、MP4。</p>

<!-- more -->


<p>最后更新：2011年6月7日 16:01:54</p>

<p>更新内容：1、修复歌词算法的一处BUG 2、添加手动选择歌词 手动搜索歌词的功能</p>

<p><img src="http://i.imgur.com/aNNoS.png" alt="image" /></p>

<p>首先感谢恋星同学(http://yistring.com/ifun/)软件开发提供的皮肤设计，超赞！</p>

<p>软件启动界面如下：</p>

<p><img src="http://i.imgur.com/2Eap1.png" alt="image" /></p>

<p>批量下载截图：</p>

<p><img src="http://i.imgur.com/rUo4p.png" alt="image" /></p>

<p>整理效果截图：</p>

<p>歌曲的专辑图片已经井然有序，这时候导入iTunes等软件就非常方便省事了。</p>

<p><img src="http://i.imgur.com/ifskJ.png" alt="image" /></p>

<p>2011年6月7日 更新内容说明：</p>

<p><img src="http://i.imgur.com/fnX0S.jpg" alt="image" /></p>

<p>歌曲右键 – 编辑歌曲歌词中，添加功能，方便手动搜索歌词。</p>

<p>————————————————————————————————————</p>

<p>补充说明：</p>

<p>1、要运行MusicSorter，您的PC必须安装有Microsoft .Net Framework 3.5 SP1以及微软雅黑字体，如果您使用的Windows 7/Vista系统，则系统已经自带，无需再次安装，如果您用的是Windows XP系统，则也请下载我们的软件进行运行，如果缺少以上组件，程序会给出提示，同时给出具体的解决方案。</p>

<p>（如果您的电脑已经成功运行MusicSeeker，则运行MusicSorter就不会有任何问题，同时MusicSorter针对64位系统进行了专门优化，支持原生64位模式下运行！）</p>

<p>2、软件当前处于测试阶段，强烈推荐您在开启批量下载前备份您的歌曲！</p>

<p>3、关于软件的使用教程，请查看MusicSorter的软件使用教程，因为我对UI交互不是很在行，希望大家多多谅解，耐心读一下教程，有任何使用上的问题请直接回复该文章或者给我发E-Mail，收到邮件的第一时间会回复大家的！</p>

<p>教程传送门：http://blog.4321.la/2011/04/318.html</p>

<p>————————————————————————————————————</p>

<p>MusicNamer：</p>

<p>MusicSorter的开发离不开Shindo同学的支持，本次发布中联合发布MusicSorter与MusicNamer这两款软件，MusicNamer是一款根据歌曲ID3标签自动重命名软件的轻量级工具，基于Windows SDK开发：</p>

<p><img src="http://i.imgur.com/D3Ddq.jpg" alt="image" /></p>

<p>更多信息，请访问MusicNamer发布页：<a href="http://sdou.net/2011/04/133.html">http://sdou.net/2011/04/133.html</a></p>

<p>————————————————————————————————————</p>

<p>下载地址（MusicSorter + MusicNamer）</p>

<p>直接下载地址：<a href="http://down.4321.la/MusicSorterNamer20110607.zip">http://down.4321.la/MusicSorterNamer20110607.zip</a></p>

<p>感谢各位的支持，欢迎大家提出意见建议，您的支持是我们最大的动力！</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[MusicSorter使用教程]]></title>
    <link href="http://blog.4321.la/articles/2011/04/05/musicsorter-faq/"/>
    <updated>2011-04-05T23:15:00+08:00</updated>
    <id>http://blog.4321.la/articles/2011/04/05/musicsorter-faq</id>
    <content type="html"><![CDATA[<p>首先，感谢您选用MusicSorter作为您的音乐整理软件，推荐您仔细阅读下面的教程，以获得更加的用户体验。</p>

<!-- more -->


<p>教程一：添加歌曲</p>

<p>启动软件，等待Loading画面结束，单击软件左下角的“<img src="http://i.imgur.com/1XHS8.png" alt="image" />”按钮即可</p>

<p>在添加对话框中，您可以多选文件，或者按Ctrl+A全选一个文件夹内的所有文件</p>

<p><img src="http://i.imgur.com/b1sqP.png" alt="image" /></p>

<p>当前版本仅支持MP3类型的文件，其它类型的文件会自动忽略，无需手动排除</p>

<p>教程二：选中歌曲、自动下载专辑图片、歌曲歌词</p>

<p><img src="http://i.imgur.com/s7DLX.png" alt="image" /></p>

<p>添加歌曲之后，如果歌曲本身已经带有专辑图片、歌词的话，软件右面就会有<img src="http://i.imgur.com/Xl4vC.png" alt="image" />的提示</p>

<p>选中一款不含专辑图片或者歌词的歌曲，程序就会自动开始搜索，并在右边显示出来搜索出来的专辑封面的结果</p>

<p><img src="http://i.imgur.com/U9uRD.png" alt="image" /></p>

<p>专辑封面的两侧有时候有“&lt;“”>”的按钮，意味着有多个专辑图片供您选择。</p>

<p>如果搜索不到结果，请在下面的”歌曲信息“里面进行修改，然后按回车键重新调用软件自动搜索</p>

<p>对于专辑图片错误的歌曲，也可以通过对歌曲信息修改并按回车键的方法来重新激活软件搜索</p>

<p><img src="http://i.imgur.com/qjLI5.png" alt="image" /></p>

<p>当歌曲专辑图片OK后，就可以单击“保存”按钮保存修改到歌曲了！</p>

<p>这时歌曲列表的左边对应的歌曲也会显示出歌曲已经包含专辑图片了。</p>

<p><img src="http://i.imgur.com/iB6vu.png" alt="image" /></p>

<p>教程三：手动编辑歌词、删除歌词或专辑图片</p>

<p>右键单击歌曲项目，会弹出快捷菜单，支持编辑、删除歌曲歌词，删除专辑图片。</p>

<p>方便在专辑图片或歌曲歌词错误的时候进行人工修改。</p>

<p><img src="http://i.imgur.com/6i8De.png" alt="image" /></p>

<p><img src="http://i.imgur.com/h99Zk.png" alt="image" /></p>

<p>教程四：批量下载</p>

<p>批量下载适用于歌曲较多、歌曲ID3已经比较整齐的情况，如果您的歌曲大多都是百度下载的，ID3标签并不是非常准确，则批量下载的体验会因此大大折扣。</p>

<p>另外软件处于测试阶段，强烈推荐您在批量下载之前备份您的歌曲，如果遇到任何批量下载过程中软件崩溃、歌曲损坏的问题，请及时联系我们。</p>

<p>批量下载的方法非常简单，添加歌曲、单击”下载全部歌曲歌词“即可！</p>

<p>下载前推荐您关闭迅雷等占用带宽的软件，以加快软件下载专辑图片的速度。</p>

<p><img src="http://i.imgur.com/Tcwmu.png" alt="image" /></p>

<p>软件的大概使用方法就是这样了，有任何的问题请从软件发布帖内留言回复或者通过E-Mail、微博联系我，这篇文章关闭回复，不然实在是忙不过来，呵呵。</p>

<p>再次感谢您的支持</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[[原创发布]MusicSeeker——歌曲、专辑图片、歌词全自动下载工具]]></title>
    <link href="http://blog.4321.la/articles/2011/03/05/musicseeker/"/>
    <updated>2011-03-05T23:08:00+08:00</updated>
    <id>http://blog.4321.la/articles/2011/03/05/musicseeker</id>
    <content type="html"><![CDATA[<p>MusicSeeker是一款基于MusicDonwloader设计思想的，为iPhone、iPod Touch、Android等大屏幕触摸手机、MP4开发的音乐下载软件。</p>

<p>软件名称：MusicSeeker</p>

<p>软件特性：自动选择最高码率（320Kbps）、自动下载导入专辑图片、自动下载LRC歌词、自动下载支持iTunes的静态歌词、自动添加到iTunes音乐库。</p>

<p>最后更新：2011年3月20日13:30:04</p>

<p><img src="http://i.imgur.com/M8LbA.png" alt="image" /></p>

<!-- more -->


<p>软件介绍：介于很多朋友对我的MusicDownloader的支持，以及旧版遗留的诸多问题，这次我专门抽时间进行了全新的开发，旨在解决问题和更好的给大家提供服务。新版MusicSeeker在MusicDownloader的基础上添加了码率显示、低码率文件下载支持、LRC歌词及静态歌词下载支持。</p>

<p>全新设计的UI： 皮肤设计 – 恋星（<a href="http://yistring.com/ifun/">http://yistring.com/ifun/</a>），感谢恋星对软件的开发提供界面设计。</p>

<p><img src="http://i.imgur.com/FAvLo.png" alt="image" /></p>

<p>新版的MusicSeeker添加了对歌曲信息的编辑功能的支持，如果您想要下载的歌曲的名称过于繁冗，或者专辑名称错误导致无法找到正确的专辑图片，均可以在添加下载任务的时候进行修改。PS：单击“应用”的同时程序会重新根据专辑来获取专辑图片。</p>

<p><img src="http://i.imgur.com/ZTIDI.png" alt="image" /></p>

<p>歌曲会自动下载到 我的文档 – 我的音乐 目录，当然您也可以通过双击下载列表来迅速定位到文件</p>

<p>LRC歌词自动下载，并保存到音乐所在目录，与音乐文件同文件名：</p>

<p><img src="http://i.imgur.com/m6Pff.png" alt="image" /></p>

<p>如果勾选了“自动下载专辑图片”“自动下载歌词”等功能，下载下来的图片是完全兼容iTunes的：</p>

<p><img src="http://i.imgur.com/UFico.png" alt="image" /></p>

<p>在我的iPod Touch里面的播放效果：</p>

<p><img src="http://i.imgur.com/qr3lU.png" alt="image" /></p>

<p>最重要的是，歌词、专辑图片全部都是一键下载，完全不需要手动再去搜索资源！</p>

<p>要运行MusicSeeker，您的PC必须安装有Microsoft .Net Framework 3.5 SP1以及微软雅黑字体，如果您使用的Windows 7/Vista系统，则系统已经自带，无需再次安装，如果您用的是Windows Xp系统，则也请下载我们的软件进行运行，如果缺少以上组件，程序会给出提示，同时给出具体的解决方案。</p>

<p>下载地址：</p>

<p>直接下载 – <a href="http://down.4321.la/MusicSeeker20110320.zip">http://down.4321.la/MusicSeeker20110320.zip</a> （支持迅雷等下载工具）</p>

<p>最后更新：2011年3月20日13:30:37</p>

<p>更新版本：0.11</p>

<p>更新内容：</p>

<p>1、修复已知崩溃问题、歌词匹配不准的问题</p>

<p>2、增加韩文搜索支持</p>

<p><strong>（MusicSeeker目前仅是从MusicDownloader上继续开发而来的第一个版本，在停止MusicDownloader项目的同时，MusicSeeker后续版本将会给大家带来更全的歌曲曲库、试听等更加实用的功能，敬请期待。）</strong></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[[原创]使用WPF创建具有渐变效果的按钮特效]]></title>
    <link href="http://blog.4321.la/articles/2011/02/17/wpf-button/"/>
    <updated>2011-02-17T22:50:00+08:00</updated>
    <id>http://blog.4321.la/articles/2011/02/17/wpf-button</id>
    <content type="html"><![CDATA[<p>对于我这样的不会C++，不会GDI+，不精通Photoshop的悲催人士来说，想实现华丽的界面，唯有使用WPF，虽然它属于托管平台，运行效率也非常低，但是在UI设计上确实是非常的给力。</p>

<p>先放一张效果图：</p>

<p>正常状态效果：<img src="http://i.imgur.com/ubqSI.png" alt="WPF" /></p>

<p>鼠标悬停效果：<img src="http://i.imgur.com/eBe4B.png" alt="WPF" /></p>

<!-- more -->


<p>同时这期间含有的渐变外发光特效，图片上看不出来效果，大家可以下载我的320Kbps音乐下载助手即可看到效果，或者将下文的代码自己调试出来即可。</p>

<blockquote><p>转载请注明 http://www.4321.la</p></blockquote>


<p>第一步，使用Microsoft Expression Blend 4新建一个WPF 3.5工程，如下图所示：</p>

<p><img src="http://i.imgur.com/eBe4B.png" alt="WPF" /></p>

<p>第二步，使用左侧工具栏添加一个Button到客户区中
<img src="http://i.imgur.com/XX26G.png" alt="image" /></p>

<p><img src="http://i.imgur.com/SFaaS.png" alt="image" /></p>

<p>第三步，选中按钮，以此单击菜单对象 – 编辑样式 – 编辑副本</p>

<p><img src="http://i.imgur.com/vMyRj.png" alt="image" /></p>

<p>为了方便以后将相同的样式应用到别的按钮中，推荐选择定义位置为“应用程序”，同时起一个好记的名字：</p>

<p><img src="http://i.imgur.com/pSMiG.png" alt="image" /></p>

<p>单击确定按钮以后，程序会自动打开App.xaml文件，如下图所示：</p>

<p><img src="http://i.imgur.com/anP8m.png" alt="image" /></p>

<p>第四步，切换到XAML编辑模式，通过敲代码来实现一个绚丽的按钮，先实现更改默认的颜色</p>

<p><img src="http://i.imgur.com/DNKaf.png" alt="image" /></p>

<p>切换到XAML模式，顿时就会出现很多的代码（如图），不过微软还是比较仗义的，刷子、属性的名称都是用的比较通俗的英语……没有什么mov啊pop啊push啊什么的……</p>

<p><img src="http://i.imgur.com/4YnYm.png" alt="image" /></p>

<p>首先，先修改ButtonNormalBackground这个LinearGradientBrush（线性渐变刷子，更多信息参考MSDN，传送门），把Windows7/Vista自带的那种灰黑渐变的按钮改成白灰渐变。</p>

<p>系统自动生成的代码是：</p>

<blockquote><p><LinearGradientBrush x:Key="ButtonNormalBackground" EndPoint="0,1" StartPoint="0,0"><br/>  <GradientStop Color="#F3F3F3" Offset="0"/><br/>  <GradientStop Color="#EBEBEB" Offset="0.5"/><br/>  <GradientStop Color="#DDDDDD" Offset="0.5"/><br/>  <GradientStop Color="#CDCDCD" Offset="1"/><br/></LinearGradientBrush></p></blockquote>


<p>将他修改成：</p>

<blockquote><p><LinearGradientBrush x:Key="ButtonNormalBackground" EndPoint="0,1" StartPoint="0,0"><br/>   <GradientStop Color="#fefefe" Offset="0"/> <!--非鼠标Hover的背景颜色--><br/>   <GradientStop Color="#fefefe" Offset="0.5"/><br/>   <GradientStop Color="#efefef" Offset="0.5"/><br/>   <GradientStop Color="#efefef" Offset="1"/><br/></LinearGradientBrush></p></blockquote>


<p>（当然如果有自己喜欢的颜色也可以更改上去，或者也可以多加几个颜色渐变，Color是颜色，Offset是位置）</p>

<p>到这里可以F5运行一下，非鼠标Hover的时候，就已经生效了！</p>

<p>第五步，修改鼠标Hover时候的颜色以及渐变效果</p>

<p>这时候发现下面的代码不给力了，微软没有Hover啊什么的这样的敏感关键词在里面，只能自己原创了……</p>

<p>首先在<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">里面添加&lt;Style.Resources>，再添加两个Storyboard，用来显示渐变效果（这种时候还是敲代码最好，不推荐用什么可视化设计器）：</p>

<p><img src="http://i.imgur.com/b6K9I.png" alt="image" /></p>

<blockquote><p><Style.Resources><br/>  <Storyboard x:Key="ButtonHover"><br/>    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)"><br/>    <SplineDoubleKeyFrame KeyTime="00:00:00.2000000" Value="5" /><br/>    </DoubleAnimationUsingKeyFrames><br/>  </Storyboard><br/> <br/>  <Storyboard x:Key="ButtonWithoutHover"><br/>    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)"><br/>    <SplineDoubleKeyFrame KeyTime="00:00:00.1000000" Value="0" /><br/>    </DoubleAnimationUsingKeyFrames><br/>  </Storyboard><br/></Style.Resources></p></blockquote>


<p>关于上面的代码的作用，大家可以对照MSDN理解一下，<a href="http://www.microsoft.com/china/MSDN/library/windev/longhorn/storyboardstory.mspx?mfr=true">http://www.microsoft.com/china/MSDN/library/windev/longhorn/storyboardstory.mspx?mfr=true</a></p>

<p>然后我们在下面添加两个触发器（Style.Triggers），第一个触发器同时实现两个功能：启动Storyboard，修改按钮颜色；第二个触发器绑定的是IsPressed事件，让按钮按住的时候修改背景颜色为灰色，这样就有按下的感觉。</p>

<p><img src="http://i.imgur.com/a3nO9.png" alt="image" /></p>

<blockquote><p><Style.Triggers><br/><Trigger Property="IsMouseOver" Value="True"><br/> <Trigger.ExitActions><br/><BeginStoryboard x:Name="ButtonWithoutHover_BeginStoryboard" Storyboard="{StaticResource ButtonWithoutHover}"/><br/> </Trigger.ExitActions><br/> <Trigger.EnterActions><br/><BeginStoryboard Storyboard="{StaticResource ButtonHover}"/><br/> </Trigger.EnterActions><br/> <Setter Property="Background"><br/><Setter.Value><br/> <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"><br/>         <GradientStop Color="White" Offset="0"/> <!--鼠标Hover的背景颜色--><br/>         <GradientStop Color="#fbfcfe" Offset="0.5"/><br/>         <GradientStop Color="#d4e8fe" Offset="0.5"/><br/>         <GradientStop Color="#fbfcfe" Offset="1"/><br/>       </LinearGradientBrush><br/></Setter.Value><br/> </Setter><br/> <Setter Property="Foreground" Value="#FF34AFF6"/><br/>   </Trigger><br/>   <Trigger Property="IsPressed" Value="True"><br/>    <Trigger.ExitActions><br/>   <StopStoryboard BeginStoryboardName="ButtonWithoutHover_BeginStoryboard"/><br/>    </Trigger.ExitActions><br/>    <Trigger.EnterActions><br/>   <BeginStoryboard x:Name="ButtonWithoutHover_BeginStoryboard1" Storyboard="{StaticResource ButtonWithoutHover}"/><br/>    </Trigger.EnterActions><br/>     <Setter Property="Background" Value="#eaeaea" /><br/>     <Setter Property="Foreground" Value="Gray"/><br/>   </Trigger><br/> </Style.Triggers></p></blockquote>


<p>再回头看看两个Storyboard，修改了按钮的OuterGlowBitmapEffect（外发光）特性，注意是修改，所以如果原来不存在这个属性的话，会出错，所以再在Triggers后面添加一个Setter</p>

<p><img src="http://i.imgur.com/0VIsb.png" alt="image" /></p>

<blockquote><p><Setter Property="BitmapEffect"><br/>  <Setter.Value><br/>    <OuterGlowBitmapEffect GlowColor="#9ecaf4" GlowSize="0" /><br/>  </Setter.Value><br/></Setter></p></blockquote>


<p>这时候可以按下F5运行一下看一下效果了。</p>

<p>第六步，修复BUG</p>

<p>这时大家会发现，辛苦自己写的外发光、渐变、背景修改等特效全部又被Windows自带的效果给覆盖了。</p>

<p>其实正是因为我们之前选择编辑样式的时候选择了编辑副本，微软自动把默认的按钮样式给Copy进来了，方便进一步修改，所以新建样式的同时也需要删除掉不需要的样式。</p>

<p>首先将<Setter Property="Template">中的&lt;ControlTemplate.Triggers>删掉，删掉默认的触发器。</p>

<p><img src="http://i.imgur.com/LgBpr.png" alt="image" /></p>

<p>再将Microsoft_Windows_Themes:ButtonChrome里的RenderMouseOver=&#8221;{TemplateBinding IsMouseOver}&#8221; RenderPressed=&#8221;{TemplateBinding IsPressed}&#8221; RenderDefaulted=&#8221;{TemplateBinding IsDefaulted}&#8221;这部分删掉即可。</p>

<p>此时整个<Setter Property="Template">的代码为</p>

<blockquote><p><Setter Property="Template"><br/> <Setter.Value><br/>  <ControlTemplate TargetType="{x:Type Button}"><br/>   <Microsoft_Windows_Themes:ButtonChrome x:Name="Chrome" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}"  SnapsToDevicePixels="true"><br/>    <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/><br/>   </Microsoft_Windows_Themes:ButtonChrome><br/>  </ControlTemplate><br/> </Setter.Value><br/></Setter></p></blockquote>


<p>完成！</p>

<p>这样我们就实现了一个比较漂亮的按钮的样式，F5运行一下，已经没有BUG了。</p>

<p>扩展，将已有的样式应用到新添加的按钮中</p>

<p>如果需要把新建按钮同时应用这个样式的话，很简单，只需要设置Button的Style=&#8221;{DynamicResource ButtonStyle}&#8221;</p>

<p>如下图所示：</p>

<p><img src="http://i.imgur.com/zO3z0.png" alt="image" /></p>

<p>至此就全部完成了，没手工写API，不用自己搞神马HDC，连Photoshop也没开，敲代码就可以实现非常漂亮的按钮样式。</p>

<p>附录   完工后的XAML按钮样式部分代码：</p>

<blockquote><p><Style x:Key="ButtonFocusVisual"><br/>    <Setter Property="Control.Template"><br/>        <Setter.Value><br/>            <ControlTemplate><br/>                <Rectangle Stroke="Black" StrokeDashArray="1 2" StrokeThickness="1" Margin="2" SnapsToDevicePixels="true"/><br/>            </ControlTemplate><br/>        </Setter.Value><br/>    </Setter><br/></Style><br/><LinearGradientBrush x:Key="ButtonNormalBackground" EndPoint="0,1" StartPoint="0,0"><br/>    <GradientStop Color="#fefefe" Offset="0"/> <!--非鼠标Hover的背景颜色--><br/>    <GradientStop Color="#fefefe" Offset="0.5"/><br/>    <GradientStop Color="#efefef" Offset="0.5"/><br/>    <GradientStop Color="#efefef" Offset="1"/><br/></LinearGradientBrush><br/><SolidColorBrush x:Key="ButtonNormalBorder" Color="#FF707070"/><br/><Style x:Key="ButtonStyle" TargetType="{x:Type Button}"><br/>    <Style.Resources><br/>        <Storyboard x:Key="ButtonHover"><br/>            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)"><br/>                <SplineDoubleKeyFrame KeyTime="00:00:00.2000000" Value="5" /><br/>            </DoubleAnimationUsingKeyFrames><br/>        </Storyboard><br/> <br/>        <Storyboard x:Key="ButtonWithoutHover"><br/>            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)"><br/>                <SplineDoubleKeyFrame KeyTime="00:00:00.1000000" Value="0" /><br/>            </DoubleAnimationUsingKeyFrames><br/>        </Storyboard><br/>    </Style.Resources><br/>    <Style.Triggers><br/>        <Trigger Property="IsMouseOver" Value="True"><br/>            <Trigger.ExitActions><br/>                <BeginStoryboard x:Name="ButtonWithoutHover_BeginStoryboard" Storyboard="{StaticResource ButtonWithoutHover}"/><br/>            </Trigger.ExitActions><br/>            <Trigger.EnterActions><br/>                <BeginStoryboard Storyboard="{StaticResource ButtonHover}"/><br/>            </Trigger.EnterActions><br/>            <Setter Property="Background"><br/>                <Setter.Value><br/>                    <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"><br/>                        <GradientStop Color="White" Offset="0"/> <!--鼠标Hover的背景颜色--><br/>                        <GradientStop Color="#fbfcfe" Offset="0.5"/><br/>                        <GradientStop Color="#d4e8fe" Offset="0.5"/><br/>                        <GradientStop Color="#fbfcfe" Offset="1"/><br/>                    </LinearGradientBrush><br/>                </Setter.Value><br/>            </Setter><br/>            <Setter Property="Foreground" Value="#FF34AFF6"/><br/>        </Trigger><br/>        <Trigger Property="IsPressed" Value="True"><br/>            <Trigger.ExitActions><br/>                <StopStoryboard BeginStoryboardName="ButtonWithoutHover_BeginStoryboard"/><br/>            </Trigger.ExitActions><br/>            <Trigger.EnterActions><br/>                <BeginStoryboard x:Name="ButtonWithoutHover_BeginStoryboard1" Storyboard="{StaticResource ButtonWithoutHover}"/><br/>            </Trigger.EnterActions><br/>            <Setter Property="Background" Value="#eaeaea" /><br/>            <Setter Property="Foreground" Value="Gray"/><br/>        </Trigger><br/>    </Style.Triggers><br/>    <Setter Property="BitmapEffect"><br/>        <Setter.Value><br/>            <OuterGlowBitmapEffect GlowColor="#9ecaf4" GlowSize="0" /><br/>        </Setter.Value><br/>    </Setter><br/>    <Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/><br/>    <Setter Property="Background" Value="{StaticResource ButtonNormalBackground}"/><br/>    <Setter Property="BorderBrush" Value="{StaticResource ButtonNormalBorder}"/><br/>    <Setter Property="BorderThickness" Value="1"/><br/>    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/><br/>    <Setter Property="FontFamily" Value="微软雅黑" /><br/>    <Setter Property="HorizontalContentAlignment" Value="Center"/><br/>    <Setter Property="VerticalContentAlignment" Value="Center"/><br/>    <Setter Property="Padding" Value="1"/><br/>    <Setter Property="Template"><br/>        <Setter.Value><br/>            <ControlTemplate TargetType="{x:Type Button}"><br/>                <Microsoft_Windows_Themes:ButtonChrome x:Name="Chrome" SnapsToDevicePixels="true" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" ><br/>                    <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" RecognizesAccessKey="True"/><br/>                </Microsoft_Windows_Themes:ButtonChrome><br/>            </ControlTemplate><br/>        </Setter.Value><br/>    </Setter><br/></Style></p></blockquote>

]]></content>
  </entry>
  
</feed>

