diff --git a/main.py b/main.py
index fefbde2fb..58e9ece0b 100644
--- a/main.py
+++ b/main.py
@@ -1,5 +1,5 @@
from wordpress_xmlrpc import Client, WordPressPost
-from wordpress_xmlrpc.methods.posts import GetPosts, NewPost, EditPost
+from wordpress_xmlrpc.methods.posts import GetPosts, NewPost, EditPost, DeletePost
from urllib.parse import urlparse
import frontmatter
import time
@@ -113,6 +113,11 @@ def edit_post(id, title, content, link, post_status, terms_names_post_tag, terms
res = wp.call(EditPost(id, post_obj))
print(res)
+# 删除文章
+def delete_post(id):
+ res = wp.call(DeletePost(id))
+ print(res)
+
# 获取markdown文件中的内容
def read_md(file_path):
content = ""
@@ -195,7 +200,7 @@ def href_info(link):
return "
\n\n\n\n## 本文永久更新地址: \n[" + link + "](" + link + ")"
# 在README.md中插入信息文章索引信息,更容易获取google的收录
-def insert_index_info_in_readme():
+def update_index_info_in_readme():
# 获取_posts下所有markdown文件
md_list = get_md_list(os.path.join(os.getcwd(), "_posts"))
# 生成插入列表
@@ -230,7 +235,10 @@ def main():
post_link_id_list = get_posts()
print(post_link_id_list)
link_id_dic = post_link_id_list_2_link_id_dic(post_link_id_list)
+ link_id_dic = {key.split('/')[-2]: value for (key,value) in link_id_dic.items()}
print(link_id_dic)
+ # wp_links = [link.split('/')[-1] for link in link_id_dic.keys()]
+
# 2. 获取md_sha1_dic
# 查看目录下是否存在md_sha1.txt,如果存在则读取内容;
# 如果不存在则创建md_sha1.txt,内容初始化为{},并读取其中的内容;
@@ -259,17 +267,33 @@ def main():
post_status = "publish"
link = sha1_key.split(".")[0]
content = markdown.markdown(content + href_info("https://"+domain_name+"/p/"+link+"/"), extensions=['tables', 'fenced_code'])
- # 如果文章无id,则直接新建
- if(("https://"+domain_name+"/p/"+link+"/" in link_id_dic.keys()) == False):
+ # 如果文章id不存在,则直接新建
+ if link not in link_id_dic.keys():
+ print(f'Creating new post {md}')
new_post(title, content, link, post_status, terms_names_post_tag, terms_names_category)
# 如果文章有id, 则更新文章
else:
# 获取id
- id = link_id_dic["https://"+domain_name+"/p/"+link+"/"]
+ print(f'Updating existing post {md}')
+ id = link_id_dic[link]
edit_post(id, title, content, link, post_status, terms_names_post_tag, terms_names_category)
+
+ # 如果_posts中的markdown被删除,则删除对应的post
+ for md in md_sha1_dic.keys():
+ if md == 'update_time':
+ continue
+ md_list_basename = [os.path.basename(md) for md in md_list]
+ if md not in md_list_basename:
+ print(f'Deleting post {md}')
+ link = md.split(".")[0]
+ id = link_id_dic[link]
+ delete_post(id)
+
+
+
# 4. 重建md_sha1_dic
rebuild_md_sha1_dic(os.path.join(os.getcwd(), ".md_sha1"), os.path.join(os.getcwd(), "_posts"))
# 5. 将链接信息写入insert_index_info_in_readme
- insert_index_info_in_readme()
+ update_index_info_in_readme()
main()