OSU官网分流下歌脚本+开发日记 千鹤开发日记




  这里说的OSU不是美国俄勒冈州立大学……,而是一只十分开放性而又规范化的音乐游戏(官网地址:http://osu.ppy.sh/),歌包都是由玩家制作,经过一个官方组织的团队去审核歌包是否达到上线的要求,然后才会Rank(排名)。其他商业化的音乐游戏在发售的时候已经买好版权内置好所有歌曲,OSU是个免费运营的游戏,下载一个主程序安装之后,一首歌也不带,所有音乐都要在服务器上下载(收费会员可以直接在游戏中下载,免费会员则从官网上下载),官网上每星期都会更新20~30首歌,不会闷。
  以上,简单介绍到这里。

  免费会员在官网下载歌曲会遇到两个大难题。
  一个是速度,在外国站下东西大家都懂的,线路给力的话还有个几百K,不好运就只能40多K慢慢拉了。这个大家在多人游戏(MP)的时候就深有体会了了,房主换一首歌,等那几个没歌的要等半天才能下好。而且有时候下到中途还会断,又要从头开始,那叫一个抓狂啊。
  第二个是下载限额,在10分钟内只能下载3~5首歌(根据服务器负荷),超额就要等几百秒。
  于是,这个脚本就是为了解决这两个问题而开发的,它能在官网上显示出5个分流下载点,这样大家能下得爽,官网的几台下载服务器的压力也减小。

安装方法

1.需要浏览器是Firefox或者chrome。
2.Firefox安装扩展Greasemonkey
chrome安装扩展Tampermonkey
3.打开脚本页OSU AnotherDownload
4.点击右上角绿色的Install按钮。按提示安装。
*Greasemonkey的自动更新脚本功能需要进去它的选项里关掉“需要安全地更新(HTTPS)”才能使用

使用方法

一行5个分流点,哪个快就点哪个。
*第5个点是需要大家帮忙上传到1000eb的,群众就是力量
点Upload osz!会弹出个小窗口,点击上传之后弹出上传框上传。



以下是开发历史,相信也没什么人看,当日记好了

此时对官网再也忍无可忍的我决心解决这个下歌难题,决定弄一个能在官网上直接点击分流点下歌的脚本。根据脚本上传日期来看,应该是一年多点之前的事了。2011年3、4月份。
  但是首先我不是学这方面的,对HTML、JAVASCRIPT那些完全不懂,只能从零学起,边学边弄。虽说我很喜欢搞电脑,搞软件,但都只是皮毛,真正的编程还没试过,真的开始学JAVASCRIPT的时候发现,脑子经常转不过弯,那些语法也很难记得牢。
  当然最基本的逻辑还是知道的,要弄这么一个脚本,肯定得有个地方获取分流站的连接,对应上官网的那首歌,然后插进去。
  于是开始了最初的尝试,也就是命名为0.1的版本,一切以此为起点。由于之前学过正则表达式,所以最快弄出脚本的方法就只能是将分流点的所有下载链接写到一份文档里上传到免费空间,然后脚本获取整份列表。鉴于这是个世界性难题,应该选择全世界速度都较好又不用读秒下载的网盘作为分流点,刚好MediaFire那段时间又突然能直上,而且MediaFire所有下载链接能在一个页面里取出来,于是就选择这个了。然后就是漫长的上传,只是ADSL实在慢得可怜只能先传一部分了,复制全部链接和对应的文件名,最后用正则表达式整理一下。至于对应官网的那首歌,那时候的想法是:“歌名对应应该就好了吧”,于是用脚本获取歌曲页的全部源代码(w3school的javascript基础教程里并没有说innerHTML这东西,查了半天才知道要用这个,而且对HTMLDOM那些也不理解,以为直接document.body就行,兜了半天弯啊……),然后用正则获取出歌名,可是利用这歌名在连接表里寻找的时候发现经常搜寻不到,后来发现原来遇到特殊字符的歌名就会对不上,于是又弄了个正则过滤歌名里的特殊字符……,实在是各种蛋疼。最疼的是,这一切都是无用功,当有重名歌曲的时候就没法对上了……,0.1版发上去不一会儿就发现好多歌都对不上,因为被重名歌曲弄乱了。
  于是只能重来,这时候发现了官网每首歌都有个ID是与文件名前边那串数字是对应的,这就好办了,在歌曲页面的源代码里挖出ID,然后与下载链接的文件名部分匹配,总算解决问题。大家可以在脚本页的更新历史里看到0.2.0版的“修复重名歌曲错误配对”就是用这个方法修复了。
  0.3版的改变数据方式是为了令储存链接的文档更小,用正则滤去更多不必要的东西。所以又倒腾了半天的正则……大概是这时候,找了一个联通光纤的网友帮忙上传歌曲到MediaFire上去,不然要我ADSL传到何年何月……
  接下来学习了一点PHP的知识,写了个PHP程序自动获取MediaFire的连接,用正则整理好,存放到文档,每次上传新歌到MediaFire就运行一下这个PHP。
  osz.wo.tc这站是MP的时候在棒子房里遇到他们发连接知道的,通过搜索就能列出所有的下载链接,于是加入到文档中,本来MediaFire的连接是一个ID对着一个连接的存放的,加入osz.wo.tc的时候本来是想插进去跟在每一条MediaFire连接后边的,但是两边的链接不是一一对应,很可能osz.wo.tc有连接而MediaFire还没有连接,这时候就插不进去了,于是只能将osz.wo.tc的连接跟在后边,脚本写了两个循环去找连接……,的确是相当没效率的办法,这时候接近期末考试了,所以javascript的学习停止,0.4版主要是用之前学的东西继续维护脚本。
  然后懒了半年到2011年12月,发现osz.wo.tc无法使用,刚好又出来一个Zwing.wo.tc,于是又维护了一下。发布0.5版。然后是期末考试时间……
OSU官网分流下歌脚本+开发日记 千鹤开发日记
  考完试到了2012年1月多,所有大学课程结束,从大学搬出来,有更多自由时间,于是认真找了教程去学习,找到的是php100.com新的那套PHP2012视频教程,现在还在连载中,那讲师讲得挺好,逻辑性强容易理解。学到第9课的时候我知道已经足够知识去改善这个脚本了。刚好原来的免费空间被封,被迫移到SAE上,SAE的流量可都是要算豆的,要是再用一份文档给大家下载,耗费的流量相当大,仅几个人使用一天就耗掉了5豆,那豆绝对不够用(没认证只有500豆)。改成PHP返回数据迫在眉睫。
  幸好这时候对编程已经有点感觉了,利用一个周末,写了个PHP获取MediaFire和Zwing的数据,写入数据库,脚本使用GET提交ID后PHP查找数据库以json格式返回那个ID的MediaFire和Zwing连接,终于从无尽的正则表达式解放出来,每次使用脚本缩耗费的流量也只有一点点。可以说,0.6版之后这个脚本才能算是个正式版。毕竟所有链接都存放在一个文档里,使用脚本的时候就整个文档发出去这种方式,随着OSU的歌曲越来越多,文档也越来越大,总不是个办法,而且如果要添加更多分流点文档的大小也成倍增大。
  解决了燃眉之急后,自己也想着要偷懒了,有了PHP和数据库,完全可以让数据自动维护啊。
  这就是我现时所学习的PHP知识能想出来的运作方式了。别看脚本提交个ID,然后就回来几个连接这么点东西,其实后台远比脚本复杂。不想自己维护,就要各分流点能自动更新,所以在脚本提交ID之后,PHP首先去查询数据库,看有没有这个ID,没有就去分流点查询这个ID,看有没有连接。不过这里有个问题,分流点并不总是更新得那么快,yas和osu.uu.gl是按照歌包更新的,很久才更新一次,难道每次脚本提交这个ID都去查一下分流点吗,那会让脚本工作十分慢,而且很浪费SAE流量。于是在数据库中给每个分流点都增加一列字段来存放最后一次的查询时间,当脚本提交ID时,查询数据库有没有这个ID,没有就去各分流点获取数据,哪些分流点是没有数据的,就获取当前时间存入数据库对应的字段,有数据的当然就能够直接存入数据库了。由于没有ID,这里使用的是插入数据库(insertinto),因为在数据库中执行插入并不会更新已有的ID行,而是不管以前有没有,新插一行ID,所以当有ID的时候,要使用更新数据库(update)。有ID的时候,就别马上去查询分流点了,而是让数据库返回当前时间与分流点上一次查询时间的差。如果小于一个数,就不去查分流点而直接返回空。现在的设定是Zwing600秒,其余两个3600秒(好像7200秒也可以接受?),大于这个数的话,才去获取数据,有数据就更新数据库。
  然后觉得,总是我们分流点来更新数据好像也确实挺累,于是就想大家一起来组建一个分流点了,0.7版就是这样诞生。找了几个提供API的网盘,又测试了速度,最后决定选择1000eb,1000eb的前一个产品good.gd(这站还在的)下载体验也相当不错,在没什么广告的情况下保证了下载速度又保证了文件无限保存,我这里电信12M测试都能轻松满速。当在自己的页面插入1000eb上传组件上传完文件后,他会在页面的文本框插入文件的名字、大小、连接,不过文本框的value值改变不能触发脚本提交数据,只能写个定时器,定时检查value值是否变了,触发提交表单。而确定用户上传的到底是哪首歌就是通过打开上传窗口时候提交的歌曲页ID,另外为了给上传者一点回报,还会提交上传者在官网的注册名字,以后1000eb上显示的Uploader就是上传者的名字了。

  

爱华网本文地址 » http://www.aihuau.com/a/25101013/168237.html

更多阅读

红米手机怎么预定 苹果官网怎么预定手机

红米手机怎么预定——简介在经过8月12号和8月20号的二轮红米手机抢购,如果你还未成功抢购到红米手机的话,请不要放弃。在8月27号12点小米还会继续开放购买。这里简单介绍如何在小米官网预约红米手机的方法。红米手机怎么预定——工具

官网版photoshop cs5破解方法无需序列号 photoshopcs5序列号

官网版photoshop cs5破解方法(无需序列号)——简介很多网友下载安装官网版photoshop cs5(PS5)需要序列号而烦恼,小编给大家讲解如何不要序列号的情况下破解官网版photoshop cs5(PS5)。简单、易学、方便!告别注册机的烦恼!官网版photosho

红米手机怎么抢购 红米手机官网抢购

红米手机怎么抢购——简介红米手机是由小米新推出的一款双卡双待,性价比超强的中低端手机,但也和小米的情况一下,一机难求,很难买到,不过万幸的是在小编人海战术以及各种坚持下终于买到了,现在来讲讲我购买这款手机中的经验。红米手机怎

芳草集官网淘宝官方旗舰店 华为淘宝官方旗舰店

芳草集官网也就是芳草集淘宝官方旗舰店,想要购买芳草集产品,可以点击页面上的图片进入芳草集官方旗舰店,芳草集是广州泛薰芳旗下的天然植物护肤品牌。广州泛薰芳企业有限公司是一家专业致力于纯植物精油生物科技事业开拓与研发的资深企

声明:《OSU官网分流下歌脚本+开发日记 千鹤开发日记》为网友思初念分享!如侵犯到您的合法权益请联系我们删除