批量转移Skydrive相册的图片到自己服务器

Skydrive是个好东西:

  1. 微软出品
  2. 25G的储存空间
  3. 界面清爽简单
  4. 支持图片外链
  5. 自身支持批量上传(仅限IE)
  6. 自身支持打包下载(为图片转移提供了方便)
  7. 支持多层目录
  8. 不更改上传图片名字(如果考虑日后图片的转移,选择图床时应注意这点)

Skydrive使用不方便:

  1. 获取真实地址步骤繁琐
  2. 图片批量操作费时费力
  3. 市面上第三方工具太少

觉得如果不是经常批量贴图,Skydrive还真是个不错的选择,但在独立博客中貌似没什么人用微软的这个巨无霸网盘。

好了,下面进入正题,如何批量转移Skydrive相册的图片到自己服务器。

一、转移图片

  1. 首先进入一个相册,点击右上角的更多以.zip文件下载。如果先前你的图片(包括子目录)是放在根目录下的同一个文件夹下,只需要一次下载就好了。如果是在根目录下建立多个文件夹分别存放,那就进到每个文件夹下一个个下吧。
  2. 将下载的图片上传到服务器的同一个文件夹下,注意不要保留原来的任何子目录。因为无论原来你在Skydrive建立什么样的目录,图片的地址结构都是一样的。

二、替换地址

先看几个原始图片地址找找规律:

  1. http://public.blu.livefilestore.com/y1pZFe9ETqm-U73LzC4SPw7JysLXYKQQqBL6SAu9QEWbypvf0KisxE5Jq1WaP6MGLh0D-VVo2Dukkk2AhJxUcSbHw/sdpre-mpxplay.png
  2. http://public.blu.livefilestore.com/y1ppjYSVsrMNymhf8utIKXBWIAxX6W1k4nhYKS88VdUMDR5d5p_RCseeavWf9MUA6QZgF6KngT9EKyispwiDx1ukQ/sdpre-asshole.gif
  3. http://hiavxa.bay.livefilestore.com/y1pRBZE2mvIvQIdidYlJjjieSeSd54FO7MWx5-iaY6obEki11SIVvLf2iCa0vIOY–9qEUMtFPGWLKIhLForQMGJ4Fit92BrI29/2010.3.15@%E5%85%A8%E8%A3%B8.jpg
  4. http://public.bay.livefilestore.com/y1p-1i6LNYpS87JJKY1uMqVJAod10iESTqvOPOEF0rIvHMQBQHfXFcAd2e14ITwqAMMwmbgUYR1S7Pszs_JW85jwQ/2010.3.15@%E5%85%A8%E8%A3%B8.jpg

第1、2个地址是我从自己的相册中随便找的,可以看到http://后接的是一个三级域名public.blu.livefilestore.com,然后是一串乱七八糟的字母和数字(一共89个字符),最后是文件名。

第3、4个是我从博客图党里找的,其实这两个是同一个图片地址。Skydrive的图片上传后的一段时间内,三级域名的前六个字符(例如:hiavxa)是随机的,后面的一堆字符串长度是99个字符。待一段时间后,六个随机字符就会转成public,99个字符的字符串会变回89个。同时我也发现二级域名也有不同,我猜这大概是账号注册时间的不同而不同,我的全都是blu,而博客图党的都是bay,但都是3个字符

既然是有规律可循,配以强大的正则表达式,替换起来就方便了。我们知道可以用以下语句替换数据库中的字符串,但是我却不知道怎么用上正则表达式。知道的朋友告诉我一声,我补上。

UPDATE 表名 SET 字段名=REPLACE('字段名','被替换字符串','替换字符串');

那我们用点另类的方法,先把数据库导出进入phpMyAdmin,导出wp_posts表,再用支持正则表达式的文本编辑器(如EmEditor、pspad)打开,使用下面这个正则表达式将匹配三级域名和后面的一堆字符串,将其全部替换成你在服务器上的目录就可以了。

http://.{10}\.livefilestore\.com/.{89,99}/

解释一下这个正则表达式:

  1. http://、livefilestore、com、/都是直接匹配原字符串
  2. \. 使用转义字符\,让.代表原字符.,这个其实要不要都无所谓
  3. .{10} 表示任意字符出现十次,匹配三级域名的前六个字符和二级域名的前三个字符,还有他们之间的点,一共是十个字符。如:public.blu 或 hiavxa.bay
  4. .{89,99} 表示任意字符出现89次至99次,也就是匹配那一堆的字符串

上个图更形象一点:

批量转移Skydrive相册的图片到自己服务器

我在自己机器上测试过,没有出现异常。但我不敢确保您数据库的安全。所以请注意两点:

  1. 操作数据库前注意备份
  2. 替换前注意查看你的图片是否符合规则

一点小发现:

你以为那些带着图片扩展名的地址就是真实地址了吗?把后面的文件名全部去掉或者随便改名试试看

13条评论 @ 批量转移Skydrive相册的图片到自己服务器

发表回复

 

 

 

你可以使用如下 HTML标签 | 表情

:wink: :roll: :oops: :lol: :cry: :?: :-| :-x :-o :-P :-D :-? :) :( 8-O 8)

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>