搬離簡(jiǎn)書指南喉钢!

JIANSHU

簡(jiǎn)書是一個(gè)簡(jiǎn)潔、高效的文字創(chuàng)作良姆、分享和閱讀平臺(tái).簡(jiǎn)書的編輯器支持Markdown,讓你可以專心進(jìn)行文字創(chuàng)作而不用考慮太多排版工作.當(dāng)年作者也是因?yàn)楹芟矚gMarkdown,而簡(jiǎn)書的Markdown很漂亮,就加入了簡(jiǎn)書.

優(yōu)秀的創(chuàng)作者,可能經(jīng)常修改自己作品,簡(jiǎn)書也考慮到了這些,為我們提供了文章離線包,但對(duì)于文章的圖片只保留了外鏈,如果電腦無法連網(wǎng),我們就只能看到純文本的作品... 對(duì)于一個(gè)文章含有大量圖的創(chuàng)作者,沒有圖片的作品,觀看效果會(huì)大打折扣.

為了解決圖片離線無法觀看的問題,作者用腳本將圖片緩存到了本地,很簡(jiǎn)單!只需四步...

1.登錄到簡(jiǎn)書后臺(tái)獲得自己所有的文章

登錄到后臺(tái)

2.解壓獲得的壓縮包

解壓

3.將下面提供的腳本放到.md文件的同級(jí)目錄

腳本放到.md文件的同級(jí)目錄

4. 運(yùn)行腳本

運(yùn)行腳本

完成后效果

自動(dòng)創(chuàng)建文件夾為圖片分類
自動(dòng)創(chuàng)建文件夾為圖片分類
自動(dòng)將網(wǎng)絡(luò)圖片鏈接改為本地圖片鏈接
網(wǎng)絡(luò)圖片鏈接改為本地圖片鏈接

小結(jié)

簡(jiǎn)書是一個(gè)優(yōu)秀的創(chuàng)作社區(qū),這里不僅有文藝青年,也有程序員,作者也是最近才發(fā)現(xiàn),程序類的創(chuàng)作者是沒有簽約作者這個(gè)選項(xiàng)的... 所以,如果開發(fā)者們要往其它平臺(tái)遷移自己的編程類作品的話,這個(gè)腳本可以幫你省很多時(shí)間;

熱衷于收藏的創(chuàng)作者,可以把自己的簡(jiǎn)書包留個(gè)完整的備份,多年后,看看自己當(dāng)年的文章,也是一份不錯(cuò)的回憶!

腳本源碼(python3環(huán)境)

import re
import urllib.request
import urllib.parse
import os
import sys
import time

# 獲取當(dāng)前目錄下的文件名列表
def get_files():
    files = os.listdir()
    new_files = list()
    for file in files:
        try:
            new_file = re.match(r".*\.md$", file).group()
            if new_file:
                new_files.append(new_file)
        except Exception as e:
            pass
    return new_files

# 將原文件中的網(wǎng)絡(luò)圖片地址改為本地地址
def inter_to_local(file_name, inter_addr, local_addr):
    with open(file_name+".md", "r") as f:
        content = f.read()
        content = content.replace(inter_addr, local_addr, 1)
    with open (file_name+".md", "w") as f:
        f.write(content)

# 根據(jù)提取的url和圖片名,下載圖片
def core_download(dir_name, image_name,image_addr):
    try:
        time.sleep(2)
        url = image_addr
        user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
        headers = {'User-Agent':user_agent}
        req = urllib.request.Request(url, None, headers)
        image_data = urllib.request.urlopen(req)
        image_data = image_data.read()
        # 打開文件
        with open("./images/"+dir_name+"/"+image_name, "wb+") as f:
            f.write(image_data)
            print("圖片%s下載完畢......"%image_name)
            # 將網(wǎng)絡(luò)圖片替換為本地圖片
            inter_to_local(dir_name, image_addr, "./images/"+dir_name+"/"+image_name);
    except Exception as erro:
        pass

# 獲取文章中圖片的url,并下載到本地
def get_urls():
    task_files = get_files()
    try:
        for task_file in task_files:
            # 為單個(gè)文件創(chuàng)建單獨(dú)的文件夾
            task_file_pure = re.match(r"(.*)\.md",task_file).group(1)
            try:
                try:
                    os.mkdir("./images")
                except:
                    pass
                os.mkdir("./images/%s"%task_file_pure)
            except:
                pass

            with open(task_file, "r") as f:
                content = f.read()
            
                one_file_image_names_urls = re.findall(r"!\[(.*?)\]\((.*?)\)", content)
            try:
                for image_name_url in one_file_image_names_urls:
                    # 如果圖片沒有名字,則按照時(shí)間產(chǎn)生的隨機(jī)字符串取名
                    if image_name_url[0] is None:
                        image_name_url[0] = str(int(time.time()))
                    #獲取圖片格式
                    image_format = re.match(r".*(\..*?)\?.*", image_name_url[1]).group(1)

                    image_name = image_name_url[0]+image_format
                    image_url = image_name_url[1]
                    try:
                        task_file = re.match(r"(.*)\.md",task_file).group(1)
                    except:
                        pass
                    core_download(task_file,image_name,image_url)
                    
            except Exception as e:
                pass 

    except Exception as e:
        pass



def main():
    get_urls()
    pass

if __name__ == "__main__":
    main()

如果您喜歡python,喜歡故事,請(qǐng)點(diǎn)贊或關(guān)注我!您的支持是對(duì)作者最大的鼓勵(lì)肠虽!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市歇盼,隨后出現(xiàn)的幾起案子舔痕,更是在濱河造成了極大的恐慌,老刑警劉巖豹缀,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伯复,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡邢笙,警方通過查閱死者的電腦和手機(jī)啸如,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來氮惯,“玉大人叮雳,你說我怎么就攤上這事「竞梗” “怎么了帘不?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)杨箭。 經(jīng)常有香客問我寞焙,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任捣郊,我火速辦了婚禮辽狈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘呛牲。我一直安慰自己刮萌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布娘扩。 她就那樣靜靜地躺著着茸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪畜侦。 梳的紋絲不亂的頭發(fā)上元扔,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音旋膳,去河邊找鬼澎语。 笑死,一個(gè)胖子當(dāng)著我的面吹牛验懊,可吹牛的內(nèi)容都是我干的擅羞。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼义图,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼减俏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起碱工,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤娃承,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后怕篷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體历筝,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年廊谓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了梳猪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蒸痹,死狀恐怖春弥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情叠荠,我是刑警寧澤匿沛,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站榛鼎,受9級(jí)特大地震影響俺祠,放射性物質(zhì)發(fā)生泄漏公给。R本人自食惡果不足惜借帘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一蜘渣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肺然,春花似錦蔫缸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至街望,卻和暖如春校翔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背灾前。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來泰國打工防症, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哎甲。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓蔫敲,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親炭玫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奈嘿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容