[转]简单5步,在新浪微博上关联多个博客

众所周知,新浪微博有一项“关联博客”的功能,可以让我们把自己的博客与新浪微博关联,从而当博客有新的文章发布时,该文章也会自动发布到新浪微博。这一功能非常方便,相当于部分实现了我之前曾经写过的、twitter 相关工具 twitterfeed 的功能。

但是,目前一个新浪微博账号只能关联一个博客,而我相信很多朋友都拥有不止一个的博客(或类博客),比如我就有个人网站(数字营销宝典)、图片博客(Aminus3)、Facebook、Twitter、Flickr等等。这就存在一个很现实的问题:

如何在新浪微博上关联多个博客?

相信有类似需求的朋友不在少数。这几天我通过一些调研和摸索,发现了下面的解决方案,在此分享给各位朋友,希望能对大家有所帮助。

复杂么?用到了什么工具? – 使用工具
一点都不复杂,用到的工具只有一个,就是我们熟悉的 Google 阅读器。

怎么实现的? – 基本原理
我们知道,其实新浪微博的关联博客功能的本质就是RSS订阅和发布。

也就是说,关联的博客不需要一定是真正的“博客”,只要是拥有RSS的一个内容源即可。比如说,Google 阅读器的共享条目。

那么,从本质上讲,我们只需要把多个博客(内容源)“聚合”到同一个内容源,然后把这一个内容源和新浪微博关联,即可间接实现多个博客与新浪微博的关联。

这里,我们使用的是 Google 阅读器的共享条目作为“聚合”的内容源(当然,也可以换成其它类似工具,只要能够聚合多个内容源并且发布到单一RSS即可)

具体怎么做呢? – 操作方法
下面是具体操作的、手把手的图文步骤:

准备工作(不再赘述):

1. 开通新浪微博;

2. 开通 Google 阅读器。

Google 阅读器中的设置:

第一步:在 Google 阅读器中,订阅你希望与新浪微博关联的多个博客(内容源);

第二步:把订阅的这些博客(内容源)添加到一个文件夹(或者叫做标签);

第三步:在“阅读器设置”->“文件夹和标签”中,找到刚才添加的这个文件夹,并将其从“私人”改成“公共”;

第四步:点击右边的“查看公共网页”,复制该公共网页的网址;

新浪微博中的设置:

第五步:在“工具”-> “关联博客”中,把上一步中的公共网页的网址粘贴过来,作为关联博客的网址。

好了,大功告成!过几分钟以后,应该就可以看到效果了。

貌似还可以有别的用途? – 扩展应用
应用1:关联本来不能和新浪微博关联的博客

在网上看到有些朋友使用的博客因为RSS格式和相对绝对地址等问题不能正常关联,那么就可以通过这个办法间接关联。

因为 Google 阅读器对RSS的识别和兼容能力还是比较高的,相当于通过Google阅读器的“消化”,把新浪微博可能不兼容的RSS变成兼容的RSS。

应用2:关联Google阅读器的分享条目到新浪微博

有些朋友会经常在Google阅读器中阅读和分享大量的信息,但是又不希望还得再多操作一次新浪微博的分享动作,那么就可以通过把自己“手动共享”的Google阅读器共享条目与新浪微博关联。(比如 Leon 就是这么做的)

新版新浪微博添加关联博客

忽然想把网站的文章发到微博上,算是一种通知,也算是一种推广,想法是基于rss订阅,应该有相关的设置。看了一下腾讯微博的,上面直接有,加上就可以了。而新浪微博的账号设置里面没有关联博客的设置,我记得原来好像是有的,网上查了一下果然有,只不过新版被关闭了,没有显示出来。可以通过直接访问设置的url来设置。可以直接访问http://weibo.com/setting/import或者http://weibo.com/tool/bloglink

最近博客变慢的原因

我哩个擦,太郁闷了,不经意间发现博客的query到了1500-1600,这是什么概念,一个页面就要这么多的查询,随便一个cc估计就挂完了吧。怪不得有童鞋说我的博客速度太慢了,然后最近的当机提示邮件也比较多。打开一个页面要7-8秒。首先,先停掉了插件,不管用!又换了主题,还是依旧。可以判断wordpress没有问题。打开探针发现服务器才上线27天,肯定是中间挂了。最后只能看看是不是面板问题。最后找到原因,发现Memcached没有开。罪魁祸首啊,vps重启后,Memcached没有随机启动,导致博客变慢。不深究了,直接开启,速度恢复。开了之后一个页面只需零点几秒了,减少到60左右的query,汗!

