第一次接觸社交化評論類產品大概是在2012年左右,當時國內知名度較高的有多說、友言等,國際上比較有名的有Disqus,這類產品的優勢在此就很少說了。php
用過幾款產品後,被多說漂亮的頁面和體驗所吸引,最終愛上了多說。開源的內容管理和博客系統換過不少,但評論只要能用多說,就必定用它。git
後來被 typecho 的精簡吸引,本人的我的博客系統也從 wp 換到 typecho,評論也一直用的多說。但 typecho 沒有像 wp 那樣完善的插件管理系統,看不到數據,加上對第三方的不信任(隨時停更),因此也沒有安裝第三方插件;再加上是多說的死忠粉,實不實時同步到本地數據庫也沒什麼大問題。github
2017年3月21日,多說官方發佈了一條重要通知:「多說即將關閉,將於2017年6月1日正式關停服務」。當時心裏感慨萬千,本想來個長篇大論感慨一下,奈何文采有限,最後發了一條朋友圈:sql
」多說「國內社交化評論」No.1「,現在居然也落得如此下場!不能變現的項目,即便再優秀也可貴長久,願在新的領域裏再創輝煌,前程似錦!」數據庫
感慨完了,數據仍是要拿回來,既然是6月1日正式中止服務,那仍是有大把時間能夠揮霍的,因此一直也沒上心。正好這個五一小長假來臨前一天,感冒+高燒找上了門,只能在家閉門養病了(平時也不知道在瞎忙什麼...)。json
關於多說的數據格式和 typecho 表結構在這裏就不分析了,主要說說主要步驟。這裏是把多說json格式的數據轉換成符合 typecho 表關係的 insert 語句,並寫入到insert.sql
文件中,有了這個文件相信聰明的你就知道該怎麼作了!數組
進入多說開發者後臺=>工具=>導出數據,選中」包含文章數據「、」包含評論數據「,務必選中兩項,而後導出數據,解壓後拿到export.json
文件備用。瀏覽器
在 export.json 同級目錄新建import.php
文件,代碼以下:app
<?php // 讀取 json 文件並轉換成 php 數組 $json = file_get_contents("./export.json"); $data = json_decode($json, true); // 文章數據 $threads = $data['threads']; // 評論數據 $posts = $data['posts']; // 多說的文章ID(thread_id)與 typecho 的文章ID(cid) 對應關係 $threadIdRelationCid = []; foreach ($threads as $item) { $threadIdRelationCid[$item['thread_id']] = $item['thread_key']; } // 假設評論表 coid 小於10001,此處從10001開始自增,請根據實際最大值修改 $coid = 10001; // 多說的評論ID(post_id) 與 typecho 的評論ID(coid) 對應關係 $postIdRelationCoid = []; foreach ($posts as $item) { $postIdRelationCoid[$item['post_id']] = $coid++; } // 拼成多條 insert sql語句 $sql = ''; foreach ($posts as $item) { $coid = $postIdRelationCoid[$item['post_id']]; $cid = $threadIdRelationCid[$item['thread_id']]; $created = strtotime($item['created_at']); $author = $item['author_name'] ?: ''; $mail = $item['author_email'] ?: ''; $url = $item['author_url'] ?: ''; $ip = $item['ip']; $text = $item['message']; $parent = 0; if (is_array($item['parents'])) { $parent = $postIdRelationCoid[$item['parents'][0]]; } $sql .= "INSERT INTO `typecho_comments` (`coid`, `cid`, `created`, `author`, `authorId`, `ownerId`, `mail`, `url`, `ip`, `agent`, `text`, `type`, `status`, `parent`) VALUES ({$coid}, {$cid}, {$created}, '{$author}', 0, 1, '{$mail}', '{$url}', '{$ip}', NULL, '{$text}', 'comment', 'approved', $parent);\n"; } // 將 sql 寫入文件中 file_put_contents("./insert.sql", $sql); echo "end \n";
在命令行執行php import.php
或在瀏覽器中訪問import.php
文件(推薦使用命令行方式),就會在該文件所在的目錄生成一個insert.sql
文件。【下載代碼】typecho
部分評論數據裏面可能會有 emoji 表情,可是 typecho 表的字符集是 utf8,若是須要保留 emoji 的童鞋把 pre_comments 表的字符集改爲 utf8mb4 便可,不須要保留 emoji 表情的將 emoji 表情刪掉重導便可。
本博客已切換到 typecho 自帶的評論,默認的纔是最好的!!!!!若是有和我同樣需求的童鞋能夠把代碼拿去放心使用。
不得不說,從產品角度講,」多說「是一個很是優秀的產品,市場佔有率很是高,但從商業角度講,」多說「又是一個很是失敗的案例,其成敗都值得深思。
若是您看到了這篇文章,請留下您的思考!^_^