逃离Yupoo并转移图片到本地的过程

以前一直不想把图片放在自己Blog的空间里,觉得这样的话可以保证Blog的大小,转移的时候方便,所以就一直选择使用网络相册来保存Blog里用到的图片,然后再链接过来。

在使用Yupoo之前,用的是Flickr,但是后来因为GFW的问题,不得不放弃Flickr。

我在Yupoo上传第一张图片是2006年1月5日,从2006年7月开始将blog上的图片放到Yupoo上,到现在也有2000多张了。一直用Yupoo用的好好的,但是最近Yupoo推出了防盗链功能之后,也没办法继续使用了,只有把图片都转到了本地。

本来防盗链功能是好的,但是如果加上流量限制就不一样了,现在Yupoo的防盗链功能限制免费用户在认证Blog之后,只有1G的外链流量可用(并且Yupoo拥有对此措施进行调整的权利)。对我来说根本不够用,这个防盗链功能是12月9号推出的,在推出这个功能之前的几天,我在Yupoo里的照片已经被盗链用去了3.1G流量,结果导致我在认证之后,自己Blog上也无法正常显示图片(个人认为应该在推出防盗链功能之后对所有用户的流量清空),当咨询Yupoo客服之后,得知这个问题无法解决,因为我的流量已经使用完了,建议我升级VIP。

前两天看到Yupoo推出了1G只需1元,用户可以单独购买外链流量的服务,只好花了5元钱买了5G的流量,让Blog的图片可以正常显示。

之后就在想把Yupoo上的图片转移到本地,但是找了三个可以导出Yupoo图片地址的工具(123),都以失败告终。第一款是版本过老,用不成了。第二款是在我这里读取图片的过程中总是崩溃,也用不成。第三款是每次只能导出前200张,作者说是Yupoo的API限制了只能读取前200张,这样的话就得每导出200张,就删200张,然后继续导出,很麻烦。

而且即使用上面的三个工具导出成功的话,替换文章中的图片地址也是很麻烦的,因为原来的图片地址中都有随机的字符或者子目录,所以最好的办法就是把原图片下载回来的同时,保持原来的目录结构。例如下面四张图片:

http://photo1.yupoo.com/20070326/183102_1003750627.jpg
http://photo1.yupoo.com/20070116/182649_70474077.jpg
http://pic.yupoo.com/sunlei/61474638a0ae/so15ixtb.jpg
http://pic.yupoo.com/sunlei/606746347a4e/0pcjr2yi.jpg

最好在下载回来的同时使他们保持如下结构:

D:\pics
├─photo1.yupoo.com
│  ├─20070326
│  │  183102_1003750627.jpg
│  │
│  └─20070116
│    182649_70474077.jpg
│
└─pic.yupoo.com
   └─sunlei
     ├─61474638a0ae
     │  so15ixtb.jpg
     │
     └─606746347a4e
        0pcjr2yi.jpg

最开始我是想导出Yupoo中的图片,然后再替换,后来想了想,我没必要导出Yupoo中全部的图片,我只需要把Blog中用到的转移出来就行了,这样就能保证Blog中图片的正常显示,其他的照片之类的就没必要转移,因为那些又不用于外链。

所以现在的思路是,把以前文章中用到的图片按照原来的目录结构保存到空间里,然后替换原来的地址中的photo1.yupoo.com或者pic.yupoo.com/sunlei就行了。

接下来说下我转移的过程(我用的WordPress):

1、备份wp_posts表

2、在你的Firefox中添加一个书签List Images(因为我一直用的Firefox,而且也不知道这个书签在IE中是否有效):

javascript:outText='';for(i=0;i<document.images.length;i++){if(outText.indexOf(document.images[i].src)==-1){outText+='<tr><td><img%20src='+document.images[i].src+'></td><td>'+document.images[i].height+'</td><td>'+document.images[i].width+'</td><td>'+document.images[i].src+'</td></tr>'}};if(outText!=''){imgWindow=window.open('','imgWin','width=800,height=600');imgWindow.document.write%20('<table%20border=1%20cellpadding=10><tr><th>Image</th><th>Height</th><th>Width</th><th>URL</th></tr>'+outText+'</table>');imgWindow.document.close()}else{alert('No%20images!')}

