Sabersort
這是做什麼用的?
Sabersort會將你的圖片,逐個透過二次元画像詳細検索進行以圖片搜尋,並找到相似的圖片,藉此尋找該圖片的原創作者。Sabersort會自動將圖片的來源(通常是來自Twitter或Pixiv)儲存至指定的資料夾,並按照圖片或推文的ID、作者的ID或作者暱稱等資訊命名。資料庫功能會避免儲存到同樣的圖片,換而言之,Sabersort也能排除相同的圖片。
使用前要準備什麼?
先安裝Python,用Windows的話記得安裝時要選PATH的選項。
- Python 3.10 或以上的版本
以下是需要的程式庫,除了Google Chrome之外,你可以直接使用這個指令來安裝它們
pip install -r requirements.txt
- Google Chrome
- aiofiles==23.1.0
- aiohttp==3.8.3
- asyncio_atexit==1.0.1
- beautifulsoup4==4.12.2
- ImageHash==4.3.1
- packaging==21.3
- PicImageSearch==3.9.2
- Pillow==9.5.0
- rtoml==0.9.0
- selenium==4.10.0
- webdriver_manager==3.8.4
以上都準備好時,將config.toml.template
重新命名成config.toml
後打開,你會看到:
[sabersort]
input = ''
found = ''
not_found = ''
exception = ''
filename = '{origin}-{author_id}-{id}'
threshold = 10
user_agent = ''
[saberdb]
database_path = ''
[hasher]
hash_algorithm = 'Perceptual'
hash_size = 16
[ascii2d]
perfered_origin = 'Pixiv'
sort_order = 'No'
first = 0
[pixiv]
PHPSESSID = ''
[twitter]
auth_token = ''
headless = true
以下是各欄位的說明,輸入資料的時候別忘了原本有就兩個單引號('
)的欄位,要把資料輸入在兩個單引號中間。
[sabersort]
input
:填放著需要搜尋的圖片所在的資料夾,資料夾裡面建議只放圖片。found
:填要放下載下來的圖片的資料夾。not_found
:填要找不到的圖片的資料夾,會把檔案複製過去。exception
:填要找到了但有問題的圖片的資料夾,會把檔案複製過去,並按照已知的資訊命名;這種狀況通常發生在有找到但原作者刪文。filename
是檔名,你有以下標籤可以使用:{origin}
:從哪裡下載的{author}
:作者的名字,因為有些作者可能會用一些奇奇怪怪的字元當名字,你的系統不一定會支援,斟酌使用。{author_id}
作者的id,要儲存作者資訊建議用這個。{title}
圖片標題,推特的是日期,pixiv的話可能會出現包含奇奇怪怪的字元的標題,斟酌使用。{id}
:圖片的id,推特的話是貼文的id。{index}
:同一個圖片id裡面可能會有超過1張圖片,這是用來識別是第幾張圖片的。
threshold
:圖片相似度的容許度,基本上沒必要修改,改高一點的話可能會找到一些差分。user_agent
:直接去這個網站把文字輸入框裡面的字複製貼上到這裡就可以了。
[saberdb]
database_path
:資料庫路徑,什麼都不輸入的話預設會是同資料夾底下的saberdb.db
,基本上不用改。
[hasher]
hash_algorithm
:用來判斷圖片是否相似的演算法,具體差異參考這裡,你有以下選擇:Average
Perceptual
PerceptualSimple
Difference
Wavelet
HSV
hash_size
:可以看成是計算的精確度,越大越精確,基本上維持16已經足夠。
[ascii2d]
prefered_origin
:優先選擇哪個來源,建議Pixiv
,推特有畫質上限,你有以下選擇:Pixiv
Twitter
sort_order
:如何排序搜尋結果,No
代表不排,基本上是不用排,ImageSize
代表用圖片長寬大小來排,FileSize
代表用檔案大小來排。No
ImageSize
FileSize
first
:只取搜尋前幾個結果,0代表不限制,要設定的話建議在3
到6
,太高沒意義,太低會找不出來。
[pixiv]
PHPSESSID
:把Pixiv的cookies複製到這裡,不知道怎麼找可以看這裡,進入Pixiv網站後,它會在pixiv.net
底下。
[twitter]
auth_token
:一樣是cookies,只是要進去Twitter網站,它會在twitter.com
底下。headless
:是否在調用推特時啟用headless模式,預設是true
,如果改成false
的話下載推特圖片的時候會有Chrome視窗跑出來。
怎麼用?
上面的設定填好存檔後,直接在終端機輸入:
python sabersort.py
專案進度
- 重寫整個Sabersort(對的這是新版)
- log紀錄檔
- 圖形化使用者介面
- 其他以圖搜圖網站的支援(例如iqdb)