在成功建立本地 Waline 服务后,需要考虑之前 Waline 数据迁移的问题了。
Comment.0.jsonl
文件为评论数据库{'_id': ObjectId('6310577eb6b2b90cd6c84568'),
'comment': '评论测试 <img class="wl-emoji" src="https://cdn.jsdelivr.net/gh/walinejs/emojis/weibo/weibo_clap.png" alt="weibo_clap"><img class="wl-emoji" src="https://cdn.jsdelivr.net/gh/walinejs/emojis/weibo/weibo_clap.png" alt="weibo_clap">',
'insertedAt': datetime.datetime(2022, 9, 1, 6, 55, 58, 523000),
'ip': '180.171.132.122',
'link': 'https://www.zywvvd.com',
'mail': 'zywvvd@mail.ustc.edu.cn',
'nick': 'VVD',
'pid': None,
'rid': None,
'status': 'approved',
'ua': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36',
'url': '/notes/coding/internet/nginx-docker-https/nginx-docker-https/',
'user_id': '63104d1dcae126118b6109f3'}
{"nick":"VVD","ip":"108.61.78.229",
"updatedAt":"2021-08-31T15:23:24.616Z",
"ACL":{"*":{"read":true,"write":true}},
"objectId":"612e496cdf64212dbbc96c97",
"mail":"zywvvd@mail.ustc.edu.cn",
"ua":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36",
"insertedAt":{"__type":"Date","iso":"2021-08-31T15:23:24.126Z"},"createdAt":"2021-08-31T15:23:24.616Z",
"status":"approved",
"link":"www.zywvvd.com",
"comment":"<p>hello world !</p>\\n",
"url":"/notes/hexo/theme/fluid/fluid-waline/fluid-waline/",
"user_id":"612e4539df64212dbbc967b1"}
insertedAt
的值类型,只要将 insertedAt
下的数据转化为 datetime.datetime 格式即可兼容pid
, rid
,这两个变量需要指向回复的变量 _id
的 ID 内容,为了对其这项内容,将原始 objectId 命名 为当前 ID 即可from pymongo import MongoClient
import mtutils as mt
import json
from pprint import pprint
import datetime
import re
def time_format_transfer(time_info):
time_str = time_info['iso']
res = re.search("(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).(\d{1,}).*", time_str)
res_list = [int(res[index]) for index in range(1, 8)]
time_obj = datetime.datetime(*res_list)
return time_obj
if __name__ == '__main__':
conn = MongoClient('127.0.0.1', 27017)
db = conn.admin
data_str_list = mt.file_read_lines('Comment.0.jsonl')[1:]
collenction = db['Comment']
for data_str in mt.tqdm(data_str_list):
info = json.loads(data_str)
res = time_format_transfer(info['insertedAt'])
info['insertedAt'] = res
pprint(info)
info['_id'] = bson.objectid.ObjectId(info['objectId'])
collenction.insert_one(info)
pass