VSCode小說插件ReadNovel根據內容查找頁碼


VSCode小說插件ReadNovel根據內容查找頁碼

寫在前面

  • 環境

    • 平平無奇的vscode

    • 插件ReadNovel(暗示)

      在這里插入圖片描述

  • 問題

    • 我用手機看了好多章了,然后要用vscode這個看
    • 如何在vscode續上呢?(即從當前 章節/段落 繼續看)
  • 目標:

    • 輸入當前章節的關鍵字,查找到對應的 頁碼 (注意這個頁碼是ReadNovel在小說文件上對應的頁碼, 不是對應的行數)

      請添加圖片描述

    • 進一步說明:

      • 這個頁碼用於保存你看到的位置,實際上插件的作者在對小說文本進行處理的時候,在小說文件的開頭新增了好幾行文本
      • 其次,在讀取處理的時候,對空行進行了處理,所以上述頁碼的數值並不是完全對應文檔的總行數,而是去掉空行的文本總行數,再減去開頭新增的這些行

解決方案

  1. 使用步驟:

    1. 啟動腳本,輸入關鍵詞,查找目標頁碼 page
    2. 打開小說,修改第一行的頁碼為 page,保存小說
    3. 啟動vscode,啟動ReadNovel
    4. 開始🐟
  2. 腳本如下,需要注意的是,我這里是讀取了vscode的配置文件,所以寫的比較復雜,你自己用的話,直接把小說的路徑 賦給 book_path 就ok了

    """
    對vscode插件:ReadNovel提供內容查找和頁碼定位的操作
    """
    
    # -----------------【可以刪除】---------------------
    # 這里是獲取vscode配置文件json,讀取成dict的過程
    import sys
    sys.path.append("constants folder")
    from constants import get_vscode_json_dict
    vscode_json_dict = get_vscode_json_dict()
    # --------------------------------------------------
    
    
    import os
    from dataclasses import dataclass
    
    # 可以直接把文件路徑粘到這里就行,不需要像我這樣從vscode的配置文件中
    book_path = vscode_json_dict.get("ReadNovel.filePath")
    book_name = os.path.split(book_path)[-1]
    
    
    @dataclass
    class LocationReadNovel:
    
        def __post_init__(self):
            self.lines_without_blank = self.read_aim_file()
    
        def read_aim_file(self):
            with open(book_path, 'r', encoding='utf-8') as f:
                lines = f.readlines()
            return [x for x in lines if len(x.strip()) > 0]
    
        def find_page(self, words):
            index = 0
            infos = []
            for l in self.lines_without_blank:
                if words in l:
                    infos.append((index, l))
                index += 1
    
            # 展示
            for i, info in infos:
                print(i, ': ', info)
    
    
    def main():
        lrn = LocationReadNovel()
        print('當前書名:', book_name)
        while True:
            find_words = input("請輸入檢索內容:(輸入q退出)\n\r")
            if find_words.strip() == 'q':
                break
            lrn.find_page(find_words)
    
    
    if __name__ == '__main__':
        main()
    
  3. 最后展示一下效果:

    在這里插入圖片描述


碌碌謀生,謀其所愛。🌊 @李英俊小朋友


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM