終點已死,大多數 galgame 資源站都關站避風頭。要一個足夠強大的資源站。這是一些想法,希望對有運營資源站想法的人能夠起到幫助。
對政治不抱有幻想#
有句話說,政治這個東西,如果你不找上它,那它就會找上你。
對終點論壇站長被捕表示哀悼的同時,可曾有進一步的深思?所謂愚蠢的現世報就是如此。既然選擇作別人案板上的肉,那被切碎吃掉的時候,就不要抱怨命運不公。可曾想,你流出的淚水,都是曾經進到腦子裡的水。
終點站長對政治沒有清醒的認識,盲目相信中國會對他在國內開設論壇的行為忽略不管,並且存在侥幸心理。甚至,他們助紂為虐,在論壇中開啟言論審查,甚至支持實名制。其後果就是,他們所支持的實名制和他們所支持的國產品牌把他們送進了監獄。
一個人公開的行為應該與他的政治立場一致,如若不然,則腹背受敵。既然要做 Galgame 資源站,就應該清楚地認識到,這種行為在中國是違法的,是隨時可能受到制裁的。所以,對抗中國審查與監管是不可避免的。
中國正在努力追趕遙遙領先的朝鮮,這是顯而易見的事實。我們甚至無法確定,是否有一天,會因為審查與專制而再也無法在中國國內玩到 Galgame。
前端與後端的選擇#
SSR 架構實際上是一個不錯的選擇。在套上 Cloudflare 之後,靜態頁面可以被有效緩存,因此可以獲得與 CS 架構相當的並發忍受能力。但 SSR 的主要優點還是增加爬蟲編寫難度。
後端存儲顯然應該用 Onedrive 這種可以方便白嫖的存儲,不然 1 天 1T 流量,VPS/VDS 會帶寬不夠且流量不夠,對象存儲費用驚人。容量倒不是大問題。不過,就算是 Ondrive,也需要多個賬號負載均衡,不然會超出 API 調用限制。Onedrive 的一個優點就是國內至少是可以連通的,雖然速度可能不高。
Onedrive 的 Token 應該被緩存,否則並發較高時,會因為同時異步調用微軟 API 太多而內存溢出。緩存策略為盡量保證用戶可以在一個 Token 過期前下載完成。
緩存可以通過 Redis 等數據庫實現,定時任務是比較容易的。
大量資源的組織#
組織大量資源是很費力的。參考 BT 站和 E-hentai,使用規範的資源命名方式可以有效整理資源和提升檢索能力。
一個建議的資源命名方式為
(系列名)[會社名 1][會社名 2][會社名 n] 元の日本名(中文名 1)(中文名 2)(中文名 4)[平台名]{漢化組等信息}
其中,系列名、中文名和漢化組信息可以沒有。
這個命名方式可以用正則表達式識別,因此在不使用數據庫存 tag 的情況下,如果需要也可以直接根據名稱分析。參考代碼如下
import re
# 示例字符串
example = "(系列名)[會社名 1][會社名 2][會社名 n] 元の日本名(中文名 1)(中文名 2)(中文名 4)[平台名]{漢化組等信息}"
# 正則表達式
pattern = r'\((.*?)\)?(\[(.*?)\])+(.*?)\((.*?)\)(\[(.*?)\])?\{(.*?)\}?'
# 解析字符串
match = re.match(pattern, example)
if match:
# 提取數據
series = match.group(1)
publishers = match.group(3).split('][')
jp_name = match.group(4).strip()
cn_names = match.group(5).split(')(')
platform = match.group(7)
comment = match.group(8)
# 創建對象
result = {
"series": series if series else None,
"publisher": publishers,
"jpName": jp_name,
"cnName": cn_names,
"platform": platform if platform else None,
"comment": comment if comment else None
}
else:
result = None
print(result)
當資源足夠龐大時,為了方便檢索,以及跑各種各樣的算法,可以爬取 vndb,將 galgame 資訊存儲於本地。這種做法可以實現類似 E-hentai 的發達的標籤檢索能力,以及基於圖結構的推薦算法與熱度算法。
資源存儲#
顯然需要在多個 Onedrive 中存儲完全相同的內容,除此以外,還需要在某個可靠雲盤(例如 MEGA)中或者本地異地存儲。
一個人把數據放在本地是不安全的,這是因為可能會發生各種意外事故而丟失全部數據。為此,需要讓相隔很遠的多個人都存相同的數據,實現異地容災。
本地存儲的介質是一個問題,硬盤價格比較昂貴,存儲所有 Galgame 所需要的硬盤大約為 12TB,這麼大容量的硬盤是比較昂貴的,大概需要 1 千多人民幣。如果有條件,也可使用廉價的磁帶作為存儲介質。但不能使用二手硬盤,儘管二手硬盤便宜,但不知道什麼時候就數據丟失了。
存儲在網盤的開銷是不小的。如果只存儲在 Onedrive,有可能會因為訂閱失效和封號而丟失全部資源。
成本#
採用 Onedrive 方案按理來說沒多少成本,但用的人多了難免會出各種維護成本和服務器成本。—— 但,用的人多了,就代表回收成本的機會多了。
一個及格的 Galgame 資源站不應該設置下載門檻,更不應該收費下載。合理的抵消成本的方式是接受捐助和廣告。
接受捐助有一定風險,因為可能需要用到國內的支付方式。而廣告,只要用的人多了,就會有人求著去做廣告的。
不過,在分發廣告時,應該注意,不能影響用戶體驗。
先到這裡,後面可能會添加