[AutoIt] 將舊 MovableType 的網誌/圖片移到痞客邦/Google+相簿上!

[AutoIt] 將舊 MovableType 的網誌/圖片移到痞客邦/Google+相簿上!

20111226_old_mt.png    

最一開始寫網誌的時候,還沒有痞客邦,

那時候看到有人在介紹 MovableType,因此就自己架了一個,

其實也還不錯,用了很長的一段時間,

像圖片等等也都直接放在自己電腦上,不用上傳到外面的網頁上~

只是缺點是電腦都要一直開著,

而且也因此要申請動態 Domain Name 的服務~

 

後來轉移到了無名,不是很喜歡他們的介面,

接著又移到了痞客邦,不過其實寫網誌的頻率已經變很低了…

最近才又開始寫,

不過一方面其實也是因為不久前有在寫晨間日記,但後來也又荒廢了,

想說不寫晨間日記的話,

應該還是要寫網誌來記錄一下生活上的點點滴滴,

或是記錄一下用到的一些電腦技術,

順便自己之後需要的話可以查詢~

 

基於以上的理由,想說就也把舊網誌上的全部文章都轉移到痞客邦上,

MovableType 可以匯出網誌的內容,

而痞客邦也可以匯入 MovableType 的網誌備份,

可是圖片的部分並不會自動幫我抓進去(不過如果是從無名轉移過去是可以的)…

因此只好自己來…

 

觀察了一下,發現如果將一張圖片上傳至 Google+ 相簿的話,

它的網址雖然是很長一串亂亂的,不過檔名部分是跟原本的一樣

而我的圖片基本上都有命名過,所以不會重覆,

因此如果我可以將圖片全部傳到 Google+ 相簿上,

再把網誌裡原本的圖片網址,都根據檔名的部分,對應到 Google+ 相簿中的圖片網址,

那樣子就 OK 了~

 

以下就是詳細的步驟:

Step 1: 先把圖片傳到 Google+ 相簿後,

把圖片網址全部抓到一個檔案 image_url_mapping.txt 中。

這時發現之前寫的 [Chrome extension] 自動抓取 Google+ 相簿中的所有相片連結再次派上用場,

果然之前做的努力還是有助於之後的偷懶的 😛

 

Step 2: 將舊 MovableType 的網誌匯出至 MTBackup.txt

 

Step 3: 執行以下的 AutoMT2Pixnet.au3(或到這裡下載),

會自動搜尋 MTBackup.txt 中圖片的網址,

如果圖檔名稱有在 image_url_mapping.txt 出現的話,

就替換成 image_url_mapping.txt 中定義的圖片網址。

像是原本我的圖片在 <img src=”/mt/images/atest.jpg”>,

而在 image_url_mapping.txt 中有個 https://xxx/yyy/atest.jpg 的話,

就會被取代成 <img src=”https://xxx/yyy/atest.jpg”>

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Const $CONST_SCRIPT_TITLE   = StringReplace(@ScriptName, ".au3", "")
Const $CONST_FILE_NAME_MAP  = "D:PrivateDesktopimage_url_mapping.txt"
Const $CONST_FILE_NAME_SRC  = "D:PrivateDesktopMTBackup.txt"
Const $CONST_FILE_NAME_DST  = "D:PrivateDesktopMT_New.txt"
Opt("MustDeclareVars", "1")
; Open files
Global $g_hFileMap = FuncOpenFileHandle($CONST_FILE_NAME_MAP, 0)
Global $g_hFileSrc = FuncOpenFileHandle($CONST_FILE_NAME_SRC, 128)
Global $g_hFileDst = FuncOpenFileHandle($CONST_FILE_NAME_DST, 128+2)
If $g_hFileMap <> -1 And $g_hFileSrc <> -1 And $g_hFileDst <> -1 Then
Global $g_mapping = ObjCreate("Scripting.Dictionary")
Local $sLine = ""
While True
; Read a line from map file
$sLine = FileReadLine($g_hFileMap)
If @error <> 0 Then ExitLoop
; Add a mapping from that line
FuncAddMap($sLine)
WEnd
Local $iLine = 0
While True
; Show current progress
$iLine = $iLine + 1
TrayTip($CONST_SCRIPT_TITLE, "Processing line " & $iLine, 1)
; Read a line from source file
$sLine = FileReadLine($g_hFileSrc)
If @error <> 0 Then ExitLoop
Local $nOffset = 1
While True
; Check if this line still contains references to /mt/ folder
Local $arrayReg = StringRegExp($sLine, "(?U)""/mt/(.+)""", 1, $nOffset)
If @error <> 0 Then ExitLoop
; Extract the filename part
$nOffset = @extended
Local $arrayReg2 = StringRegExp($arrayReg[0], ".+/(.+)", 1)
; Find the new mapped URL for the file
Local $sMap = $g_mapping.Item(StringUpper($arrayReg2[0]))
If $sMap <> "" Then
; Replace the original line with this new mapped URL
$sLine = StringReplace($sLine, """/mt/" & $arrayReg[0] & """", """" & $sMap & """")
EndIf
WEnd
; Output the line to destination file
FileWriteLine($g_hFileDst, $sLine)
WEnd
EndIf
; Close file handles
FuncCloseFileHandle($g_hFileMap)
FuncCloseFileHandle($g_hFileSrc)
FuncCloseFileHandle($g_hFileDst)
Func FuncOpenFileHandle($sFilePath, $nMode)
Local $hFile = FileOpen($sFilePath, $nMode)
If $hFile = -1 Then MsgBox(0, $CONST_SCRIPT_TITLE, "Cannot open " & $sFilePath & "!")
Return $hFile
EndFunc
Func FuncCloseFileHandle($hFile)
If $hFile <> -1 Then FileClose($hFile)
EndFunc
Func FuncAddMap($sLine)
Local $arrayReg = StringRegExp($sLine, ".+/(.+)", 1)
If @error = 0 Then
$g_mapping.Item(StringUpper($arrayReg[0])) = $sLine
EndIf
EndFunc

要注意的是行數 43-56 行之間的程式碼應該是需要修改的,

視你原本在 MovableType 的圖片網址格式而定~

基本上,如果你會 AutoIt 的話,要修改應該不是難事,

所以這邊也不打算多寫了,畢竟會用到這個的人應該很少~~

 

Step4: 程式會產生 MT_New.txt,

這邊要注意的一個小問題是,文章在 MovableType 中可能是 Publish/Draft 的狀態,

但痞客邦只吃 publish/draft(沒錯,有分大小寫…這應該可以算是 bug :P)

因此請先用文書編輯器,將所有的 Publish/Draft 都改成小寫的,

再匯入至痞客邦裡面,就完成了~

保險起見,最好先試只留一兩個文章在 MT_New.txt 裡然後匯入,

看看圖片是否可以正常顯示,和文章的狀態是不是正常的~

如果都 OK 的話,就可以把完整的 MT_New.txt 匯入囉~~

(本頁面已被瀏覽過 219 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料