或者点此存为书签

3、把备份回来的sql文件后缀改为.html,然后用Firefox打开(我的wp_posts表有将近15M,改为html,再打开时那个慢啊)。等打开完毕后,点击刚才保存的书签List Images,会打开一个新页面,列出了所有的图片。

4、查看这个页面的源码,然后复制,另存为html,上传到你的网站,比如我的http://huaidan.org/images/pics.html

5、用 Teleport 新建一个项目,选择“复制一个网站,包含该网站的目录结构”,地址就输入 http://huaidan.org/images/pics.html 。然后开始,等待下载完毕你会发现他连原来的目录结构都复制了下来(本来这里刚开始是准备用DownThemAll!来做的,但是DownThemAll!我怎么设置都只能保存前两层目录)。Teleport则是无法筛选,所以除了yupoo之外,其他地方的图片也被下载了回来。

* 这里也可以用wget直接下载到空间里(如果你的空间有SSH的话)
wget -m -k -H http://huaidan.org/images/pics.html
不过我不建议这么做,因为后面还要重命名,还是下载到本地比较好,虽然需要再上传,但是同时也可以备份。

6、删掉除*.yupoo.com之外的文件夹。

7、建立一个yupoo文件,把所有photo*.yupoo.com中的目录剪切到这个yupoo目录中,pic.yupoo.com这个目录,则是把里面那个以你的用户名命名的文件夹中的子文件夹剪切到yupoo目录中。例如我的就是pic.yupoo.com这个目录中有一个sunlei的文件夹,要做的就是把sunlei这个文件夹中所有的子文件夹剪切到刚才建立的yupoo中。

8、用 Bulk Rename Utility 进行重命名,因为Yupoo会将你上传的任何格式的图片,都以jpg来显示,但是用 Teleport 下载回来之后就会添加一个你原始的后缀名,比如*.jpg.png或者*.jpg.gif之类的,但是你文章中贴的图片却没有这些后缀,只有一个jpg。打开Bulk Rename Utility,“选择”里面勾选“文件”和“子文件夹”,ctrl+a 全选所有文件,然后扩展名中移除两次(使所有的文件都没有扩展名),再添加(选择固定) .jpg(不知道为什么不能移除指定的,填上也无效,只能全部移除再添加了)。

9、将yupoo目录压缩为yupoo.zip,传到空间wp-content/uploads/img里(img是我自己建立的,自己控制目录结构,下面替换的时候替换正确就行了),然后SSH上去unzip yupoo.zip。无SSH的可以直接FTP传上去。

10、然后用EditPlus(其他编辑器也行)打开备份回来的sql文件,替换前面在你用 Teleport 下载回来的目录中出现过的 photo*.yupoo.com 和 pic.yupoo.com/用户名 为你的新路径,例如我的这样替换:

http://photo1.yupoo.com
http://photo4.yupoo.com
http://photo5.yupoo.com
http://photo6.yupoo.com
http://photo7.yupoo.com
http://photo8.yupoo.com
http://photo9.yupoo.com
http://photo11.yupoo.com
http://photo14.yupoo.com
http://photo15.yupoo.com
http://pic.yupoo.com/sunlei

替换为:

http://huaidan.org/wp-content/uploads/img/yupoo

保存sql文件。

11、还原修改过的sql文件,这里我用 MySQLDumper

12、完工。

相关日志

