一些建議
Closed this issue · 19 comments
RT
有(已新增)dmhy config
的功能可以調整一些預設設定,像是dmhy download XXX --client
的預設值。
我建議是可以用dmhy config [key] [value]
(setter) 和dmhy config [key]
(getter) 的格式不一定只能用(使用dmhy
來刷新列表,或是dmhy
指令可以只刷新不下載dmhy update
)有(已新增)dmhy search 搖曳露營
這樣的指令能用,可以檢查這個 keyword 適不適合把(已新增)fakedb.json
移到其他位置去,不然每次更新資料都會消失
- 有
dmhy config
的功能可以調整一些預設設定,像是dmhy download XXX --client
的預設值。我建議是可以用dmhy config [key] [value](setter)
和dmhy config [key](getter)
的格式
這感覺不錯,就放到 Database.prototype.config
裡面好了,也讓 Database.prototype.save()
存起來
- 不一定只能用
dmhy
來刷新列表,或是dmhy
指令可以只刷新不下載
多一個 dmhy update
或 dmhy refresh
感覺可以,原本的留著應該還好
- 有
dmhy search 搖曳露營
這樣的指令能用,可以檢查這個 keyword 適不適合
不太清楚這個是什麼意思,是指爬完比較字串相似度?
不太清楚這個是什麼意思,是指爬完比較字串相似度?
不是,就是直接把在動漫花園網站上的搜尋結果的 title 直接在 console 輸出出來
像是我想訂閱搖曳露營就先用搜尋搖曳露營
看了一下搜尋結果發現很雜,然後再搜尋搖曳露營,DHR
就像這樣多做幾次就能找出適合的關鍵字來add
像是我想訂閱搖曳露營就先用搜尋搖曳露營
看了一下搜尋結果發現很雜,然後再搜尋搖曳露營,DHR
就像這樣多做幾次就能找出適合的關鍵字來add
也就是原本在網頁做的事情拿來 cli 做的意思,好像可以
剛看了一下 code ,感覺稍微把 crawler.js
裡的 parseThreads
拆分開來就差不多了
如果需要的話我明天應該能發一個關於這個的 PR
好阿,感謝 😀
- 把
fakedb.json
移到其他位置去,不然每次更新資料都會消失
位置就放到 ~/.dmhy-subscribe/fakedb.json
應該就可以了
腳本部份你有想法嘛
我想到的問題是第一次安裝跟升級(有沒有dmhy ls -s
可以用的差別),根據 npm-scripts,好像都是用 (pre|post)install
來做,腳本放在 scripts/*.js
下
$ ls ~/.dmhy-subscribe
fakedb.json
config.json #給dmhy config用(有的話)
old_package.json #第一次先檢查有沒有,沒有就把檔案複製到這邊
然後在postinstall
執行一個 script,像是檢查之前的版本之類的
postinstall.js
const os = require('os')
const fs = require('fs')
const semver = require('semver')
const { version } = require('../package.json')
const { Database } = require('../fakedb')
const projectDataDir = `${os.homedir()}/.dmhy-subscribe`
const fakedbFile = `${projectDataDir}/fakedb.json`
const versionFile = `${projectDataDir}/.version`
if (!fs.existsSync(projectDataDir)) {
fs.mkdirSync(projectDataDir)
}
if (!fs.existsSync(versionFile)) {
fs.writeFileSync(versionFile, version)
}
const upgradeDatabaseFunctions = []
const oldVersion = fs.readFileSync(versionFile, { encoding: 'utf-8' })
if (semver.lt(oldVersion, version)) {
if (fs.existsSync(fakedbFile)) {
const dbObject = JSON.parse(fs.readFileSync(fakedbFile, { encoding: 'utf-8' }))
const upgraded = upgradeDatabaseFunctions.reduce((prev, cur) => {
return cur(prev)
}, dbObject)
fs.writeFileSync(fakedbFile, upgraded)
} else {
(new Database({ dbfile: fakedbFile })).save()
}
}
大概長這樣
之後要增加就往 upgradeDatabaseFunctions
塞就好了
config
等寫好再一起 commit
upgradeDatabaseFunctions
感覺不太好,像是 0.1
->1.0
0.7.3
->2.5.1
,不童的版本要更改的地方都不一樣
而且更新不一定代表 db 格式有改變,可能還要有個 db schema validator,來檢查目前的 db 檔案是否 ok
所以我才用 reduce 來滾動更新
如果有兩個 function 在裡面
那麼一定是第一個 function 先執行並回傳第二個 function 可以理解的格式再處理
這樣可以保證不管任何一個版本都可以更新到最新 (當然 install 速度會被檢查拉下來)
而且 function 內一樣用 semver
來檢查,就可以知道該 function 主要更新的對象是第幾版到第幾版
v0.4.7 Fix 第4點
不過不是每個版本都能轉換吧,像是目前的 episode 是數字,未來可能是一個 class,這種無法轉換吧
目前的 episode 是數字,未來可能是一個 class
因為這個最後還是要 JSON.stringify
到 fakedb.json
去,
那麼就是單純轉換 object 的事
也就是說即使一個版本之內從數字轉換到有 20 個 attribute 的 class
寫到 fakedb.json
去在讀回來轉換也就只是去改 class Episode
的 constructor
而已
這還真的是我搞錯,我忘記 thread.title
有存下來,到時候如果 parser 更新之後就再重新 parse 就好...
然後有辦法能排除特定關鍵字嗎?看起來這沒辦法在搜尋的時候做,但是可以在 client 端弄
範例,像是看看能不能把 合集版本 給去掉:
dmhy search "蒼之彼方,繁體,DHR"
【DHR動研字幕組&茉語星夢】[蒼之彼方的四重奏_Ao no Kanata no Four Rhythm][01-12全][繁體][720P][MP4](合集版本)
【DHR動研字幕組&茉語星夢】[蒼之彼方的四重奏_Ao no Kanata no Four Rhythm][12完][繁體][720P][MP4]
【DHR動研字幕組&茉語星夢】[蒼之彼方的四重奏_Ao no Kanata no Four Rhythm][11][繁體][720P][MP4]
【DHR動研字幕組&茉語星夢】[蒼之彼方的四重奏_Ao no Kanata no Four Rhythm][10][繁體][720P][MP4]
【DHR動研字幕組&茉語星夢】[蒼之彼方的四重奏_Ao no Kanata no Four Rhythm][09][繁體][720P][MP4]
【DHR動研字幕組&茉語星夢】[蒼之彼方的四重奏_Ao no Kanata no Four Rhythm][08][繁體][720P][MP4]
【DHR動研字幕組&茉語星夢】[蒼之彼方的四重奏_Ao no Kanata no Four Rhythm][07][繁體][720P][MP4]
【DHR動研字幕組&茉語星夢】[蒼之彼方的四重奏_Ao no Kanata no Four Rhythm][06][繁體][720P][MP4]
【DHR動研字幕組&茉語星夢】[蒼之彼方的四重奏_Ao no Kanata no Four Rhythm][04-05][繁體][720P][MP4]
【DHR動研字幕組&茉語星夢】[蒼之彼方的四重奏_Ao no Kanata no Four Rhythm][03][繁體][720P][MP4]
【DHR動研字幕組&茉語星夢】[蒼之彼方的四重奏_Ao no Kanata no Four Rhythm][02][繁體][720P][MP4]
【DHR動研字幕組&茉語星夢】[蒼之彼方的四重奏_Ao no Kanata no Four Rhythm][01][繁體][720P][MP4]
找到 12 個結果
去關鍵字是有想過,但還不急著實作
你上面那個情況基本上不太會發生
因為我預設就是拿來 "追番" 用的,很少情況會追完了還留在清單裡 (我能想到的情況是 12完 等 SP12)
小bug,執行dmhy rm --all
時會有 error
Line 83 in ba96232
這行應該是
sids = [...db.subscriptions].map(s => s.sid)
才對馬上來改
@maple3142 看到一個很棒的東西來做 config
/init
https://github.com/terkelg/prompts
不過我沒用過不知道會不會踩到什麼雷
我是比較傾向 config 有個預設值,然後要改自己改
不然就是在第一次執行指令時發現沒有 config 時再 init