Userscript for Fetching duitang.com Album Images | 堆糖的抓图脚本

So userscripts are local scripts written by the user and executed in the browser. This process can be done by manually typing in your script in the console and hitting enter, but there are browser extensions to help you do this automatically.

The most famous ones are GreaseMonkey for Firefox and TamperMonkey for Chrome although the latter also supports other Chromium/WebKit based browsers.

With the help of such extensions, interesting things can be done. And in this case, it is about fetching the album images on duitang.com, a chinese website very similar to pinterest.com.

Instructions can be found here: https://github.com/kaneorotar/duitang-userscript

Have fun and Enjoy!

P.S. This is my first public GitHub repository. Hopefully more is on the way~
—————————————————Lang Cut——————————————————-
所以最近写了个GreaseMonkey/TamperMonkey用的脚本,用于抓取堆糖相册中所有图片的链接。
安装说明在此:https://github.com/kaneorotar/duitang-userscript

P.S. 这是本人第一个GitHub的repository,希望未来能增加更多~

Bad Apple ASCII Javasrcipt字符画版| Bad Apple ASCII Javascript

Bad Apple ASCII 版影绘简介

Bad Apple (坏苹果) 影绘是东方同人作品中的经典,经过后期加工也出现了很多版本,其中ASCII码版的字符动画是其中一大主力,并且在各个平台都有成果:视频,网页,DOS,PSP,Telnet服务器,甚至还有启动盘。
于是出于练手的目的先用Javascript (字符动画播放)和HTML5 (音频播放)实现一番。

传送门:http://rotar.tk/ba

主要工具

  1. 帧提取:Free Video to JPG Converter
  2. 字符化:ASC GEN 2.0
  3. 抽音轨:Free Video to MP3 Converter

体会

目前从效果来说马马虎虎过得去,3:39的动画源文件15.9MB,按30FPS的帧率抽出一共6572帧66.5MB,转成80×35的字符是17.9MB,自己再进行压缩到4.38MB,最后经过PHP的GZip能压缩到1.4MB。

影音不同步是个大问题,目前在想办法解决,大致的办法是使用Audio的currenttime这个属性来计算当前应该达到的帧并且修改帧的索引值。

本来是想用C++来写的,结果发现长时间未使用(plus根基不牢)竟然连读取txt文件都成了大问题,果断要找时间补课了。

Update 2012.08.15

测试了一下IE各版本下的表现,果然差得惊人。于是对IE进行了特殊处理,包括以下:

  1. 把” “(空格)改成” ”
  2. “\n”换成”<br />”
  3. IE7以下版本对于没有内容的”<br />”会直接忽略,于是只得在前添加一个”&nbsp;”
  4. 由于IE不支持ogg格式,当检测到是IE时,跳过音频控制并”建议使用Chrome” XD

Update 21:18

多浏览器支持果然是门学问,这次本以为只有IE会成问题,没想到换成火狐(Firefox)试了试出现了因为字体不是等宽(Monospaced)而产生的严重错位。问题的根源在于之前给pre的标签(tag)在CSS中设置的字体只有一个Courier,这在Win7和iOS上都没问题,可是Firefox并没有这个字体,所以才使用默认字体顶替以至于排版混乱。刚更新的CSS已经添加了6个等宽字体以确保任何系统下都能正常显示。

此外,刚把Chrome的22 Dev版下了来测试发现页面的声音出不来,起因不明,准备再下个21的Beta做对比。

继续PMangar | PMangar Keeps Going

又是一番折腾,算是把CSS弄清楚一些了。首页和浏览页也勉强算是弄了个比较美观的UI,不过高兴的是首页顺利通过W3C认证了,无论结果如何,在过程中算是把规范弄得比较清楚了。

最新版PMangar已经上传到了ver0.003,目前实测在Kindle上依然有个内存不足的问题,虽然设法在浏览中删除了6页之外的旧内容,不过实测表明大约近20页之后浏览器会因为内存的原因重启,这时候Cache数据就完全丢失了。目前准备了解一下Javascript的内存清理方面是否还有优化空间,以及,把保留6页内的内容改成前5页外的全部清空试试。

几张截图:

顺带一提,做完这些的时候偶然在jsfiddle看到了jQuery Mobile,然后立马震精了,这货已经实现了近乎所有移动设备上的浏览器的HTML5兼容(Kindle 3赫然在其中),然后UI方面也有了很不错的兼容各种设备的设计器,不得不说对俺自己设计的想法是个巨大的打击。不过既然工具在此,就可以加以利用,之后的列表一类的功能估计就可以用jQuery Mobile来做了。

