[程式] 管理並瀏覽本子的程式

裏洽

24220

markdown 好讀
https://tinyurl.com/y96wlfkt



這是一個本本管理軟體,其想法類似
[Hentai Ark](https://www.ptt.cc/bbs/AC_In/M.1569436760.A.261.html)
會利用從EX上獲取的metadata來**自動**將本機上的本本做整理
並提供類似exhentai界面的方式來使用
與Hentai Ark不同的地方在於,我的程式更加注重瀏覽,可以在看本時利用快捷鍵快速切
換上下本
瀏覽方式類似[HoneyView](https://tw.bandisoft.com/honeyview/),並增加了隨機排序
的方式,防止在本本資料庫中都是看到那幾本

## 目錄
- [畫面介紹](#畫面介紹])
- [下載&安裝](#下載&安裝)
* [win執行檔](#win執行檔)
* [原始碼編譯安裝](#原始碼編譯安裝)
- [使用方法](#使用方法)
* [匹配畫面](#匹配畫面)
* [主畫面](#主畫面)
* [本子畫面](#本子畫面)
* [瀏覽畫面](#瀏覽畫面)
- [特性與設定](#特性與設定)
* [快取](#快取)
* [本子隨機、順序切換](#本子隨機、順序切換)
* [本機資料庫與路徑](#本機資料庫與路徑)
* [壓縮檔](#壓縮檔)
* [JSON設定](#JSON設定)
- [未來計畫(包含我想做但還沒做,和我想做但沒能力做的)](#未來計畫(包含我想
做但還沒做,和我想做但沒能力做的))
- [免責聲明](#免責聲明)
- [Thanks](#Thanks)
- [許可證](#許可證)

## 畫面介紹

主畫面
有在matadata內且被匹配到的本本會顯示相應的分類,但未在matadata內或沒被匹配到的
本本會顯示null
![1](https://imgur.com/i14fykI.png)


本子畫面
在本子畫面有中文翻譯的tag(移到上面會顯示原文),並有中文解釋
![2](https://imgur.com/0VNB9pu.png)


如果按壓tag,便會顯示中文解釋和搜尋
中文翻譯及解釋來自[這裡](https://github.com/EhTagTranslation/EhSyringe)
,只做
簡單的簡轉繁
按下搜尋便會搜尋你按下的tag
![3](https://imgur.com/exBZDst.png)


可以藉由搜尋來限制本子範圍,例如我這裡使用「shizuka rin」作為關鍵字(島喜凜?

這樣瀏覽切換上下本時也會都會是有「shizuka rin」的tags的本本
![4](https://imgur.com/FHGApvl.png)


例如本來在看這本
![5](https://imgur.com/NX7og2d.png)


按下「切換下一本」時,便會顯示下一本,不須回到主畫面
![6](https://imgur.com/IJDYfGp.png)


## 下載&安裝

### win執行檔
從[這裡](https://mega.nz/folder/CCwm3DYS#LshpqDeULnf12kqzIJdP8g)下載,其中
`ex_view.7z`是主程式,`setting.7z`是設定和資料庫
首先先將兩個壓縮檔分別解壓縮,會得到`ex_view`和`setting`兩個資料夾,再把
`setting`資料夾放到`ex_view`資料夾中
最後按下`ex_view.exe`就能開始程式了

### 原始碼編譯安裝
首先先安裝[node.js](https://nodejs.org/)

從[這裡](https://mega.nz/folder/CCwm3DYS#LshpqDeULnf12kqzIJdP8g)下載,解壓縮
`source.7z`後,進入目錄,輸入
```bash
npm install
```
等待依賴模組安裝完成,之後再輸入
```bash
npm run dist
```
產生可執行檔案
經測試可以在ubuntu上正常運作

## 使用方法
程式分為:
- 匹配畫面
- 主畫面
- 本子畫面
- 瀏覽畫面
- 設定

### 匹配畫面
當第一次打開程式時,會進入匹配畫面,選擇存放本本的資料夾,它會自動搜尋底下所有
的本本
![a](https://imgur.com/PN0pQBF.png)


本本分為兩種,資料夾及zip檔案
資料夾本本格式

```
+ 資料夾(本子名)
+ 圖片1
+ 圖片2
+ .........
```
zip格式則是只要zip裡有圖片(忽略資料夾),就算是本本

```
+ zip(本子名)
+ 圖片1
+ 圖片2
+ .........
```

匹配速度有點慢,每一個本本要花約一秒來完成,請耐心等候

### 主畫面
主畫面為
![1](https://imgur.com/i14fykI.png)


其中有匹配到的本本,在圖片的下方會顯示對應的分類、日期(ex上傳日期)、圖片頁數
(ex圖片頁數),未匹配到的本本則會全部顯示null
而按下圖片則會進入本子畫面

搜尋支援`AND`、`OR`和`-`(排除)語法而使用`.null`關鍵字可以搜尋到沒有匹配到的
本本,也支援ex的標籤語法(ex:`character:"makaino ririmu$"`)
上方分類欄則與ex一致,按下為排除對應分類,全部按下則與全部不按相同

鍵盤功能:
- `esc`: 關閉程式
- `enter`: 全螢幕
- `<-`: 上一頁
- `->`: 下一頁

### 本子畫面
本子畫面為
![2](https://imgur.com/0VNB9pu.png)


如果未匹配到則會是
![阿喵喵很可愛對八?](https://imgur.com/O8SHpgb.png)


標題第一欄是本機本子名,第二欄是ex上的原文名稱,第三欄則是ex上的羅馬字名稱
中間是tag,按下則會顯示藍色,並在側邊顯示tag的解釋(如果有的話),按下下方的`
搜尋`,則會跳回主畫面並搜尋所有選擇(藍色)的tag
需要注意的是,解釋只會顯示最後按下的tag,如果有想要看解釋的藍色tag,那要先把取
消藍色,再按一次就能看解釋了(按兩次就對了)

鍵盤功能:
- `esc`: 關閉程式
- `enter`: 全螢幕
- `backspace`: 退回主畫面
- `<-`: 上一頁
- `->`: 下一頁
- `ctrl + <-`、`[`: 上一本
- `ctrl + ->`、`]`: 下一本
- `0`: 排序(可以在隨機排序與照本子名排序中切換)

### 瀏覽畫面
瀏覽畫面為
![哭哭阿喵喵](https://imgur.com/5GUBETs.png)

使用滾輪可以切換上下頁,當在第一頁時,左上角會短暫顯示「第一頁」
沒有放大、縮小,因為我不會寫

鍵盤功能:
- `esc`: 關閉程式
- `enter`: 全螢幕
- `backspace`: 退回本子畫面
- `<-`、`pageup`: 上一頁
- `->`、`pagedown`: 下一頁
- `ctrl + <-`、`[`: 上一本
- `ctrl + ->`、`]`: 下一本
- `0`: 排序(可以在隨機排序與照本子名排序中切換)

## 特性與設定

### 快取
由於使用技術的限制,圖片的載入速度稍慢,所以設計了快取機制,同時載入多張圖片,
以降低快速切換圖片造成的延遲(但解析度太大的圖片還是愛莫能助)
預設是50張圖片,也就是在看一張圖片的時候,會同時載入前面25張圖與後面25張圖
可以根據需求在設定中調整

### 本子隨機、順序切換

類似音樂的隨機播放功能,在看本子的時候,防止固定順序造成審美疲勞
在「本子畫面」或「瀏覽畫面」中按下「數字鍵0」便會切換成隨機或是按照名稱排序
如果是在「瀏覽畫面」中切換成隨機,左上角會短暫出現「Random」提示

### 本機資料庫與路徑
```
setting/
├── chinese.json
├── ex.db
├── local
│ ├── dir.json
│ └── local.db
└── setting.json
```

- `chinese.json`: ex中文翻譯
- `ex.db`: ex metadata
- `local`: 存放使用者資料
- `dir.json`: 存放需要update的路徑
- `local.db`: 存放匹配過得本子資料
- `setting.json`: 存放使用者設定

### 壓縮檔

目前支援zip格式的本本,但效能一言難盡,一部份是我程式能力太差,另一部份是JSzip
本身效能的問題
如果有推薦的壓縮檔讀取套件可以和我說,雖然因為我不用壓縮檔來存本本,所以可能不
會更新

### 本機資料庫更新

由於更新本機資料庫會讓開啟速度大幅變慢(實測7000本約3分鐘),所以預設是關閉本
機資料庫更新
如果電腦上的本本有增加或減少,請去設定裡面把`update`設為`true`

### JSON設定
這個軟體的所有設定都使用JSON設定
JSON是一種輕量級的資料交換語言,該語言以**易於讓人閱讀**的文字為基礎
其中`"//"`開頭的文字是註解,用來解釋對應的功能,要修改設定可以參考註解去做修改

```json
{
"//": "這是用來設定的JSON檔案",
"//": "然後因為技術力不足加上JSON的格式蠻嚴格的,容易寫錯,如果修改設
定後
程式當掉,可以從壓縮檔中恢復setting.json",
"//": "鍵盤設定",
"//": "鍵盤定義可以從這個網站上得知https://keycode.info/",

"keyboard": {
"//": "上一頁,預設值是方向鍵←,與pageup(除了veiw頁面外無法使用)",
"prev": [37, 33],
"//": "下一頁,預設值是方向鍵→,與pagedown(除了veiw頁面外無法使用)
",
"next": [39, 34],
"//": "全螢幕, 預設值是Enter",
"full_screen": [13],
"//": "回到book,預設值是Backspace",
"back": [8],
"//": "跳到第一頁,預設值是home(除了veiw頁面外無法使用)",
"home": [36],
"//": "跳到最尾頁,預設值是end(除了veiw頁面外無法使用)",
"end": [35],
"//": "跳到上一本,預設值是ctrl + 方向鍵←和[",
"prev_book": [["ctrlKey", 37], 219],
"//": "跳到下一本,預設值是ctrl + 方向鍵→和]",
"next_book": [["ctrlKey", 39], 221],
"//": "排序切換開關,可以切換順序排序和隨機排序",
"sort": [96],
"//": "關閉程式",
"exit": [27]
},
"//": "是 = true、否 = false",
"//": "是否每次開啟時都更新資料庫(建議不要,速度很慢,當目標資料夾有新增
或刪除本本的時候再開)",
"update": false,
"//": "是否開啟「開發人員工具」",
"debug": false,
"//": "頁面放大倍率,預設是110%(測試中)",
"zoom": 1.10,
"//": "首頁最多顯示圖片數量",
"home_max" : 50,
"//": "本子頁最多顯示圖片數量",
"page_max" : 20,
"//": "快取圖片數量",
"cache" : 50
}
```

## 未來計畫(包含我想做但還沒做,和我想做但沒能力做的)
- 增加tag的「我的最愛」
- 在主畫面上顯示縮圖,而不是原圖,增加效率
- 右鍵功能需要有複製、貼上、開啟檔案位置
- zip本本效能最佳化
- rar支援
- 由ex上抓到的爬蟲資料不完整,需要更新,根據新資料的不同,部份程式需要改寫
- 在網路上取得的ex matedata部份有誤,需要重新製作,tags格式部份不完整

## 免責聲明
我的程式能力並不出色,此程式只在我的電腦測試過,並不可靠,從無法開啟到世界末日
都有可能
如有疑慮請不要使用,本人對此程式造成的結果不負任何責任。

## Thanks
這個程式使用`nodejs`+`eletron`開發、`electron-builder`完成分發
照抄`exhentai.org`的HTML與CSS
中文翻譯是使用[EhTagTranslation](https://github.com/EhTagTranslation/Database)

的成果做繁簡轉換而成

使用了以下套件
- [dialogs](https://github.com/jameskyburz/dialogs)

- [fast-levenshtein](https://github.com/hiddentao/fast-levenshtein)

- [jszip-sync](https://github.com/ericvergnaud/jszip)
- [sqlite3](https://github.com/mapbox/node-sqlite3)

感謝[Sachia Lanlus](https://forums.e-hentai.org/index.php?showuser=2351915)
提供了[metadata](https://mega.nz/#F!oh1U0SIA!WBUcf3PaOvrfIF238fnbTg)

## License

「萬神殿授權條款」
<[email protected]>寫了這個程式,任何人都可以用此程式做任何事。
如果哪天看到我發[請神]文,並且你認為這個程式有價值,可以幫我神神看。
不過要是我們在路上相遇了,而且你認出我來,請溫柔的裝作不認識我。 wei115

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.252.220.251 (臺灣)※ 文章網址: https://www.ptt.cc/bbs/AC_In/M.1609540752.A.385.html
本人1樓很累,去睡了 01/02 06:40
lanjack2樓先推再研究 01/02 07:08
emptie3樓授權條款笑了 01/02 09:38
最用心寫的地方
liu20074樓感動QQ 沒想到紳士方舟死後,還有人記得..... 01/02 09:53
liu20075樓 01/02 09:55
liu20076樓這邊有幾個對於tag的metadata我想到可能會遇到的問題 01/02 10:01
liu20077樓阿沒事,可能你爬到的資料有本子title以外的資訊,所以 01/02 10:03
liu20078樓不是問題,當我沒說@@ 01/02 10:04
danielqwop9樓全身趴地的感謝 01/02 11:48
emulators10樓推,我最近也在開發類似的東西,網頁版的,自用 01/02 11:50
justatree11樓 01/02 12:48
lunawalker12樓人類因變態而偉大! 01/02 12:49
musclegood13樓先推用心寫程式,編譯碼那邊有點不太懂 01/02 14:55
musclegood14樓先跳過編譯碼。總之還是開起來了,介面很棒,想請教如 01/02 15:02
musclegood15樓果想重新設定搜索資料夾,像剛開始用程式那樣,怎麼辦 01/02 15:03
編譯那邊是不用windows的使用者,可以自己編譯安裝,沒有需求的使用我打包好的win執行 檔就可以了 然後如果要重新搜索資料夾,把setting資料夾中的local資料夾清空就可以了(不要把local 資料夾刪掉)
Gold74071616樓請問要怎麼確定我們在路上相遇了呢? 01/02 15:42
Gold74071617樓會通嗎?我記得是寄/cdn-cgi/l/email-protection 01/02 15:43
不知道,我只是隨便寫寫XD
liu200718樓剛剛玩了一下,目前這個程式似乎只搜尋目錄的第一層,如 01/02 16:59
liu200719樓果像我先以作者為資料夾名稱作分類,最底層才以該本在熊 01/02 16:59
liu200720樓貓上的全名作為資料夾名稱的就被忽略了 01/02 17:00
liu200721樓這是我該目錄下分類長的樣子 01/02 17:01
liu200722樓但只有八個以熊貓title格式命名的資料夾有被讀到並上tag 01/02 17:02
對,只有一層(因為我的本本都沒在分類的),如果這樣只能一個個加進來
ejon23樓推推 01/02 17:13
steven9641424樓同是彩虹推給你推( 01/02 17:23
liu200725樓請問你是用什麼語言寫的?用什麼打包成win程式的@@? 01/02 17:42
我有寫在readme裡面,用js寫的 使用`nodejs`+`electron`開發、`electron-builder`完成 分發
knight71426樓我新加了本本所以重新讀取資料夾 然後跑超久都進不去 01/02 20:37
knight71427樓是正常的嗎 畫面一直停在請稍待 01/02 20:37
本人28樓我實際測試,7000本就算沒有增加和減少 也要跑3分鐘以上 01/02 20:45
本人29樓可能本本真的太多了? 01/02 20:45
knight71430樓我才3000 跑了1小時都還沒好XD 01/02 20:48