关于爱

你最爱的,往往没有选择你;最爱你的,往往不是你最爱的;而最长久的,偏偏不是你最爱的也不是最爱你的……

没有人是故意要变心的,他爱你的时候是真的爱你,可是他不爱你的时候也是真的不爱你了,他爱你的时候没有办法假装不爱你,同样地,他不爱你的时候也没有办法假装爱你。

当一个人不爱你要离开你,你要问自己还爱不爱他,如果你不爱他了,千万别为了可怜的自尊而不肯离开;

如果你还爱他,你应该希望他过得幸福快乐,希望他跟真正的所爱在一起,绝不会阻止;

你要是阻止他得到真正的幸福,就表示你已经不爱他了,而如果你不爱他,你又有什么资格指责他变心呢?

爱不是占有!你喜欢月亮,不可能把它拿下来放在脸盆里,但月亮的光芒仍可照进你的房间。

换句话说,你爱一个人,也可以用另一种方式拥有,让爱人成为生命里的永恒回忆。

弥漫轻愁的音乐回旋往复,委婉伤感的文字峰回路转,催得我们泪流满面。美丽总是与感伤结伴。

我只知道这其实是人生常识,是每个人清醒时都明白都能侃侃而谈然,而却要用一生来参悟来身体力行的真谛。

我将之称为绕口令,与别的绕口令不同的是,爱是绕不过去的,它横亘在每个人的人生路口,将青春飞扬激情满怀的你逮住了,没有人可以成为漏网之鱼,无论你以何种姿势与她面对。

真正的胜利者不是你、我、他,是时间!它才是谋杀爱情的元凶,它让你为爱疯狂,同时它不露痕迹地摧残你的爱情。

它从来不为你的情绪改变自己的步伐,哪怕你苦苦恳求它也不肯稍作停留,甚至你看不到它无视一切的面影,所以春宵总是苦短,而伤痛却是漫漫;

所以离别总是飞快,而等待却是长久;所以爱稍纵即逝,而人生却一片渺茫。

我们没有办法把握所爱的回应,我们只能将自己爱的消息传递;我们没有办法把握得到,我们只能把握自己的付出;我们没有办法保证天长地久,我们只能用心经营。

但是,如果我们能把有限的光阴用全心的付出、用真我的情感、用深情的思念、用美丽的回忆堆积,那么谁又能说我们的人生没有意义?如果我们一生都在执着地投入爱这场扑朔迷离的游戏,谁又能说我们没有真正爱过?

北京青年剧中所有插曲、背景音乐大搜集

以下是Taru 编辑剧中的音乐.
《北京青年》歌曲目录
汪峰 – 存在 – 勇敢的心 – 怒放的生命。
轻音乐 – 梦中的婚礼。
北京青年第一集 41分20秒 背景英文歌曲 Taylor Swift-Our Song
北京青年第二集 31分11秒 丁香何西第一次相亲北京音乐 We Are One – Kelly Sweet (推荐)以前一直听。
北京青年第四集 07分11秒 何东在KTV自己的歌曲 北京 北京 – 汪峰
北京青年第五集 36分01秒 Pink-Fingers (推荐)
北京青年第六集 01分00秒 权筝和丁香在酒吧的北京音乐Lady GaGa – Bad Romance
混音版的 Mika – Relax Take It Easy 唐娇喝多时候无趣。
北京青年第七集 00分00秒 丁香、权铮、唐娇在酒吧的背景音乐 End of may – Keren Ann
(还有法国版)后青春期的诗
北京青年第十一 00分00秒 唐娇唱的歌曲 范玮琪 – 最初的梦想
北京青年第十四 36分00秒 涵格佩吉-彩云家乡
北京青年第十六 00分00秒 何东手机的铃声 没有你的日子我真的好孤单
北京青年第十八 00分00秒 唐娇离开迪厅的背景音乐 Groove Coverage-Runaway
北京青年第二十 00分00秒 深圳唐娇工作的酒吧里的歌 groove coverage——runaway
北京青年第二十一 00分00秒 叶坦在酒吧喝酒时的背景音乐 hey oh 是一首法国慢摇
北京青年第二十七 00分00秒 酒吧开业放的歌 Adele的《Rolling in the deep》
北京青年第二十九 26分00秒 权筝酒吧背景音乐叫什么 Queensberry-Sorry
北京青年第三十 00分00秒 任知了跳那段舞的舞曲 I Got you – Leona Lewis
北京青年第三十一 00分00秒 在丽江酒吧里的歌曲 Sorry Queensberry – Patricia
北京青年第三十五 00分00秒 任知了在咖啡厅见何西时放的歌 我不配做你男朋友—张提

《北京青年》经典语录

1 、谁知道我们该梦归何处,谁知道尊严已沦为何物?

2、每个玩世不恭的人都会因为生活的洗礼而成长。

3、男人的生活品质是什么?男人的生活品质就在于你找了个什么样的老婆。

4、爱是一种责任,不爱了,也要尽到责任。

5、世上本没有路,走的人多了,就更无路可走了

6、世界上最遥远的距离不是我在天涯你在海角,而是我在你身边你在玩手机

7、我只跟二手男人谈恋爱,我是个女人,渴望被爱,不是教别人如何爱我。

8、爱是一种责任,不爱了也要负上责任。

9、所有的女人在啪地一下关了灯之后,都一样。

10、谁知道我们该梦归何处,谁知道尊严已沦为何物?

11、你说你要从走一回青春,为什么非要丢下我啊。俩个人一起不好么?

12、什么过来人,过来人就全对啊。

13、我坑爹也不能坑哥呀!

14、我每天的生活过的一样,景天和昨天一样,昨天和今天一样,日复一日的,按部就班无所事事。我只要一闭上眼睛就能想到我未来十年的样子。这不是我想要的生活。

15、我受不了那方形的楼,方形的办公室,方形的格子间,方形的电脑,再干下去,我都快成方片儿了。

16、这不是让我们自卑,我们认命,是让我们活得更主动,更快乐一点。

17、这男人二十七还青涩,咱们女人二十七就是个剩儿了。

18、只能爱自己爱的,坚决不爱自己不爱的。

19、想要把一个男人留在你身边,最好的办法:你让他感觉随时都可以离开他。
对我们女人来说:要想幸福就得跟他们男人学,学着别让爱这点破事给自己添堵。

20、Stay Hungry, Stay Foolish (保持饥饿,保持愚蠢)

21、我们必须用谦虚者的自觉,饥饿者渴望的求职态度,来拥抱我们的未来。

22、不要轻信人言的左右,要相信自己的判断。

23、莫吉多——有点酸,有点甜,细细品味,还有那么一点苦涩,这不就是青春的滋味吗

24、寻死不是勇敢,是懦弱的表现。

25、我有很多缺点的,在我眼睛里都是优点。

26、你喜欢我,喜欢多久,一辈子。

27、我不喜欢你,这并不防碍我喜欢你。无赖,我只赖你一个人。

28、当他们读小学的时候吧,大学是不要钱的;当他们读大学的时候呢,小学是不要钱的。当他们没有参加工作的时候,那工作时分配的;当他们参加工作的时候呢,啥情况了,那得打破脑袋才能够勉强混一个糊口的工作。当他们没挣钱的时候吧,房子也是分配的;当他们可以挣钱的时候吧,才发现,完,房子买不起了。

Nginx下使用中文URL和中文目录路径

一、确定你的Linux系统是UTF编码,Root登录SSH:

env|grep LANG
LANG=en_US.UTF-8

二、NGINX配置文件里默认编码设置为utf-8

server
{
listen 80;
server_name .inginx.com ;
index index.html index.htm index.php;
root /usr/local/nginx/html/inginx.com;
charset utf-8;
}

三、如果使用putty
windows –> translation –>UTF-8

mkdir 中文目录名
echo ‘中文目录名’ > 中文目录名/中国.html

四、如果是用securecrt 上传文件,请选择 回话–>外观–UTF-8
如果是FTP软件也将默认编码设置为TUF-8

