Re: [求救] 如何將不同歷史訊息合併、甚至排列成一 …
合併對話記錄前
不可不知的知識
首先打開對話記錄的*.xml檔案,一開頭就會看到
<?xml version="1.0"?>
<?xml-stylesheet type='text/xsl' href='MessageLog.xsl'?>
不要動它們,接著看下一行
==============<Log FirstSessionID="數字" LastSessionID="數字">=================
在聊天記錄裡,對話會被分為很多個段落,
段落的計算方式是從 打開對話視窗聊第一句話~關掉對方視窗 就算一次
╭──────────────────────────────────╮
│ 這個計數和日期無關,不會因為隔一天就從 1 計算,是會一直累計下去的 │
╰──────────────────────────────────╯
從這個例子來說 <Log FirstSessionID="1" LastSessionID="116">
1 和 116 就是對話段落的"起"與"迄"數字
也就是你們的累積的對話被分成116段這麼多~
╭──────────────────────────────────╮
│ 雖然說這個計數和日期無關,但不同電腦和同一個人聊的記錄是分開計算的│
│ 想要把分散的聊天記錄合併,這個數字就很重要,這會關係到對話記錄會不│
│ 會按照你想要顯示的順序出現 │
╰──────────────────────────────────╯
=====<Message Date="xxx" Time="xxx" …略… SessionID="x">…略… </Message>======
msn每一句對話(按下enter送出就是一句),在對話記錄裡,
都會被包在<Message></Message>裡面,看看下面的例子
(為說明方便,文字我做了省略,並且為了清楚表達也將文字跳行
實際的內容,標籤都是連接著沒有跳行,可以打開自己的檔案對照看)
╭────────────────────────────────────╮
│<Message Date="…略…" Time="…略…" DateTime="…略…" SessionID="1"> │
│<From> ﹋﹋﹋﹋﹋﹋ │
│<User FriendlyName="這裡是發訊者的msn暱稱"/> │
│</From> │
│<To> │
│<User FriendlyName="這裡是接訊者的msn暱稱"/> │
│</To> │
│<Text Style="font-family:微軟正黑體; color:#054002; "> 對話內容 </Text> │
│</Message> │
╰────────────────────────────────────╯
在<Message></Message>還會有其它的標籤,在合併對話記錄時不需更動其它的標籤
╭──────────────────────────────────╮
│ 註: │
│ 我們稱被 "<" 和 ">" 符號包起來的文字為標籤, │
│ 且結尾會用 "</" 和 ">" 包起來 │
│ 例如:Message標籤 <Message></Message> │
╰──────────────────────────────────╯
前面有說過,聊天記錄裡,對話會被分為很多個段落,
所以在關掉視窗前,所聊的每一句話都是同一個SessionID
也就是在對話記錄裡會看到<Message></Message>的SessionID都是同樣的
╭───────────────────────────────────╮
│ msn對話: │
│ A:說 │
│ 有颱風要來了 │
│ B:說 │
│ 是喔 │
│ A:說 │
│ 對啊,但是沒有颱風假,sad... │
│ │
│ 對話記錄.xml │
│ <Message …略… SessionID="1">…略… 有颱風要來了</Text></Message> │
│ <Message …略… SessionID="1">…略… 是喔</Text></Message> │
│ <Message …略… SessionID="1">…略… 對啊,但是…</Text></Message> │
╰───────────────────────────────────╯
和前面一開始說的對話段落結合來看,檔案的結構就變成這樣
╭──────────────────────────────────╮
│ <Log FirstSessionID="起數" LastSessionID="迄數"> │
│ <Message …略… SessionID="1"></Message> │
│ <Message …略… SessionID="1"></Message> │
│ <Message …略… SessionID="1"></Message> │
│ <Message …略… SessionID="2"></Message> │
│ <Message …略… SessionID="2"></Message> │
│ <Message …略… SessionID="2"></Message> │
│ <Message …略… SessionID="3"></Message> │
│ <Message …略… SessionID="3"></Message> │
│ <Message …略… SessionID="3"></Message> │
│ </Log> │
╰──────────────────────────────────╯
開始合併
對話記錄
當你手上有好幾個同一個聯絡人但不同時間的對話記錄檔案,
要先決定要把誰合併到誰
========================= 簡單型合併 ============================
所謂簡單型合併就是假設你手上有 a.xml 和 b.xml 都是跟甲聯絡人的對話記錄
而且兩個檔案的對話時間順序是一前一後
也就是說a.xml的時間都早於b.xml,所以要把b.xml的內容接在a.xml的後面
1.修改<Log>標籤
把a的對話段落的 迄數 + b的對話段落的 迄數 = 合併後對話段落的 迄數
╭────────────── 舉例來說 ──────────────────╮
│ a.xml: <Log FirstSessionID="1" LastSessionID="116"> │
│ b.xml: <Log FirstSessionID="1" LastSessionID="89"> │
│ 合併後: <Log FirstSessionID="1" LastSessionID="205"> │
╰─────────────────────────────────────╯
2.修改 b.xml 的每一句對話的SessionID:
╭─────────────────────────────────────╮
│ <Message …略… SessionID = "b原來SessionID + a的迄數"> …略…</Message> │
│ ﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹌ │
╰─────────────────────────────────────╯
--
打字打到累了....@ @"
其實手動合併一點都不難
只是真的要手動合併量大的對話記錄的話,到後面會摔筆....
※ 引述《doctortwo (中肯界的翹楚)》之銘言:
: 我這邊有很多分散的歷史訊息,時間也不一
: 所以我想請問
: 1. 如何將這些數於不同檔案的歷史訊息,合併成一個檔案?
: (爬文有爬到 MSN History Merger,但我不知道怎麼用啊...)
: 2. 更進一步地問,請問有辦法自行排列MSN對話的順序嗎?
: (因為比方說,我現在有檔案一跟檔案二)
: (比方檔案一有 7/1 7/2,而檔案二有 7/1的)
: (那我會希望最後合併的檔案,能先顯示檔案一的 7/1、接著顯示檔案二的 7/1)
: (最後再顯示檔案一的 7/1)
: (所以不知道有沒有辦法做到?)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.11.18.40
※ 編輯: chiuling 來自: 124.11.18.40 (07/17 23:03)
※ 編輯: chiuling 來自: 124.11.18.40 (07/17 23:13)
推
07/18 12:45, , 1F
07/18 12:45, 1F
→
07/19 17:18, , 2F
07/19 17:18, 2F
推
09/15 21:29, , 3F
09/15 21:29, 3F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
Instant_Mess 近期熱門文章
PTT數位生活區 即時熱門文章