Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0.6.x 重構 #17

Closed
20 of 25 tasks
FlandreDaisuki opened this issue Mar 31, 2018 · 20 comments
Closed
20 of 25 tasks

0.6.x 重構 #17

FlandreDaisuki opened this issue Mar 31, 2018 · 20 comments
Labels
discussion enhancement New feature or request help wanted Extra attention is needed

Comments

@FlandreDaisuki
Copy link
Owner

FlandreDaisuki commented Mar 31, 2018

CLI

add

  • 訂閱用字串 / Subscribable String
  • 訂閱設定檔 (ini yaml JSON)
    # 以 yaml 列出基本項
    
    # 顯示用標題,同時會被加入 search
    # 必須有值
    title: 搖曳露營
    
    # 符合關鍵字的 Thread 才會被加入 search
    # 字串陣列
    keywords:
      - 喵萌
      - 繁體
    
    # 符合黑名單關鍵字的 Thread 在 search 後會直接被捨棄
    # 字串陣列
    unkeywords:
      - 合集
    
    # 使用 JS RegExp 寫法,`\`不用寫成`\\`,以第一個 group 來 parse
    episodeParser: /第\s*(\d+(?:-\d+)?)\s*[話话]/
  • 設定檔作為 Subscription 的 initial 項,再從 ~/.dmhy-subscribe/db.json 拉已存的 threads

使用例

$ dmhy add "搖曳露營,萌喵,繁體"
$ dmhy add "./camp.yml"
$ dmhy add "./yorimoi.yml" "搖曳露營,萌喵,繁體"
$ dmhy add --interactive

remove | rm

  • 沒意外的話不變

使用例

$ dmhy rm SID [SID ...]
$ dmhy rm --all

list | ls

  • 隨便,想印什麼再加就好

使用例

$ dmhy ls # 全域資訊
$ dmhy ls SID [SID ...] # 訂閱資訊
$ dmhy ls -ss # 全部可訂閱字串
$ dmhy ls -sy # 全部訂閱設定檔

download | dl

  • 下載用的字串(THID)目前堪用,保留?
    • 若為兩季以上的番,有些字幕組會先放出前半合集,這時下載單集會總是下載到該合集
      用 unkeywords 解決
$ dmhy dl THID [THID ...]

search | find

update

- [ ] 保留?

  • 使用 dmhy --no-dl 取代

config | cfg

  • downloader
  • destination
  • aria2-jsonrpc
  • webhook-url
    - [ ] 推播選項(Scheduling 應該很實用) 之後開成 enhancement issue

其他

  • 爬 npm 有更新顯示更新訊息
    • 爬很慢而且爬玩才會開始主程式,目前寫死執行 15 次爬一次
  • 測試 Orz
  • yargs/yargs 改寫
  • 破壞性更新直接放生(?)
    • 不然現在的 rolling update 很難寫w
  • 命名統一
    • downloader client

d208665 之後

maple3142 建議&回報

  • rm --all 問題 (need more info)
  • regex 錯誤會造成 crash (bug)
  • add 整合 search (enhancement)
  • add no argument message (enhancement)
  • downloader 錯誤直接 throw (enhancement)
  • 不存在的指令顯示 help (enhancement)
  • 修改已存在訂閱 (enhancement)
@FlandreDaisuki FlandreDaisuki added enhancement New feature or request help wanted Extra attention is needed discussion labels Mar 31, 2018
@maple3142
Copy link
Contributor

cli 我推薦用 yargs,蠻強大的

設定檔我覺得 yaml 可能更好,比 json 更適合人類讀

title: 搖曳露營
keywords:
  - DHR
  - 繁體
  - 720
  - Yuru
episodeParser: 

@FlandreDaisuki
Copy link
Owner Author

剛剛看了一下 yargs 居然自帶 locales 了
我就是覺得 tj/commander.js 一半中文一半英文很刺眼才想換掉的w


我也覺得 yaml 不錯,只是之前沒玩過不知道會不會遇到什麼雷 (奇怪的字元之類的,\r?\n之類的)

@maple3142
Copy link
Contributor

maple3142 commented Apr 7, 2018

目前發現的幾個問題和建議:

  1. rm --all 顯示的訊息怪怪的
    rm message error

  2. add -i 的自訂義介面可以考慮整合 search 指令,在輸入完標題、關鍵字、黑名單關鍵字之後會先搜尋,然後顯示列表與詢問是否要修改

  3. 下面這個 yaml 會直接讓程式掛掉,看了一下應該是

    const _title = this.title.match(episodeParser)[1];
    的問題
    可能加個 try-catch 然後說是使用者的 regex 有問題之類的,然後 print 出有問題的那個標題

# 以 yaml 列出基本項

# 顯示用標題,同時會被加入 search
# 必須有值
title: 搖曳露營

# 符合關鍵字的 Thread 才會被加入 search
# 字串陣列
keywords:
  - 喵萌
  - 繁體

# 符合黑名單關鍵字的 Thread 在 search 後會直接被捨棄
# 字串陣列
unkeywords:
  - 合集

# 使用 JS RegExp 寫法,`\`不用寫成`\\`,以第一個 group 來 parse
episodeParser: /第\s*(\d+(?:-\d+)?)\s*[話话]/

# 使用 JS RegExp 寫法
# 若 episodeParser 被定義,忽略此項
# 但這邊是過濾切開後的 tokens,一般使用者不會看到 tokens 被如何切開...
userBlacklistPatterns:
  - /\d+月\d+日/
  - /\d+\s*月新番/
  1. add default msg
    這邊我覺得應該預設顯示 CMD_ADD_USAGE 的訊息更好

  2. config downloader xxx 的時候遇到不支援為什麼不直接 error? 這應該沒有 destination 的問題吧

  3. config 在發現多餘的值的時候(像是 client,webhook) 應該可以把它刪除吧,或是在 postinstall 完成

  4. 在出現不存在的指令時顯示 help ? 例如: dmhy test

  5. 可以直接修改已經存在的訂閱,例如測試 regex

@FlandreDaisuki
Copy link
Owner Author

@maple3142 rm --all 我的沒有問題耶
_001

@FlandreDaisuki
Copy link
Owner Author

FlandreDaisuki commented Apr 7, 2018

畢竟還是可以使用預設解析,所以建構子不印東西,而是在別的地方 fallback
terminal_001

@maple3142
Copy link
Contributor

第一個又測試了一次又好了,不曉得為什麼
image

@FlandreDaisuki
Copy link
Owner Author

config 在發現多餘的值的時候(像是 client,webhook) 應該可以把它刪除吧,或是在 postinstall 完成

這個之後讓 postinstall 來作吧,目前 Config#set 就會檢查了,你大概是 call 到 0.5.x 的版本去直接修改 config.json 才會這樣 (我剛剛也遇到了www)

@FlandreDaisuki
Copy link
Owner Author

主程式結束子程式才印出東西,這要怎麼解ㄋ 🤔
terminal_001

@maple3142
Copy link
Contributor

可能需要讓 downloader。直接變成函數來 require

@FlandreDaisuki
Copy link
Owner Author

FlandreDaisuki commented Apr 7, 2018

@maple3142
你要幫忙改嘛? d0c0ae1
如果可以,寫好就 push 到 0.6.x 這個 branch 來

我剛剛才發現主函式 ((0.6.x) $ bin/dmhy) 邏輯也差不多
但不會發生這件事,主函式單純的太慢?

@maple3142
Copy link
Contributor

#18

@FlandreDaisuki
Copy link
Owner Author

@maple3142
上面未完成的 enhancement 我想之後開成 issue 慢慢做
目前(280fdf0)幫我看看有什麼比較嚴重的 error / bugs

@maple3142
Copy link
Contributor

明天應該可以弄,還有我覺得可以在 NODE_ENV==='development' 的時候使用另一個 .dmhy-subscribe 資料夾比較好

@maple3142
Copy link
Contributor