五、如果上传的文件名出现乱码显示
执行

for f in `ls *.html` ; do mv $f `ls $f|iconv -f GBK -t UTF-8`; done

完毕。

转自http://qiaodahai.com/personal/article/2010/nginx-chinese-url-and-chinese-directory-path.htm

wget的所有参数列表

用法: wget [选项]… [URL]…

长选项所必须的参数在使用短选项时也是必须的。

启动:
-V, –version 显示 Wget 的版本信息并退出。
-h, –help 打印此帮助。
-b, –background 启动后转入后台。
-e, –execute=COMMAND 运行一个“.wgetrc”风格的命令。

日志和输入文件:
-o, –output-file=FILE 将日志信息写入 FILE。
-a, –append-output=FILE 将信息添加至 FILE。
-d, –debug 打印大量调试信息。
-q, –quiet 安静模式 (无信息输出)。
-v, –verbose 详尽的输出 (此为默认值)。
-nv, –no-verbose 关闭详尽输出,但不进入安静模式。
-i, –input-file=FILE 下载本地或外部 FILE 中的 URLs。
-F, –force-html 把输入文件当成 HTML 文件。
-B, –base=URL 解析与 URL 相关的
HTML 输入文件 (由 -i -F 选项指定)。
–config=FILE Specify config file to use.

下载:
-t, –tries=NUMBER 设置重试次数为 NUMBER (0 代表无限制)。
–retry-connrefused 即使拒绝连接也是重试。
-O, –output-document=FILE 将文档写入 FILE。
-nc, –no-clobber skip downloads that would download to
existing files (overwriting them).
-c, –continue 断点续传下载文件。
–progress=TYPE 选择进度条类型。
-N, –timestamping 只获取比本地文件新的文件。
–no-use-server-timestamps 不用服务器上的时间戳来设置本地文件。
-S, –server-response 打印服务器响应。
–spider 不下载任何文件。
-T, –timeout=SECONDS 将所有超时设为 SECONDS 秒。
–dns-timeout=SECS 设置 DNS 查寻超时为 SECS 秒。
–connect-timeout=SECS 设置连接超时为 SECS 秒。
–read-timeout=SECS 设置读取超时为 SECS 秒。
-w, –wait=SECONDS 等待间隔为 SECONDS 秒。
–waitretry=SECONDS 在获取文件的重试期间等待 1..SECONDS 秒。
–random-wait 获取多个文件时,每次随机等待间隔
0.5*WAIT…1.5*WAIT 秒。
–no-proxy 禁止使用代理。
-Q, –quota=NUMBER 设置获取配额为 NUMBER 字节。
–bind-address=ADDRESS 绑定至本地主机上的 ADDRESS (主机名或是 IP)。
–limit-rate=RATE 限制下载速率为 RATE。
–no-dns-cache 关闭 DNS 查寻缓存。
–restrict-file-names=OS 限定文件名中的字符为 OS 允许的字符。
–ignore-case 匹配文件/目录时忽略大小写。
-4, –inet4-only 仅连接至 IPv4 地址。
-6, –inet6-only 仅连接至 IPv6 地址。
–prefer-family=FAMILY 首先连接至指定协议的地址
FAMILY 为 IPv6,IPv4 或是 none。
–user=USER 将 ftp 和 http 的用户名均设置为 USER。
–password=PASS 将 ftp 和 http 的密码均设置为 PASS。
–ask-password 提示输入密码。
–no-iri 关闭 IRI 支持。
–local-encoding=ENC IRI (国际化资源标识符) 使用 ENC 作为本地编码。
–remote-encoding=ENC 使用 ENC 作为默认远程编码。
–unlink remove file before clobber.

目录:
-nd, –no-directories 不创建目录。
-x, –force-directories 强制创建目录。
-nH, –no-host-directories 不要创建主目录。
–protocol-directories 在目录中使用协议名称。
-P, –directory-prefix=PREFIX 以 PREFIX/… 保存文件
–cut-dirs=NUMBER 忽略远程目录中 NUMBER 个目录层。