楼被抢了 45 层了... 抢座Rss 2.0或者 Trackback

  • Sivan

    呵呵,收藏。还好已经逃离YUPOO。越来越多的博客看到YUPOO的广告或者限制流量的提示了。

  • omg

    Orz…

  • 小Y

    鬼哥真有心,无论怎么样。我都会关注你的BLOG。。

  • is

    不得不转。。。。

  • Neeao

    直接写个php,正则替换多好了,导出来麻烦死了。

  • UNKNOWN

    Show my mercy.

    呵呵,你好倒霉啊。

    ¥不是问题,只是感觉你好倒霉啊,唉。晦气。

  • vaxvac

    自己用Bluehost上传图片到空间 更新的不是很快 文件大小没鬼仔的大。。

  • 雨中风铃

    问题主要集中在如何按照原来的目录结构保存图片到本地,导出Sql文件主要是为了按原来的目录结构保存图片到本地,没必要如neeao所说的那样把精力放在编写php上。

  • 胖胖

    推荐试试:http://www.keeuu.com的相册,虽然是旅行相册,但讲究着先用用,关键完全免费的。

  • joojen

    还不如我用zuosa来的方便快捷

  • 鬼仔

    @Neeao: 肯定要导出的,因为还要获取图片地址。就像 雨中风铃 所说的那样。
    @vaxvac: 我现在也直接放自己空间了,我以前的图片加起来才100多M。
    @雨中风铃: yes。
    @胖胖: 不用相册了,直接放自己空间。
    @joojen: zuosa是个twitter类的站。。。

    • Neeao

      php读取数据库,正则获取yupoo的图片地址,然后get获取本地保存,然后替换文章字段保存的路径,就ok了,几行代码搞定了,^_^。

      • 雨中风铃

        这样最好了,不过我的原则是:能让电脑累着不让让累着,能工具搞定的事绝对不编写代码,能一行代码实现的功能不会编二行代码。既然做同样的功,当然是越省力越好了,哈哈,毕竟编写的代码大部分是用来一次性消费的

  • Aw Guo

    不错的tips :)

  • Summer

    哥们你太有才了,用teleport这招真是没想到。本来还以为你要写程序呢。哈哈,帅!

  • Black-Xstar

    你真厉害,本文收藏。
    不过我早就买了最便宜的vip,可惜还是不够用……

    • 鬼仔

      那就直接都转到本地算了,其实这些图片并没有多大,我的一共才100多M

  • 大菠萝

    花了点时间写了个GAE图片保存的。
    项目地址为:http://code.google.com/p/diabloimage/
    演示为:http://diabloimage2.appspot.com/
    应该适合你。

  • fisker

    有点复杂了。可以简单点的

  • outlooker

    牛人很多。。

  • allen

    这么复杂。。。
    为啥不懂google的服务?
    什么都是。 google的相册那个爽。免费,速度快

  • Mao

    第10步可以用Find and Replacer 插件

  • nings

    这个法子不错,不过。。有点儿复杂呵呵。

  • aunsen

    天啊,幸亏我早不用YUPOO了

  • 摩摩诘

    看到这些我越发觉得那么早就逃出Yupoo是一件多么明智的事情…

  • Darknew

    有心,要是我,早不搭理了。

  • ZhxlTony

    ff的书签还能这样用,学了,谢谢鬼仔。

  • Anson Ho

    用我公司的服务吧。无限空间,不限外链。哈哈。I am pocoer.

  • !CnSoLoer

    免费的终究不能长久的。用 linux 系统的话,可以 wget 的

  • zEUS.

    Yupoo 又抽了,即使是 VIP 也出问题了…哎…
    虽然这博主介绍的方法很强大,无奈看不太懂 T_T

  • esnak

    Google的app上建的那个不错,可以绑子域名,万一被封了也可以轻松转移

  • 诗人博客

    原来08年就有yupoo了啊?我现在才用呢。
    那个流量确实有点小,我看到异次元的博客也在抱怨、

  • 翔耔

    用QQ相册的啊,黄钻可以外链的。年费黄钻LV7流量15G/月
    非年费黄钻LV7流量10G/月。主要是觉得方便。

  • 一起看点

    国内也有很多可用的,但是大多太急功近利了,说翻脸就翻脸,不可靠。
    国外的一墙之隔,随时Down掉。
    我现在用的photobucket,So far so good!

  • Bruno

    我的是最近几个月一直提示流量不足,才想起来转移的事情,看看我的WordPress插件方案 http://www.brunoxu.com/save-post-yupoo-imgs.html

发表评论