image
image

剛又發現了一些奇怪的錯誤,0.5.10 版的在搜尋 魔法少女 時出現了一堆錯誤,然後之後每個指令都會出現一次錯誤訊息 (包括 dmhy -V 都有)

然後去 0.6.x 搜尋了一次,直接有錯誤

.map((t) => Thread.parseEpisodeFromTitle(t).data)

Thread.parseEpisodeFromTitle(t)undefined

@FlandreDaisuki
Copy link
Owner Author

FlandreDaisuki commented Apr 8, 2018

哇靠www 不要亂用+啊字幕組wwww
我原本的想法是 03+SP3 這種才會有+
所以是 parse 03+SP3


魔法少女有一堆錯蠻正常的,只要沒辦法被 parse 出 episode 就會噴
我們這個 parser 又這麼 rule-based www

@FlandreDaisuki
Copy link
Owner Author

@maple3142 cb422dc 修正了

@FlandreDaisuki
Copy link
Owner Author

FlandreDaisuki commented Apr 8, 2018

剛剛又推了一個讓 Error 看起來比較合理的版本了
find 只會 warning 但堅持要 add 之後會噴很醜的 error message

也不會因為遞迴呼叫看不到到底錯在哪了ww


$ dmhy find "魔法少女"
(略)
⚠ 這行只有在無法判斷集數時會印出。
請將下面印出的資訊貼上到 https://github.com/FlandreDaisuki/dmhy-subscribe/issues 回報

⚠ title: "魔法少女伊莉雅剧场版(雪下的誓言/Oath Under Snow)高质量BDRIP(1920x1080 x265 10bit) 外挂简体"
⚠ 這行只有在無法判斷集數時會印出。
請將下面印出的資訊貼上到 https://github.com/FlandreDaisuki/dmhy-subscribe/issues 回報

⚠ title: "[雪飄工作室][剧场版 Fate/kaleid liner 魔法少女☆伊莉雅 雪下的誓言 / 劇場版 Fate/kaleid liner プリズマ☆イリヤ 雪下の誓い][1080p][BDRIP][简繁外掛]"
⚠ 這行只有在無法判斷集數時會印出。
請將下面印出的資訊貼上到 https://github.com/FlandreDaisuki/dmhy-subscribe/issues 回報

⚠ title: "魔法少女伊莉雅:雪下的誓言.Fate.kaleid liner.2017.HD720P.X264.AAC.Japanese.CHS"
⚠ 這行只有在無法判斷集數時會印出。
請將下面印出的資訊貼上到 https://github.com/FlandreDaisuki/dmhy-subscribe/issues 回報

⚠ title: "[SFEO-Raws]魔法少女育成计划 Mahou Shoujo Ikusei Keikaku (BD 1080P x264 FLAC)"
⚠ 這行只有在無法判斷集數時會印出。
請將下面印出的資訊貼上到 https://github.com/FlandreDaisuki/dmhy-subscribe/issues 回報

⚠ title: "【千夏字幕組&ANK-Raws】【魔法少女什麼的已經夠了啦。_Mahou Shoujo Nante Mou Ii Desu kara.​】[BDRIP_1080P][x265-Ma10P_FLAC][繁體外掛]"

都是看起來可以用 ~關鍵字~ 來濾掉的小東西

@maple3142
Copy link
Contributor

感覺可以考慮直接把 剧场版劇場版 當作預設的黑名單吧

@FlandreDaisuki
Copy link
Owner Author

FlandreDaisuki commented Apr 8, 2018

剛剛去瞄了一下,感覺可以 XD

不過還是交給使用者決定好了
畢竟他不是會造成錯誤的 token (blacklistPatterns),而是比較像黑名單關鍵字的角色
既然都開給使用者了就給使用者決定好了
可能在 README 或 help 或開個 examples.md 多寫一點吧w

@FlandreDaisuki
Copy link
Owner Author

#19 #20
Add 前先 find 會比較好 (gif 也是這樣教的) 所以先不開 issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants