那是一個月黑風高、風雨交加、伸手不見五指的黑夜,冥冥之中好似要發生點什麼
因為出了個"意外"再加上疫情原因,我一度變成了"植物人",差點去了二次元,好在"搶救"回來了。這幾年找我的訊息我也收不到了,感謝那些還在和關心我的人,謝謝。
錯的並不是我,而且這個冥冥之中註定的世界
這些年找我的人和事,我也全部不知道,QQ、微信一些訊息太久也都收不到了
看到我多年未亮起的頭像重新亮了起來,不少朋友都來問我怎麼回事。
很感謝那些素未謀面的網友,或許叫朋友更親切些,你們還一直惦記著我,讓我很是感到。
一找就是找了我三年
滿世界的找我
感動的不要不要的
關於部落格
部落格首次建成時間是2016-06-09,如今已經成立了快8年之久了,在各種災難中也頑強的生存了下來
期間也認識了好多好多的小夥伴,一起討論,一起進步,一起成長。所以我並不想讓部落格就此消失
部落格資料的原本有自動備份到七牛雲的,但直到現在才知道,備份不知道什麼原因,19年10月份左右就停掉了
都說網際網路是有記憶的,本著“頭可斷血可流,資料不能丟”的精神,我在茫茫網路中需要數日,終究還是讓我找到了部落格的網站存檔。 archive (國外著名的網站檔案館專案)
於是就寫了個Python指令碼把文章和評論資料給爬下來了。
爬完後我發現有人已經給我備份了(我部落格之前是別人贊助的三年)
部落格搬遷
部落格搬遷到部落格園,其實也是不得已而為之
但是部落格的原域名(52ecy.cn,moeins.cn,moeins.com)在到期後被人搶注,溝通無果後,一時半會是拿不回來的了
迫無無奈吧,只能暫且先將部落格搬遷到部落格園來(之後是否在自建的話再做打算把)。另一面也可能是現在沒有太多閒時間來折騰自己的系統,放在部落格園反倒是更加省心省力。但是評論就沒那麼方便了,需要登入在可以發表評論,當然有啥問題也可以直接在群裡@我
其實早在18年底的時候,我就已經有想換主題的想法了->這下真鴿了 我可真能拖,太佩服我自己了
無奈之前的emlog系統沒有合適現成的,自己又懶著移植,便一直一拖再拖。
原來那個主題我一直就想換掉了,因為不太好看,沒有個性,就是規規矩矩的,並不符合我的個性和風格
但是呢,我審美雖然特別棒,但你要讓我自己寫一套符合我審美的主題出來那就是有點困難了
後來突然看到部落格園使用者不忘編碼的部落格,心想部落格園還支援這樣自己美化。
後便決定暫時先搬遷到部落格園再說吧。
其實一直就想換這種二次元風格的主題了
目前此部落格美化風格樣式基於櫻花莊的白貓的WordPress主題Sakura,不忘編碼移植,但BUG和細節問題較多,我又花了兩天最佳化了一下,當也好多頁面沒最佳化,之後在慢慢來吧 (能明天在做的事為什麼不留給明天的我去做呢)
由於之前的emlog部落格使用的是HTML的TinyMCE編輯器,而且還是很老的版本,所以生成的文章的HTML程式碼也是相當的混亂,所以搬遷至部落格園的markdown格式的時候出現了很多的樣式不相容問題,我也已經儘可能的修復了一些,當也沒法保證所有文章都能正常的顯示,看到的話再慢慢修吧
友情連結我也單獨搞了一個頁面給搬遷過去了,但也很多友鏈的網站也已經無法訪問了,有的也已經下掉友鏈了。
現在的我也不是獨立域名了,都不好意思再去申請友鏈了.....
我為什麼要寫部落格?
有人會覺得這些有這麼重要嗎?
有時候我也是想說點什麼,想寫點什麼,但又沒人說,沒地方寫,就是需要那麼一個地方
其實我做部落格也不是為了什麼流量啊,賺錢之類的,就想搞一片自己的小天地
也許也正因這一份熱愛,所以我才能慢慢堅持下來,奈何事與願違,出了點意外
因為一句“我又不想他部落格從此也失聯,無法訪問開啟”
@寒穹 那貨還說我:“阿珏,那麼久了怎麼還那麼二刺螈”。
我想這麼多年來,一直沒變的就是我了吧。
Python
搬遷的Python的程式碼,雖然沒啥用,但算是記錄一下,供有需要的人學習學習
點選檢視程式碼
import os
import re
import time
import requests
from bs4 import BeautifulSoup
from urllib.parse import urlparse, parse_qs
# 指定檔案路徑
file_path = "C:\\Users\\Administrator\\Desktop\\blog\\content.txt"
save_folder = "C:\\Users\\Administrator\\Desktop\\blog\\content\\"
def save_to_file(data, file_name):
try:
file_path = os.path.join(save_folder, file_name + ".txt")
with open(file_path, 'a', encoding='utf-8') as file:
file.write(data)
print("資料已成功儲存到檔案:", file_path)
except Exception as e:
print("儲存檔案時出錯:", e)
def remove_html_tags(text):
soup = BeautifulSoup(text, 'html.parser')
return soup.get_text()
def comment(html_content):
comment_matches = re.findall(r'<div class="comment (.*?)" id="comment-\d+">[\s\S]*?<img .*?inal=".*?202.*?/([^"]+)"/>[\s\S]*?<div ' +
'class="comment-content">(.*?)</div>[\s\S]*?itle=".*?">(.*?)</span>[\s\S]*?<span class="comment-time">(.*?)</span>',
html_content, re.DOTALL)
article_comments = ''
if comment_matches:
i = 0
for comment_match in comment_matches:
if 'comment-children' in comment_match[0]:
i += 1
is_reply_comment = '>' * i
else:
is_reply_comment = '>'
i = 1
#頭像 大小控制在40
# 相容gravatar頭像 https://secure.gravatar.com/avatar/
if 'gravatar.com' in comment_match[1]:
avatar_url = '![](' + str(re.sub(r'(\?|&)s=\d+', '\\1s=40', str(comment_match[1]))) + ') '
else:
parsed_url = urlparse(comment_match[1])
query_params = parse_qs(parsed_url.query)
dst_uin = query_params.get('dst_uin', ['1638211921'])
avatar_url = '![]('+'https://q1.qlogo.cn/g?b=qq&nk='+str(dst_uin[0])+'&s=40'+') '
comment_content = comment_match[2].strip()
nickname = comment_match[3].strip()
comment_time = comment_match[4].strip()
link_url = re.search(r'030.*?/(.*?)" .*? rel', nickname)
# 構造評論的markdown格式
comment_content = is_reply_comment + comment_content.replace('\n', '>')
comment_content = comment_content.replace('##這篇評論是私密評論##', '[#這篇評論是私密評論#]')
# 替換表情圖片
soup = BeautifulSoup(comment_content, 'html.parser')
for img in soup.find_all('img'):
title_text = img.get('title', '')
img.replace_with('[#'+title_text+']')
comment_content = soup.get_text()
# 儲存評論使用者的URL地址
if link_url:
nickname = '['+remove_html_tags(nickname)+']'
link_url = '(' + link_url[1] + ') '
else:
link_url = ''
nickname = remove_html_tags(nickname) + ' '
if i == 1:
article_comments += '\n'
article_comments += is_reply_comment + avatar_url + nickname + link_url + comment_time + '\n' + comment_content + '\n'
return article_comments
else:
return ''
def process_article(url):
print("當前執行===="+url)
response = requests.get(url)
if response.status_code == 200:
html_content = response.text
soup = BeautifulSoup(html_content, 'html.parser')
article_title = soup.find('h1', class_='article-title')
article_mate = soup.find('div', class_='article-meta')
article_article = soup.find('article', class_='article-content')
soup_content = BeautifulSoup(article_article.prettify(), 'html.parser')
img_tags = soup_content.find_all('img')
pattern = r"https://web.*?_/"
for img_tag in img_tags:
if 'data-original' in img_tag.attrs:
original_url = img_tag['data-original']
else:
original_url = img_tag['src']
cleaned_url = re.sub(pattern, '', original_url)
new_url = 'https://image.baidu.com/search/down?url=' + cleaned_url
img_tag['src'] = new_url
del img_tag['data-original']
article_comment = soup.find('div', class_='article_comment_list')
data = "###### `當你看到這個提示的時候,說明當前的文章是由原emlog部落格系統搬遷至此的,文章釋出時間已過於久遠,編排和內容不一定完整,還請諒解`\n\n" + '###' + article_title.text.strip()+'\n\n'+article_mate.text.strip().replace('\n', '').replace('\r', '').replace('\t', '')+'\n' + soup_content.prettify().replace('<article class="article-content">', '').replace('</article>', '')
save_to_file(data + '\n網友評論:\n\n', article_title.text.strip())
data = comment(html_content)
if not data:
return
save_to_file(data, article_title.text.strip())
if article_comment:
comment_links = re.findall(r'<a\s+href="(.*?)nts"', str(article_comment))
if comment_links:
print('有分頁評論資料')
for link in comment_links:
url = link +"nts"
print(url)
response = requests.get(url)
if response.status_code == 200:
html_content = response.text
data = comment(html_content)
if not data:
return
save_to_file(data, article_title.text.strip())
print("寫分頁評論資料中")
else:
print("Failed to retrieve the webpage.")
def main():
with open(file_path, 'r', encoding='utf-8') as file:
for line in file:
segments = line.strip().split("----")
if len(segments) > 0:
url = segments[0]
process_article(url)
else:
print("No URL found in the line.")
print('開啟下一篇文章')
time.sleep(4)
if __name__ == "__main__":
main()