국내의 정치적 핍박을 참지 못하고 사이버 망명길에 오르기엔, 여긴 그저 조회수 낮은 힘없는 일개 프로그래머의 해우소일 뿐이지만, 그래도 최근 MB족들의 하는 꼬라지를 보면 언제 호스팅이 날아가고 데이터가 악의 손아귀에 들어갈 지 모를 터다.
어쨌거나 설치형 워드프레스(이하 WP)에서 호스팅형으로 돌아갈 때 가장 걸리는 것은 바로 첨부 파일이다. 비록 WP가 XML 기반의 Export/Import 를 지원하긴 하지만 첨부 파일까지 자동으로 옮겨주지는 않기 때문이다. 그래서 처음 생각한 건 각종 이미지들을 구글의 피카사웹으로 올린 후, 그 URL을 찾아서 XML파일을 교체한다는 아이디어였다.
일단 첨부파일들을 모두 다운받아서 피카사 업로더를 이용해서 올린 후, 구글 피카사웹 API 샘플을 이용하니 손쉽게 URL을 알아낼 수 있었다. 주의할 점이라면 한글로된 앨범 이름을 위해서 유니코드를 써야 한다는 것 정도가 샘플과의 유일한 차이였다.
defget_picasa_urls(email,password,wp_album):gd_client=gdata.photos.service.PhotosService()gd_client.email=emailgd_client.password=passwordgd_client.source='wordpress_attachment_exporter'gd_client.ProgrammaticLogin()print'picasa web connected'dic={}albums=gd_client.GetUserFeed(user='default')printlen(albums.entry),'albums found'foralbuminalbums.entry:ifalbum.title.text!=wp_album:print'skipping album',unicode(album.title.text,'utf-8')breakprintunicode(album.title.text),'album found'#print 'title: %s, number of photos: %s, id: %s' % (album.title.text,album.numphotos.text, album.gphoto_id.text)photos=gd_client.GetFeed('/data/feed/api/user/default/albumid/%s?kind=photo'%(album.gphoto_id.text))forphotoinphotos.entry:#print ' Photo:', photo.title.text, ' id:', photo.gphoto_id.text, ' url:', photo.content.srcdic[unicode(photo.title.text,'utf-8')]=unicode(photo.content.src,'utf-8')printlen(dic),'images in picasa'returndic
그다음 한 일은 내보내기한 XML 파일의 기존 URL을 위에서 찾아낸 새 URL로 교체하는 것인데, 정규식을 활용해보기로 했다. 문제는 이렇게 했는데도 실제로 미리보기가 안된다는 것이었는데, 아마도 flickr나 피카사 모두 직접 링크를 지원하지 않는 모양이었다. 그래서 어쩔 수 없이 모든 첨부파일을 손으로 하나씩 WP.com 으로 업로드한 후 그 URL을 적용하기로 했다.