HTTP 选项:
–http-user=USER 设置 http 用户名为 USER。
–http-password=PASS 设置 http 密码为 PASS。
–no-cache 不在服务器上缓存数据。
–default-page=NAME 改变默认页
(默认页通常是“index.html”)。
-E, –adjust-extension 以合适的扩展名保存 HTML/CSS 文档。
–ignore-length 忽略头部的‘Content-Length’区域。
–header=STRING 在头部插入 STRING。
–max-redirect 每页所允许的最大重定向。
–proxy-user=USER 使用 USER 作为代理用户名。
–proxy-password=PASS 使用 PASS 作为代理密码。
–referer=URL 在 HTTP 请求头包含‘Referer: URL’。
–save-headers 将 HTTP 头保存至文件。
-U, –user-agent=AGENT 标识为 AGENT 而不是 Wget/VERSION。
–no-http-keep-alive 禁用 HTTP keep-alive (永久连接)。
–no-cookies 不使用 cookies。
–load-cookies=FILE 会话开始前从 FILE 中载入 cookies。
–save-cookies=FILE 会话结束后保存 cookies 至 FILE。
–keep-session-cookies 载入并保存会话 (非永久) cookies。
–post-data=STRING 使用 POST 方式;把 STRING 作为数据发送。
–post-file=FILE 使用 POST 方式;发送 FILE 内容。
–content-disposition 当选中本地文件名时
允许 Content-Disposition 头部 (尚在实验)。
–auth-no-challenge 发送不含服务器询问的首次等待
的基本 HTTP 验证信息。

HTTPS (SSL/TLS) 选项:
–secure-protocol=PR 选择安全协议,可以是 auto、SSLv2、
SSLv3 或是 TLSv1 中的一个。
–no-check-certificate 不要验证服务器的证书。
–certificate=FILE 客户端证书文件。
–certificate-type=TYPE 客户端证书类型,PEM 或 DER。
–private-key=FILE 私钥文件。
–private-key-type=TYPE 私钥文件类型,PEM 或 DER。
–ca-certificate=FILE 带有一组 CA 认证的文件。
–ca-directory=DIR 保存 CA 认证的哈希列表的目录。
–random-file=FILE 带有生成 SSL PRNG 的随机数据的文件。
–egd-file=FILE 用于命名带有随机数据的 EGD 套接字的文件。

FTP 选项:
–ftp-user=USER 设置 ftp 用户名为 USER。
–ftp-password=PASS 设置 ftp 密码为 PASS。
–no-remove-listing 不要删除‘.listing’文件。
–no-glob 不在 FTP 文件名中使用通配符展开。
–no-passive-ftp 禁用“passive”传输模式。
–retr-symlinks 递归目录时,获取链接的文件 (而非目录)。

递归下载:
-r, –recursive 指定递归下载。
-l, –level=NUMBER 最大递归深度 (inf 或 0 代表无限制,即全部下载)。
–delete-after 下载完成后删除本地文件。
-k, –convert-links 让下载得到的 HTML 或 CSS 中的链接指向本地文件。
-K, –backup-converted 在转换文件 X 前先将它备份为 X.orig。
-m, –mirror -N -r -l inf –no-remove-listing 的缩写形式。
-p, –page-requisites 下载所有用于显示 HTML 页面的图片之类的元素。
–strict-comments 用严格方式 (SGML) 处理 HTML 注释。

递归接受/拒绝:
-A, –accept=LIST 逗号分隔的可接受的扩展名列表。
-R, –reject=LIST 逗号分隔的要拒绝的扩展名列表。
-D, –domains=LIST 逗号分隔的可接受的域列表。
–exclude-domains=LIST 逗号分隔的要拒绝的域列表。
–follow-ftp 跟踪 HTML 文档中的 FTP 链接。
–follow-tags=LIST 逗号分隔的跟踪的 HTML 标识列表。
–ignore-tags=LIST 逗号分隔的忽略的 HTML 标识列表。
-H, –span-hosts 递归时转向外部主机。
-L, –relative 只跟踪有关系的链接。
-I, –include-directories=LIST 允许目录的列表。
–trust-server-names use the name specified by the redirection
url last component.
-X, –exclude-directories=LIST 排除目录的列表。
-np, –no-parent 不追溯至父目录。

解决wget下载文件名乱码的一些方法

在下载用apache或者nginx做的索引目录时,遇到文件名乱码问题。搜索了不少资料,尝试了好几种方案,大家可以结合使用。

一般情况下加上–restrict-file-names=nocontrol参数就可以用了。

其实除了下面方法一和方法二外,还有一个大家可以自由发挥的,我是没有研究透,编码实在太让自己头疼了。

有一个前提,要注意索引目录显示出来的是什么编码,比如有些网站是UTF-8(这个应该比较正规,中文不会出现很大麻烦,可以用方法二搞定),有些是GBK,可能跟文件的编码,或者apache、nginx的设置有关吧。

1、下载的时候保存成ascii,跟方法三类似

wget --restrict-file-names=ascii -m www.xxx.com/

2、用一个重命名软件,菲菲更名宝贝RenamePro8.0,相当好用。在“高级文件名变”更里面有一个“文件名编码与解码”,“ANSI编码URL字符串转换为文字”,大家可以多试试。
下载: RenamePro8.zip

3、如果不行,可以研究一下wget的一些参数,相关的有两个。
–local-encoding=ENC IRI (国际化资源标识符) 使用 ENC 作为本地编码。
–remote-encoding=ENC 使用 ENC 作为默认远程编码。

方法一
moper:这种方法是把文件名转换成ascii,加了一个–restrict-file-name=ascii参数,然后再用python写的一段程序,转换成win能够接受的编码。其实我们只需加另一个参数–restrict-file-names=nocontrol,就可以了。
完整命令为

wget --restrict-file-names=nocontrol -m http://ebook.elain.org

(我解释的不专业请看正文,发觉编码好混乱哎)

《使用 wget 整站下载》
转自http://blog.csdn.net/kowity/article/details/6899256

最近发现一个很好的网站:http://ebook.elain.org,里面有大量的技术书籍。于是想使用 wget 把整个网站都下载下来。但是 wget 对中文的 url 支持得不够好,直接使用:

  wget -m http://ebook.elain.org

下载的话,中文文件名就会乱码,比如“2010架构师大会PPT”就变成了“2010鏋舵瀯甯堝ぇ浼歅PT”。

  wget --restrict-file-name=ascii -m http://ebook.elain.org

下载的话,中文文件名会编码成URL形式,比如比如“2010架构师大会PPT”就变成了“2010%E6%9E%B6%E6%9E%84%E5%B8%88%E5%A4%A7%E4%BC%9APPT”。主要是因为在网页上,中文 URL会以 UTF-8 来编码,而 Windows 存储文件名是用GBK编码。也就是说“2010鏋舵瀯甯堝ぇ浼歅PT”实际上是以 GBK 编码来显示的 UTF-8 编码的文件名。这样我们只要用 Python 写个编码转换器就可以了。代码如下:

import os, urllib, sys, getopt

class Renamer:
    
    input_encoding = ""
    output_encoding = ""
    path = ""
    is_url = False
    
    def __init__(self, input, output, path, is_url):
        self.input_encoding = input
        self.output_encoding = output
        self.path = path
        self.is_url = is_url
    
    def start(self):
        self.rename_dir(self.path)

    def rename(self, root, path):
        try:
            if self.is_url:
                new = urllib.unquote(path).decode(self.input_encoding).encode(self.output_encoding)
            else:
                new = path.decode(self.input_encoding).encode(self.output_encoding)
            os.rename(os.path.join(root, path), os.path.join(root, new))
        except:
            pass

    def rename_dir(self, path):
        for root, dirs, files in os.walk(path):
            for f in files:
                self.rename(root, f)

            if dirs == []:
                for f in files:
                    self.rename(root, f)
            else:
                for d in dirs:
                    self.rename_dir(os.path.join(root, d))
                    self.rename(root, d)
def usage():
    print '''This program can change encode of files or directories.
    Usage:   rename.exe [OPTION]...
    Options:
        -h, --help                  this document.
        -i, --input-encoding=ENC    set original encoding, default is UTF-8.
        -o, --output-encoding=ENC   set output encoding, default is GBK.
        -p, --path=PATH             choose the path which to process.
        -u, --is-url                whether as a URL
    '''


def main(argv):
    input_encoding = "utf-8"
    output_encoding = "gbk"
    path = ""
    is_url = True
    
    try:
        opts, args = getopt.getopt(argv, "hi:o:p:u", ["help", "input-encoding=", "output-encoding=", "path=", "is-url"])
    except getopt.GetoptError:
        usage()
        sys.exit(2)
    for opt, arg in opts:
        if opt in ("-h", "--help"):
            usage()
            sys.exit()
        elif opt in ("-i", "--input-encoding"):
            input_encoding = arg
        elif opt in ("-o", "--output-encoding"):
            output_encoding = arg
        elif opt in ("-p", "--path"):
            path = arg
        elif opt in ("-u", "--is-url"):
            is_url = True

    rn = Renamer(input_encoding, output_encoding, path, is_url)
    rn.start()

if __name__ == '__main__':
    main(sys.argv[1:])

如果 wget 是使用以下命令行来下载:

  wget --restrict-file-name=ascii -m http://ebook.elain.org

那么下载下来的文件是“2010%E6%9E%B6%E6%9E%84%E5%B8%88%E5%A4%A7%E4%BC%9APPT”形式,运行脚本时就使用以下命令:

  rename.py -i utf-8 -o gbk -p R:\ebook.elain.org -u

方法二
改wget源代码

moper:不推荐这种方法,因为比较麻烦,我也没有测试,可能这种效果会好一些吧。

文章一《wget中文乱码解决方案》

用wget下载网页时,若文件名含有非ASCII字符或其他特殊字符,就会出现所谓的乱码。若想解决中文乱码的问题,可以修改wget的源代码。
对URL字符串进行编码的源代码文件是url.c。其中,url_file_name()的功能是根据URL判断应该以什么文件名保存文件。而该函数又调用了append_uri_pathel(),该函数调用了FILE_CHAR_TEST()宏,它用于判断URL中的字符是不是特殊字符(也就是需要进行URL编码的字符。当然,包括中文)。问题就出在这个宏身上了。为了不对中文转义,需要将中文字符当作普通字符对待。将如下所示的FILE_CHAR_TEST()宏:

#define FILE_CHAR_TEST(c, mask) \
    ((opt.restrict_files_nonascii && !c_isascii ((unsigned char)(c))) || \
    (filechr_table[(unsigned char)(c)] & (mask)))

修改为:

#define FILE_CHAR_TEST(c, mask) \
(((opt.restrict_files_nonascii && !c_isascii ((unsigned char)(c))) || \
(filechr_table[(unsigned char)(c)] & (mask))) \
&& !((c|0x0fffffff) == 0xffffffff)) /* 排除中文 */

文章二《解決wget中文亂碼問題的非完善方案》

1. 出現亂碼的原因

  http請求的流程如下:
  (1) 瀏覽器按URL編碼規則將URL(包括post或get提交的那一部分)字符串編碼之後發送給服務器;
  (2) 服務器將所收到的字符串轉換為unicode編碼,處理完瀏覽器的請求後再把它發送給瀏覽器;
  (3) 瀏覽器按指定的編碼顯示網頁。
  在不同的字符編碼格式下,瀏覽器對包含諸如中文之類的非ACSII字符的URL字符串的解析結果是不一樣的。從而,URL編碼對象就不一樣了。wget下載網頁文件時,實質上是一個瀏覽器。它同樣會對所提交的URL字符串按URL編碼規則編碼。因此,所下載的文件的文件名就是經過編碼(先是按URL規則編碼,接著是unicode編碼,最後是unicode到瀏覽器端所設定的編碼)之後的字符串。如果瀏覽器端採用的是unicode編碼,則結果是一串由’%’、數字和字母組成的字符串;否則,將unicode編碼格式的URL字符串解析為瀏覽器端的編碼格式,這可能會產生非ACSII字符。我們所說的亂碼,包括這兩種情況。也就是說,跟原來的文件名不一樣,我們就管它出現亂碼。

2. 解決方案

  由于上述原因,我們有必要修改wget的源代碼。對URL字符串進行編碼的源代碼文件是url.c。其中,url_file_name()的功能是根據URL判斷應該以什 文件名保存文件。而該函數又調用了append_uri_pathel(),該函數調用了FILE_CHAR_TEST()宏,它用于判斷URL中的字符是不是特殊字符(也就是需要進行URL編碼的字符。當然,包括中文)。問題就出在這個宏身上了。為了不對中文轉義,需要將中文字符當作普通字符對待。將如下所示的FILE_CHAR_TEST()宏:

  #define FILE_CHAR_TEST(c, mask) \
    ((opt.restrict_files_nonascii && !c_isascii ((unsigned char)(c))) || \
    (filechr_table[(unsigned char)(c)] & (mask)))

修改為:

  #define FILE_CHAR_TEST(c, mask) \
    (((opt.restrict_files_nonascii && !c_isascii ((unsigned char)(c))) || \
    (filechr_table[(unsigned char)(c)] & (mask))) \
    && !((c|0x0fffffff) == 0xffffffff)) /* 排除中文 */

  另外,如果使用unicode編碼方案的話,就不會出現上述第二種亂碼。因此,可以將瀏覽器端的字符編碼環境設置為unicode。這裡,選擇UTF-8編碼方案(UCS Transformation Format)。方法是在main.c的i18n_initialize最後加上:

'setlocale(LC_CTYPE, "zh_CN.UTF-8");'


  這不是一個很好的解決方案。另外,它沒辦法解決其他語言的亂碼問題。當然,可以將url_file_name()中的URL編碼部份統統拿掉。這樣做的結果是,不出現亂碼,現時亦違背了URL編碼的初衷--安全。不過我還沒想到更簡單的方案。這是一種暫行方案。希望官方的解決方案的出現不會路漫漫其修遠兮。。。

用wget下载整个网站或索引目录

一直不知道nginx或者apache建立的索引目录是怎么下载的,偶然听到一个朋友说wget可以,在网上一查果真行,哎哎,终于可以满足自己的下载欲望了。记录命令使用情况如下。

$ wget -c -r -nd -np -k -L -p -A c,h www.xxx.com/doc/path/

-c 断点续传
-r 递归下载,下载指定网页某一目录下(包括子目录)的所有文件
-nd 递归下载时不创建一层一层的目录,把所有的文件下载到当前目录
-np 递归下载时不搜索上层目录。

如wget -c -r www.xxx.com/doc/path/ 没有加参数-np,就会同时下载path的上一级目录pub下的其它文件

-k 将绝对链接转为相对链接,下载整个站点后脱机浏览网页,最好加上这个参数

-L 递归时不进入其它主机,如wget -c -r www.xxx.com/ 如果网站内有一个这样的链接: www.yyy.com,不加参数-L,就会像大火烧山一样,会递归下载www.yyy.com网站
-p 下载网页所需的所有文件,如图片等
-A 指定要下载的文件样式列表,多个样式用逗号分隔
-i 后面跟一个文件,文件内指明要下载的URL。

下载有索引目录
wget -m http: //www.xxx.com/dir/ 这个最强力了!前提是目录必须是索引目录!

下载一个目录,例如网站的yourdir

wget -U “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5)” -r -p -k -np -Pmydir -nc -o down.log http://www.xxx.com/yourdir/index.html

如果要想下载整个网站,最好去除-np参数。

wget -U “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5)” -r -p -k -nc -o down.log http://www.xxx.com/index.html

-U 修改agent,伪装成IE货firefox等
-r 递归;对于HTTP主机,wget首先下载URL指定的文件,然后(如果该文件是一个HTML文档的话)递归下载该文件所引用(超级连接)的所有文件(递归深度由参数-l指定)。对FTP主机,该参数意味着要下载URL指定的目录中的所有文件,递归方法与HTTP主机类似。
-c 指定断点续传功能。实际上,wget默认具有断点续传功能,只有当你使用别的ftp工具下载了某一文件的一部分,并希望wget接着完成此工作的时候,才需要指定此参数。
-nc 不下载已经存在的文件
-np 表示不跟随链接,只下载指定目录及子目录里的东西;
-p 下载页面显示所需的所有文件。比如页面中包含了图片,但是图片并不在/yourdir目录中,而在/images目录下,有此参数,图片依然会被正常下载。
-k 修复下载文件中的绝对连接为相对连接,这样方便本地阅读。