PMangar 更新中 | Upgrading PMangar

之前的十来个月荒废了太多太多,回头一想实在是愚蠢至极,随之而来的还有各种后悔。但时光已逝,无论怎样都不会复还了,所以要做的便是:珍惜今后的光阴,以活得不后悔为宗旨,尽力创造美好的生活。

嗯,跑题了,下面言归正传。近期开始各方面发奋,包括各种编程语言,于是利用改善PMangar的机会提升运用PHP乃至是组合网络编程语言的能力。这次的主要目的是恢复键盘热键的使用,以及预读取图像。
1. 键盘热键的问题是在重拾PMangar的时候发现的,那时候一开始是单纯的用本机测试,体验的时候一切正常。可是放到000上无法使用热键,而放在SAE上却可以。那时候并没有深入研究,以为是服务器端的限制导致的,就没有研究了。后来在给漫画预览界面添加封面图的时候又遇到了这个问题,000上死活读不了,而本机和SAE都能正常显示。于是翻来覆去折腾的过程中,一次偶然的机会试了一下源代码中pic.php的地址,发现是个死链,点开会跳到404。
问题就这么找到了,在http://rotar.tk/pm/pm.php中用来fetch图像的pic.php的链接部分原本是缩写成了”/pic.php?url=*****”

这在IIS(本机)和SAE上的实际结果都是 ”http://rotar.tk/pm/pic.php?url=*****“

而到了000那里就被解读成了 “http://rotar.tk/pic.php?url=*****“

于是文件不存在,自然也就无法用来取图。去掉那个斜杠,也就是更正为”pic.php?url=*****”之后,缩略图的显示就全都正常了。

热键使用的key.php也是因为同样的原因而失效,这个问题直到4小时前才被发现及更正。

 

2. 图片预读的办法

主要有两种:

一种是利用Javascript建立Image对象然后对图像进行载入,之后在网页中插入。

而另一种,也是目前在PMangar中采用的方法是利用CSS。原理是利用CSS的background-image来读取图像并且将这个div设置为0x0的大小,于是图像就在读者看不到的情况下载入了。

这里要提一下的是多个图像的地址只需要用逗号隔开就行了,如下:

Javascript部分就比较简单了,沿用之前的document.onkeydown的函数,给了图片一个id(例:pic)然后用getElementById的方法获取,直接pic.src = XXXXX (下一张图的地址)就可以了。链接和标题之类的也是利用Javascript进行修改的,唯一花了点心思的地方是把图片的链接字符串组从PHP搬到了JS的Array里,然后在JS中利用变量进行索引从而达到不刷新页面就能全部浏览的目的。

大概就写这么多了OLO,时间不早,在折腾会儿就水饺了,希望上文能够在今后给意外点进本文的童鞋一点帮助。

——Edit

折腾了一段时间,发现3G下图像的尺寸老是有缩水(WiFi无影响),发现貌似是Kindle升级到3.3了之后才产生的问题,不清楚是本地的浏览器配置的改变还是Whispernet代理服务器搞的鬼。于是还在想办法中,最好是能在Kindle本地解决。

给Kindle 3浏览器集成中文云输入法 | Integrate Cloud IME on Kindle 3 Browser

最近入手了 Kindle 3 (3G+WiFi 美版),各方面感觉都不错,除了中文输入这一点……
解决方案有两个:

其一:使用CanBeFound兄编写的中文输入法

这个效果很好,支持联想还能储存用户词典。目前唯一的遗憾是英文符号的输入相比原来的符号键盘略有些不便,当然从中文的角度来说却是好太多了。

其二:使用基于Javascript的中文云输入法( Sougou, QQ )

此法有个局限,就是只能在浏览器里使用,不过多数时候对于中文输入的需求也就是源于上网,股沟摆渡神马的。

原理是利用浏览器的Article Mode,意即文章模式,启用此模式以后浏览器会把当前网页重新排版成适合Kindle浏览的风格。而其本质则是利用一个JavaScript的脚本对原来的页面内容进行处理。
脚本位置在此:

/usr/share/browser/readability/readability_min_utf16.js (脚本文件)
/usr/share/browser/readability/readability_min_utf16.css (CSS风格文件)

经过一番测试和选择,最后选用的是Sougou云输入法。另外备选的还有QQ云输入法,可惜实际测试中反应速度太慢所以被淘汰。
Continue reading…