Repository navigation
Releases
Releases ยท x220volt/RmtDownloader
Remote Downloader v0.1.58
๐ฉน HTML ์ฒจ๋ถํ์ผ ๋ค์ด๋ก๋ ํ์ฉ ๋ฐ Kone.gg ์ง์ ๋งํฌ ํด์ ์์ ํ
- ๋ช
์์
.html/.htm์ฒจ๋ถํ์ผ ๋ค์ด๋ก๋ ์ง์ (downloader/engine.py):- GigaFile, Google Drive ๋ฑ ๋์ ๋ค์ด๋ก๋ ์๋ํฌ์ธํธ(
/download.php๋ฑ)์์Content-Disposition: attachmentํ์ผ๋ช ๋๋ ๋ฆฌ์กธ๋ฒ๊ฐ ํ์ ํ.html/.htmํ์ผ์ด<!doctype html>๋ก ์์ํ ๋ ์นํ์ด์ง/Cloudflare ์ค๋ฅ๋ก ์คํ ์ฐจ๋จํ๋ ๋ฌธ์ ์์ . - Cloudflare ์ฑ๋ฆฐ์ง ํ์ด์ง ๋ฐ
attachment์๋text/html์ค๋ฅ ํ์ด์ง๋ ๊ธฐ์กด๊ณผ ๋์ผํ๊ฒ ์์ ์ฐจ๋จ ์ ์ง.
- GigaFile, Google Drive ๋ฑ ๋์ ๋ค์ด๋ก๋ ์๋ํฌ์ธํธ(
- Kone.gg ์ง์ ๋งํฌ ํด์ ํด๋ฐฑ ๊ฐํ (
downloader/resolvers/webpage.py):- Googlebot ์์ฒญ ์ ๋น SPA ์
ธ ๋๋ 429/403 ์๋ต์ด ๋ฐํ๋๋ฉด ์ผ๋ฐ Chrome User-Agent ์ฌ์๋ ๋ฐ
#post-article๋๊ธฐ ์คํ ์ค ๋ธ๋ผ์ฐ์ ํด๋ฐฑ์ผ๋ก ์๋ ์ ํ.
- Googlebot ์์ฒญ ์ ๋น SPA ์
ธ ๋๋ 429/403 ์๋ต์ด ๋ฐํ๋๋ฉด ์ผ๋ฐ Chrome User-Agent ์ฌ์๋ ๋ฐ
- ๋ค์ค ๋งํฌ(
extra_jobs) ์ถ์ฒ ๋ฉํ๋ฐ์ดํฐ ์ ์ง (downloader/manager.py):- ์นํ์ด์ง ๋ฆฌ์กธ๋ฒ๋ก ๊ฒ์๊ธ ๋ด ์ฌ๋ฌ ํ์ผ์ ๋ฑ๋กํ ๋ ์๊ธ ์ ๋ชฉ(
source_title) ๋ฐ ์ถ์ฒ URL(source_url)์ด ๋ชจ๋ ํ์ ์์ ์ ํจ๊ป ์ ํ๋๋๋ก ๊ฐ์ .
- ์นํ์ด์ง ๋ฆฌ์กธ๋ฒ๋ก ๊ฒ์๊ธ ๋ด ์ฌ๋ฌ ํ์ผ์ ๋ฑ๋กํ ๋ ์๊ธ ์ ๋ชฉ(
Remote Downloader v0.1.57
๐ก๏ธ GoFile ๋ฌด์ค์ ์์ ์๋ ์ฐํ (Auto-Proxy Fallback) ๋ฐ ํ ํฐ ์๊ตฌ ์ ์ฅ ์์ ํ
- ๋ฌด์ค์ ์ค์๊ฐ ์๋ ํ๋ก์ ์ฐํ (
downloader/resolvers/gofile.py):- ๊ณต์ธ IP ์ฐจ๋จ(TCP SYN Timeout) ๋๋ ์์ฒญ ์๋ ํ๋ ์ด๊ณผ(
HTTP 429 error-rateLimit) ๋ฐ์ ์, 1~2์ด ๋ด์ ๊ธ๋ก๋ฒ ๋ฌด๋ฃ ์๋ฆฌํธ ํ๋ก์๋ฅผ ์ค์๊ฐ ๋ณ๋ ฌ ํ์ํ์ฌ ๋ฌด์ธ ์๋ ์ฐํ. - API ๋ฉํ๋ฐ์ดํฐ ๋ถ์๋ง ๊ฒฝ๋ ํ๋ก์๋ก ์ฐํํ๊ณ , ์ค์ ๋์ฉ๋ ํ์ผ ๋ค์ด๋ก๋๋ GoFile ๊ณ ์ CDN ์คํ ๋ฆฌ์ง ์๋ฒ๋ฅผ ํตํด ํ์ ์ต๊ณ ์๋๋ก ์ง์ ๋ค์ด๋ก๋.
- ๊ณต์ธ IP ์ฐจ๋จ(TCP SYN Timeout) ๋๋ ์์ฒญ ์๋ ํ๋ ์ด๊ณผ(
- ๊ฒ์คํธ ํ ํฐ ๋์คํฌ ์๊ตฌ ์ ์ฅ (
gofile_session.json):- ๊ฒ์คํธ ๊ณ์ ํ ํฐ์ ๋์คํฌ์ 24์๊ฐ ๋์ ๋ณด์กดํ์ฌ ์ฌ์์์ด๋ ๋์ ์์ฒญ ์ API ๊ณผํธ์ถ๋ก ์ธํ 429 Rate Limit ์์ฒ ๋ฐฉ์ง.
- ํ ํฐ ๋ง๋ฃ ๊ฐ์ง ๋ฐ ์
ํ ํ๋ง (Self-Healing Auto-Retry):
- ์ฅ์๊ฐ ๊ฐ๋ ์ค
error-wrongToken,error-token,error-accountId๋๋ 401 ๋ฐํ ์ ๋ง๋ฃ๋ ํ ํฐ์ ์๋ ํ๊ธฐํ๊ณ ์ฆ์ ์ ํ ํฐ์ผ๋ก ์ฌ๋ฐ๊ธ๋ฐ์ ์๋ ์ฌ์๋.
- ์ฅ์๊ฐ ๊ฐ๋ ์ค
- ์น ํ ํฐ Secret ๋ถ์ผ์น/ํ์์์ ์๋ ๋ณต๊ตฌ:
error-notPremium๋ฐ์ ์ Secret ๊ฐ์ ๊ฐฑ์ ํ ์ฌ์๋ํ๋ฉฐ, ๋ฉ์ธ ์นํ์ด์ง ์ฐ๊ฒฐ ์ง์ฐ ์ ์์ ํ ๋ฐฑ์ Secret(DEFAULT_WT_SECRET)์ผ๋ก ์๋ ํด๋ฐฑ.
- ์ค์ ํ๋ก์(
gofile_proxy) ์ค์ฐ๋ ๋ฐ 429 ์นํ์ ์๋ด:- ์๋ ์ค์ ๋ ํ๋ก์ ์ต์
์ค์ฐ๋ ๋ฐ ์์
์คํจ ์ํ์ ์ค์๊ฐ
jobs.json๋๊ธฐํ ๋ณด์ฅ.
- ์๋ ์ค์ ๋ ํ๋ก์ ์ต์
์ค์ฐ๋ ๋ฐ ์์
์คํจ ์ํ์ ์ค์๊ฐ
Remote Downloader v0.1.56
๐ Remote Downloader v0.1.56
๐ฑ ๋ชจ๋ฐ์ผ ๋ฐ์ํ UI ์ ๋ฉด ๊ฐ์ & ์ถ์ฒ ์ ์ฒด ์ ๋ชฉ ์๋ ๋ง์ถค
- ๋ค์ด๋ก๋ ์นด๋ ์ถ์ฒ(๊ฒ์๊ธ/ํ์ด์ง ์ ๋ชฉ) ์ ์ฉ ํ ์ ์ค:
- ๊ธฐ์กด ์๋จ ํ๊ทธ ์นฉ๋ค๊ณผ ํ ์ค์ ๋ชฐ๋ ค์์ด ์ข์ ํญ(160px) ๋๋ฌธ์ ๊ธด ์ ๋ชฉ์ด
...๋ก ์๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ์ ๋ฉด ๊ฐ์ ํ์ต๋๋ค. - ์ถ์ฒ ์ ๋ณด(
source_title)๋ฅผ ์นด๋ ๊ฐ๋กํญ ์ ์ฒด(100%)๋ฅผ ํ์ฉํ๋ ์ ์ฉ ํ์ผ๋ก ๋ฐฐ์นํ์ฌ, ๋ชจ๋ฐ์ผ๊ณผ PC ํ๋ฉด ํญ์ ๋ง์ถฐ ๋ง์ค์ ์์ด ์ ์ฒด ์ ๋ชฉ์ด ์จ์ ํ ํ์๋ฉ๋๋ค. - ์ถ์ฒ ํ
์คํธ ํฐ์น ์ ์๋ณธ ๊ฒ์๊ธ ์นํ์ด์ง๋ก ๋ฐ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค (
โ).
- ๊ธฐ์กด ์๋จ ํ๊ทธ ์นฉ๋ค๊ณผ ํ ์ค์ ๋ชฐ๋ ค์์ด ์ข์ ํญ(160px) ๋๋ฌธ์ ๊ธด ์ ๋ชฉ์ด
- ์ค์ ๋ชจ๋ฌ ํญ ๋ชจ๋ฐ์ผ ๊ฐ๋ก ์ค์์ดํ(๋ค์ดํฐ๋ธ ์ฑ ๋ฐฉ์) ์ ์ฉ:
- 7๊ฐ ์ค์ ํญ ๋ฒํผ์ด ๋ชจ๋ฐ์ผ์์ ์ฌ๋ฌ ์ค(4~5์ค)๋ก ๋์กํ๊ฒ ์ค๋ฐ๊ฟ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ , ๋ชจ๋ฐ์ผ ์ฑ์ฒ๋ผ ํ ์ค๋ก ๋ถ๋๋ฝ๊ฒ ์ข์ฐ ์ค์์ดํ ๊ฐ๋ฅํ ๊ฐ๋ก ์คํฌ๋กค ํญ ๋ฐ(
overflow-x: auto)๋ก ๊ฐํธํ์ต๋๋ค.
- 7๊ฐ ์ค์ ํญ ๋ฒํผ์ด ๋ชจ๋ฐ์ผ์์ ์ฌ๋ฌ ์ค(4~5์ค)๋ก ๋์กํ๊ฒ ์ค๋ฐ๊ฟ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ , ๋ชจ๋ฐ์ผ ์ฑ์ฒ๋ผ ํ ์ค๋ก ๋ถ๋๋ฝ๊ฒ ์ข์ฐ ์ค์์ดํ ๊ฐ๋ฅํ ๊ฐ๋ก ์คํฌ๋กค ํญ ๋ฐ(
- ์ค์ ์ฐฝ 2์ด ๊ทธ๋ฆฌ๋ ๋จ์ผ ์ด(
1fr) ์๋ ์ ํ:- PC์์๋ 2์ด๋ก ๋ณด์ด๋ ์ค์ ํญ๋ชฉ(ํฌํธ/๋์์์ ์, ๊ฐ์์ฃผ๊ธฐ/ํ์ํด๋๋ถ๋ฆฌ)์ด ๋ชจ๋ฐ์ผ ํ๋ฉด์์๋ ๋จ์ผ ์ธ๋ก ์ด๋ก ์๋ ์ ํ๋์ด ํ ์คํธ๋ ์ ๋ ฅ์ฐฝ์ด ์ฐ๊ทธ๋ฌ์ง๊ฑฐ๋ ์๋ฆฌ์ง ์์ต๋๋ค.
- aria2 ๋ถํ ์ธ๊ทธ๋จผํธ ๋ฐ ๋ฒ์ ์
๋ฐ์ดํธ ํ์ธ ์นด๋ ๋ฐ์ํ ๊ฐ์ :
- ๋ชจ๋ฐ์ผ ํ๋ฉด ์ฐ์ธก์ ๋ฒ์ด๋ ์๋ฆฌ๋ ๋ถํ ์ธ๊ทธ๋จผํธ ์ ๋ ฅ์ฐฝ๊ณผ ๋ฆด๋ฆฌ์ฆ ์ ๋ฐ์ดํธ ํ์ธ ์์๋ฅผ ์ ์ฐํ ์คํํ ๋ ์ด์์์ผ๋ก ๋ณ๊ฒฝํ์ต๋๋ค.
- ํ๋จ ์ ์ฅ/๋ซ๊ธฐ ๋ฒํผ ํฐ์น ์ต์ ํ:
- ์ค๋งํธํฐ ํ ์ ์กฐ์ ์ ์์ง์๊ฐ๋ฝ์ผ๋ก ์ฝ๊ฒ ๋๋ฅผ ์ ์๋๋ก ํ๋จ [๋ซ๊ธฐ] / [๐พ ์ค์ ์ ์ฅ] ๋ฒํผ์ 50% : 50% ๊ท ๋ฑ ๋ถํ ๋ฐ ํฐ์น ์์ญ ํ์ฅํ์ต๋๋ค.
- iOS ์ฌํ๋ฆฌ ํ๋ฉด ์๋ ํ๋(Auto-zoom) ๋ฐฉ์ง:
- ์์ดํฐ ์ฌํ๋ฆฌ์์ ์
๋ ฅ์ฐฝ(
input,textarea,select) ํฐ์น ์ ํ๋ฉด์ด ๊ฐ์ ๋ก ํ๋๋์ด ์์์ด ์๋ฆฌ๋ ํ์์ ๋ฐฉ์งํ๋๋ก ๋ชจ๋ฐ์ผ ํผ ์ปจํธ๋กค ๊ท๊ฒฉ์ ์ต์ ํํ์ต๋๋ค.
- ์์ดํฐ ์ฌํ๋ฆฌ์์ ์
๋ ฅ์ฐฝ(
๐ณ ๋์ปค(Docker) ๋ฐ ์๋๋ก์ง NAS ์์ ์ฑ ๊ฒ์ฆ ๊ฐํ
- ๋น์ธ์ฆ ํฌ์ค์ฒดํฌ (
/api/health) ๋ฐ ๋์ปค ํฌ์ค์ฒดํฌ ์ ์:- ์๋๋ก์ง Container Manager, Portainer ๋ฑ์์ ์ปจํ
์ด๋์ ์์กด ์ํ๋ฅผ ์ค์๊ฐ ๋ชจ๋ํฐ๋งํ ์ ์๋๋ก ๊ฒฝ๋ ํฌ์ค์ฒดํฌ ์๋ํฌ์ธํธ
/api/health์ถ๊ฐ.
- ์๋๋ก์ง Container Manager, Portainer ๋ฑ์์ ์ปจํ
์ด๋์ ์์กด ์ํ๋ฅผ ์ค์๊ฐ ๋ชจ๋ํฐ๋งํ ์ ์๋๋ก ๊ฒฝ๋ ํฌ์ค์ฒดํฌ ์๋ํฌ์ธํธ
- Graceful Shutdown (
SIGTERM) ์ง์:docker stop๋ช ๋ น ์ ํ๋ก์ธ์ค๋ฅผ ์ฆ์ ์ข ๋ฃํ์ง ์๊ณ , ์์ ๋๊ธฐ์ด(jobs.json)๊ณผ ํ์คํ ๋ฆฌ(history.json)๋ฅผ ๋์คํฌ์ ์์ ํ๊ฒ ์ ์ฅํ ๋ค ์ข ๋ฃํฉ๋๋ค.
- ๋์ปค ์ ์ฉ ํ
์คํธ ์ค์ํธ ์ถ๊ฐ:
- Linux ํ๊ฒฝ Windows ๊ฒฝ๋ก ์๋ ๋ณด์ ,
fcntl๋จ์ผ ์ธ์คํด์ค ๋ฝ, ๊ฐ์ ๋์คํ๋ ์ด(Xvfb) ๊ฐ์ง ๋ฑ 241๊ฐ ๋จ์ ํ ์คํธ ์ ์ฒด ํต๊ณผ ๊ฒ์ฆ.
- Linux ํ๊ฒฝ Windows ๊ฒฝ๋ก ์๋ ๋ณด์ ,
๐ฆ ๋ฐฐํฌ ํ์ผ ์๋ด
RemoteDownloader.exe: ์๋์ฐ์ฉ ๋ฌด์ค์น ๋จ์ผ ์คํ ํ์ผ (๋ค์ด๋ก๋ ํ ๋๋ธ ํด๋ฆญ์ผ๋ก ์ฆ์ ์คํ)RemoteDownloader-Extension.zip: ํฌ๋กฌ/์ฃ์ง/์จ์ผ ๋ธ๋ผ์ฐ์ ์ฉ ํ์ฅ ํ๋ก๊ทธ๋จ (์์ถ ํด์ ํ ํ์ฅ ํ๋ก๊ทธ๋จ ๊ด๋ฆฌ์์์ ๋ก๋)
Remote Downloader v0.1.49
๐ Remote Downloader v0.1.49
๐ฉน Linux/NAS ๋์ปค ํ๊ฒฝ GoFile ํ ํฐ ์ถ์ถ 3๋จ๊ณ ์์ ํด๋ฐฑ ํ์ฌ (downloader/resolvers/gofile.py)
libEGL.so.1๋๋ฝ ๋ฐ PyQt6 ๋ฏธ์ง์ ํ๊ฒฝ ์๋ ๊ทน๋ณต:- Linux/Docker ํ๊ฒฝ์์
libEGL.so.1๋ฑ ๊ทธ๋ํฝ ๋ฐํ์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐQJSEngine์ด๊ธฐํ ์ ํฌ๋์๋๋ ๋ฌธ์ ์์ ํด๊ฒฐ. - 3๋จ๊ณ ๋ค์ค ํด๋ฐฑ ์์ง ๊ตฌ์ถ:
- Tier 1:
PyQt6 QJSEngine(Windows ๋ฐ ํ ๋ฐ์คํฌํฑ ํ๊ฒฝ) - Tier 2:
Node.jsCLI (๊ฒฝ๋ ์๋ฒ/์ปจํ ์ด๋ ํ๊ฒฝ) - Tier 3:
DrissionPage/ Chromium ๋ฌด์ ์ธ์ (about:blank๊ฐ์ ์ปจํ ์คํธ์์ JS ์์ ํ๊ฐ)
- Tier 1:
- ๋ธ๋ผ์ฐ์ /Node ํ๊ฒฝ๋ณ ๋ค์ํ User-Agent ๋ฐ Language ๋ฌธ์์ด๊ณผ ๋ฌด๊ดํ๊ฒ
WT_PROBE_TOKEN๊ธฐ๋ฐ์ผ๋ก secret์ ์ ์ฐํ๊ฒ ์ถ์ถํ๋๋ก ํ์ฑ ๋ก์ง ๊ฐ์ .
- Linux/Docker ํ๊ฒฝ์์
๐งช ๋จ์ ํ ์คํธ ๊ฒ์ฆ
- ์ ์ฒด ๋จ์ ํ
์คํธ 205๊ฑด 100% ํต๊ณผ (
OK (skipped=13)).
Remote Downloader v0.1.48
๐ Remote Downloader v0.1.48
๐ ๊ณต์ ๋งํฌ ๋น๋ฐ๋ฒํธ ๋ค์ค ์๋ ์๋ (Auto Passwords) ๋ฐ ํด๋ผ์ฐ๋ ์ค์ UI ๊ฐํธ
- ์ฌ์ ๋ฑ๋ก ์ํธ ๋ค์ค ์์ฐจ ์๋ ๋์
(
config.py,downloader/url_helper.py):- ๋ชจ๋ฐ์ผ ๋จ์ถ์ด(iOS Shortcut / Android ๊ณต์ ) ๋ฑ์ผ๋ก ๊ณต์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์๋ ์
๋ ฅํ๊ธฐ ์ด๋ ค์ด ํ๊ฒฝ์ ์ํด, ์ค์ ์ ์ฌ๋ฌ ์ํธ๋ฅผ ์ฌ์ ๋ฑ๋ก(
auto_passwords)ํด ๋๋ฉด ๋งํฌ ํด์ ์ ์๋์ผ๋ก ์์ฐจ ๋์ . - ์ง์ ๋ฆฌ์กธ๋ฒ:
TeraBox,GoFile,GigaFile,Transfer.it,FileKeeper. - ์ํธ ํด์ ์ฐ์ ์์ ์ฒด๊ณํ: ๋งํฌ ํ ์คํธ ์ํธ(?pwd=...) โ ์๋ ์ต์ ์ํธ โ ์ฌ์ ๋ฑ๋ก ์๋ ์๋ ์ํธ ์ ์ ์ฉ.
- ๋ชจ๋ฐ์ผ ๋จ์ถ์ด(iOS Shortcut / Android ๊ณต์ ) ๋ฑ์ผ๋ก ๊ณต์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์๋ ์
๋ ฅํ๊ธฐ ์ด๋ ค์ด ํ๊ฒฝ์ ์ํด, ์ค์ ์ ์ฌ๋ฌ ์ํธ๋ฅผ ์ฌ์ ๋ฑ๋ก(
- ์ค์ UI ๋ถ๋ฆฌ ๋ฐ ์ง๊ดํ (
templates/index.html,static/js/app.js):- ๊ธฐ์กด
โ๏ธ ํด๋ผ์ฐ๋ ๊ณ์ ํญ ๋ช ์นญ์โ๏ธ ํด๋ผ์ฐ๋ & ๊ณต์ ์ํธ๋ก ๋ณ๊ฒฝ. - ํ ๋ผ๋ฐ์ค ์ ์ฉ ์นด๋์์ ๊ณต์ ๋งํฌ ๋น๋ฐ๋ฒํธ ์์ญ์ ๋ ๋ฆฝ๋ ๋ณ๋ ์นด๋(๋์ ์๋ฆฌ ๋ฐ ์ง์ ์๋น์ค ๋ฑ์ง ํฌํจ)๋ก ๊น๋ํ๊ฒ ๋ถ๋ฆฌ.
- ๋์๋ณด๋ ์ํธ ์ ๋ ฅ๋ ํํธ ๋ฌธ๊ตฌ ๊ฐ์ .
- ๊ธฐ์กด
๐ณ ๋์ปค(Docker) ๋ฐ ์๋๋ก์ง NAS(Synology DSM Container Manager) ์๋ฒฝ ์ง์
- ๊ณต์ Docker ๋ฐฐํฌ ๊ตฌ์ฑ ํ์ผ ์ ๊ณต (
Dockerfile,docker-compose.yml,docker-entrypoint.sh,.dockerignore):python:3.11-slim-bookworm๊ธฐ๋ฐ ๊ฒฝ๋ ๊ณ ํจ์จ ์ปจํ ์ด๋ ์ด๋ฏธ์ง.aria2,chromium,chromium-driver,xvfb,fonts-nanum,fonts-noto-cjk,gosu,nodejs, Qt6 ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์ฅ.
- ์๋๋ก์ง NAS ์ ์ฉ ๊ถํ ๋ฐ ํ๊ฒฝ ์ต์ ํ:
PUID/PGIDํ๊ฒฝ ๋ณ์์gosu๊ถํ ๊ฐ๋ฑ์ ํตํด NAS ํ์ผ ์คํ ์ด์ /SMB ๊ณต์ ํด๋ ๊ถํ ์ถฉ๋ ์๋ฒฝ ๋ฐฉ์ง.- ํค๋๋ฆฌ์ค(๋ชจ๋ํฐ ์๋) NAS์์๋ ๊ฐ์ X11 ๋ฒํผ(
Xvfb) ๋ฐ CJK ๋๋ ๊ธ๊ผด ํ์ฌ๋ก Cloudflare Turnstile ์ฐํ ๋ฐ ์นํ์ด์ง ์บก์ฒ ์ ์ ์๋. CONFIG_DIR=/config,DOWNLOAD_DIR=/downloadsํ๊ฒฝ ๋ณ์ ๋งคํ ์ง์ ๋ฐ Windows ๊ฒฝ๋ก ์๋ ๋ณด์ .- ๋์ปค ํ๊ฒฝ ๊ฐ์ง ์ ์๋ฒ ์ ๋ฐ์ดํธ ๋ฐ ํ์ผ ํ์๊ธฐ ์ด๊ธฐ ์์ธ ์๋ด ์ฒ๋ฆฌ.
- GoFile ์น ํ ํฐ ํด์ ์ PyQt6 QJSEngine ์ธ์
nodejs๋ฐฑ์๋ ํด๋ฐฑ ์ง์.
๐งช ๋จ์ ํ ์คํธ ๊ฒ์ฆ
- ๊ณต์ ๋น๋ฐ๋ฒํธ ๋ค์ค ์๋ ๋ฐ ์ฐ์ ์์ ๊ฒ์ฆ ๋จ์ ํ
์คํธ 8๊ฑด ์ถ๊ฐ (
tests/test_auto_passwords.py). - ์ ์ฒด ๋จ์ ํ
์คํธ 205๊ฑด 100% ํต๊ณผ (
OK (skipped=13)).
Remote Downloader v0.1.47
๐ Remote Downloader v0.1.47 Release
์๊ฒฉ ๋ค์ด๋ก๋ (Remote Downloader) v0.1.47 ์ ์ ๋ฐฐํฌํ์ ๋๋ค.
๐ ์ฃผ์ ์ ๋ฐ์ดํธ ๋ด์ญ
- โ๏ธ ์ ๊ท ํด์ธ ํด๋ผ์ฐ๋ ํธ์คํ
Buzzheavier ์ง์:
downloader/resolvers/buzzheavier.py:buzzheavier.com/[์ฝ๋],bzzhr.to/[์ฝ๋],ts.buzzheavier.com/d/[์ฝ๋]์ง๋งํฌ ๋ค์ด๋ก๋ ์๋ฒฝ ์ง์- ๊ณ ์ HTML ํ์ฑ(
ts.*์๋ํฌ์ธํธ ์ถ์ถ) ๋ฐ Cloudflare Turnstile ๊ฐ์ง ์ DrissionPage ์คํ ์ค ๋ธ๋ผ์ฐ์ ์ธ์ ์๋ ํด๋ฐฑ - ํธ์คํ
์ ๋์จ
BuzzheavierAddon๋ฑ๋ก ๋ฐ ์ค๋ ์ง ๋ฐฐ์ง ์คํ์ผ(.badge-buzzheavier,.tag-buzzheavier) ์ถ๊ฐ
- ๐ก๏ธ ์๋ฒ ์ค๋ณต ์คํ ๋ฐฉ์ง ๋ฐ ๋ค์ด๋ก๋ ์์ง ์์ ํ:
app.py: Windows ์ปค๋ ๋ฎคํ ์ค(Local\RemoteDownloader_SingleInstance_Mutex) ์ ์ฉ์ผ๋ก ๋ฐฑ๊ทธ๋ผ์ด๋/ํฐ๋ฏธ๋ ์ค๋ณต ์คํ ์์ฒ ์ฐจ๋จdownloader/manager.py: ๋๊ดํธ([...]) ํฌํจ ๋๋ ํฐ๋ฆฌ์์glob.glob์ ๊ท์ ์ค์๋์ผ๋ก ์ธํ.part๊ฐ์ง ์คํจ ๋ฐ ์ค๋ณต ๋ค์ด๋ก๋((1).ext) ๋ฒ๊ทธ ์์ (os.listdir๊ต์ฒด)downloader/engine.py: ๋ค์ด๋ก๋ ์ฌ๊ฐ ์ ๋์ผ ํ์ผ๋ช ์ ๊ธฐ์กด.partํ์ผ ์๋ ์์ฉ ๋ฐ ์ด์ด๋ฐ๊ธฐ(Range: bytes=...) ์ฐ๊ฒฐdownloader/aria2_http_engine.py: IPv6 ์ฐ๊ฒฐ ์ง์ฐ ๋ฐฉ์ง(--disable-ipv6=true) ๋ฐ ์๋ฃ ํ์ผ๋ช ์๋ ๋งค์นญ ์ด๋downloader/kone_watcher.py: ํ์ฑ ๋ค์ด๋ก๋ ์ค์ธ URL์ ๋ํ ์ค๋ณต ๋ค์ด๋ก๋ ๋ฐฉ์ง ๊ฐํ
- ๐งช ํ์ง ๊ฒ์ฆ ๋ฐ ์ ๋ขฐ์ฑ ๊ฐํ:
- Buzzheavier ํ์, URL ์ ํจ์ฑ ๊ฒ์ฌ, Direct URL ์ถ์ถ ๋ฐ ํธ์คํ ์ ๋์จ ๋จ์ ํ ์คํธ 6๊ฑด ์ถ๊ฐ
- ์ ์ฒด ๋จ์ ํ
์คํธ 197๊ฑด 100% ํต๊ณผ (
OK (skipped=13))
๐ฆ ์ฒจ๋ถ ๋ฐ์ด๋๋ฆฌ ํ์ผ
RemoteDownloader.exe: ๋ณธ ํ๋ก๊ทธ๋จ ๋จ์ผ ์คํ ํ์ผ (๋ฌด์ค์น ํฌํฐ๋ธ)RemoteDownloader-Extension.zip: ํฌ๋กฌ ํ์ฅ ํ๋ก๊ทธ๋จ ํจํค์ง (๊ฐ๋ฐ์ ๋ชจ๋ ์์ถํด์ ์ค์น์ฉ)
Remote Downloader v0.1.46
๐ Remote Downloader v0.1.46 Release
์๊ฒฉ ๋ค์ด๋ก๋ (Remote Downloader) v0.1.46 ์ ์ ๋ฐฐํฌํ์ ๋๋ค.
๐ ์ฃผ์ ์ ๋ฐ์ดํธ ๋ด์ญ
- โก ๋ค์ด๋ก๋ ์ ์ก ์์ง ์ต์ ํ ๋ฐ ๋ชจ๋ ๊ตฌ์กฐ ๋ฆฌํฉํ ๋ง:
downloader/transfer_policy.py: ๊ธฐ๋ณธ ์์ง ๋ฐ ์คํจ ์ ์๋ Fallback ์์ง์ ์ต์ ์กฐ๋ฆฝ ๋ก์ง์HttpTransferPolicy๋ก ๋จ์ผํ- ๋ฆฌ์กธ๋ฒ ๊ฒฐ๊ณผ์
allow_parallel,max_connections์ ์ฑ ์ ์์ ๋ฐ ์๋ธ ํ์ผ์ ์๋ ์ ๋ฌ - aria2c ์์ ๋ค์ด๋ก๋ ๋๋ ํฐ๋ฆฌ ๊ฒฉ๋ฆฌ(
.aria2-<job_id>)๋ก ๋์ผ ํ์ผ๋ช ๋ค์ด๋ก๋ ์ ์ถฉ๋ ๋ฐฉ์ง ๋ฐ ์์ ํ ํ์ผ ์ด๋ ๋ณด์ฅ - ์ ๊ท HTTP ๋ค์ด๋ก๋ ์ ๋ถํ์ํ HEAD ์ฌ์ ์์ฒญ ์ ๊ฑฐ (์ค์ GET ์๋ต ์คํธ๋ฆผ์์ ์ฆ์ ์ฒ๋ฆฌ)
- ์์ ๋ณ ๊ฐ๋ณ 15์ด ์ ์ฅ์ ๋งค๋์ ๊ณตํต 15์ด ์ฒดํฌํฌ์ธํธ ์ฃผ๊ธฐ๋ก ํตํฉํ์ฌ I/O ๊ฒฝ๊ฐ
- ๋จ์ผ ํ์ผ์ ์ง์ค๋์ด ์๋ 27๊ฐ ์ฌ์ดํธ ์ ๋์จ์
downloader/addons/services/๊ฐ๋ณ ๋ชจ๋๋ก ๊น๋ํ๊ฒ ๋ถ๋ฆฌ
- ๐ ๋ค์ด๋ก๋ ์ฌ๊ฐ ์ ์ค๋ฅ ๋ฉ์์ง ์๋ฅ ๋ฒ๊ทธ ์์ ๋ฐ UI ๋๊ธฐํ ๊ฐ์ :
- ๋ค์ด๋ก๋ ์ค๋จ ํ ์๋/์๋ ์ฌ์๋๋ก ์์
์ด ์ฌ๊ฐ(
downloading)๋์์์๋ ๊ธฐ์กด ์คํจ ๋ฉ์์ง("โ ๋ค์ด๋ก๋ ์คํจ")๊ฐ ํ๋ฉด์ ๊ทธ๋๋ก ๋จ์์๋ ํ์ ํด๊ฒฐ - ์์
์ด ํ์์ ๋์ ๋ถ์(
resolving), ๋ค์ด๋ก๋ ์์(downloading), ์ผ์์ ์ง(paused), ์ฌ๊ฐ(resume) ๋จ๊ณ๋ก ์ง์ ํ ๋error_message๋ฅผ ์ฆ์ ์ด๊ธฐํํ๋๋ก ๊ฐ์ - ๋ฐ์ดํฐ ์์ ์ฌ๊ฐ(
on_progress) ์ ์ด์ ์๋ฌ ์กด์ฌ ์ฌ๋ถ๋ฅผ ๊ฐ์งํ์ฌjob_updated์ ์ฒด ๊ฐฑ์ ๋ธ๋ก๋์บ์คํธ ์ ์ก ๋ฐjob_progress์ด๋ฒคํธ์error_message: ""ํฌํจ - ์น ๋์๋ณด๋ ๋ฐ ํฌ๋กฌ ํ์ฅ ํ๋ก๊ทธ๋จ์์ ์์
์ํ๊ฐ
downloading์งํ ์ค์ผ ๋๋ ์๋ฌ ๋ฐ์ค๋ฅผ ์จ๊ธฐ๊ณ , ์งํ๋ฅ ๊ฐฑ์ ์ ๊ธฐ์กด.job-error-textDOM ์์๋ฅผ ์ฆ์ ์๋ ์ญ์ ํ๋๋ก ์ฒ๋ฆฌ - ์ฌ์๋ ์นด์ดํธ๋ค์ด ๋๊ธฐ ์ค์ธ
queued์ํ์์๋ "โ ๏ธ ๋ค์ด๋ก๋ ์ผ์ ์ค๋จ (์ฌ์๋ ๋๊ธฐ)"๋ก ๋ฌธ๊ตฌ ๋ช ํํ
- ๋ค์ด๋ก๋ ์ค๋จ ํ ์๋/์๋ ์ฌ์๋๋ก ์์
์ด ์ฌ๊ฐ(
- ๐ก๏ธ ํ์ง ๊ฒ์ฆ ๋ฐ ์ ๋ขฐ์ฑ ๊ฐํ:
- ์ ์ฒด ๋จ์ ํ
์คํธ 187๊ฑด 100% ํต๊ณผ (
OK (skipped=13))
- ์ ์ฒด ๋จ์ ํ
์คํธ 187๊ฑด 100% ํต๊ณผ (
๐ฆ ์ฒจ๋ถ ๋ฐ์ด๋๋ฆฌ ํ์ผ
RemoteDownloader.exe: ๋ณธ ํ๋ก๊ทธ๋จ ๋จ์ผ ์คํ ํ์ผ (๋ฌด์ค์น ํฌํฐ๋ธ)RemoteDownloader-Extension.zip: ํฌ๋กฌ ํ์ฅ ํ๋ก๊ทธ๋จ ํจํค์ง (๊ฐ๋ฐ์ ๋ชจ๋ ์์ถํด์ ์ค์น์ฉ)
Remote Downloader v0.1.45
๐ Remote Downloader v0.1.45 Release
์๊ฒฉ ๋ค์ด๋ก๋ (Remote Downloader) v0.1.45 ์ ์ ๋ฐฐํฌํ์ ๋๋ค.
๐ ์ฃผ์ ์ ๋ฐ์ดํธ ๋ด์ญ
- โ๏ธ MediaFire (mediafire.com) ๋ค์ด๋ก๋ ์ง์:
mediafire.com/file/*,/download/*,/view/*, ์ง๋งํฌ(download*.mediafire.com) ์๋ฒฝ ์ง์- ๊ณ ์ ์ง๋งํฌ ํ์ฑ ๋ฐ Cloudflare ์คํ ์ค ๋ธ๋ผ์ฐ์ ํด๋ฐฑ
- ํธ์คํ
์ ๋์จ
MediaFireAddon๋ฑ๋ก ๋ฐ ์ ์ฉ ๋ฐฐ์ง ์คํ์ผ ์ฐ๋
- ๐ FileKeeper (filekeeper.net) ๋ค์ด๋ก๋ ์ง์:
filekeeper.net/[์ฝ๋],filekeeper.net/[์ฝ๋]/[ํ์ผ๋ช ],edge*.fetchio.cc์ง๋งํฌ ์๋ฒฝ ์ง์#download-countdown๋ฉํ๋ฐ์ดํฐ ๋ฐop=download2ํผ ์ ์ก์ ํตํ 302 ๊ณ ์ ์ง๋งํฌ ์ฆ์ ๋ฐ๊ธ- ๋ถํ ์์ถ ํ์ผ ์๋ธํด๋ ์๋ ์ ๋ฆฌ ๋ฐ ์คํ ์ค ๋ธ๋ผ์ฐ์ ํด๋ฐฑ ์ง์
- ํธ์คํ
์ ๋์จ
FileKeeperAddon๋ฑ๋ก ๋ฐ ์๋ฉ๋๋ ์ ์ฉ ๋ฐฐ์ง ์ฐ๋
- ๐ DataNodes (datanodes.to) ๋ค์ด๋ก๋ ์ง์:
datanodes.to/[์ฝ๋],datanodes.to/[์ฝ๋]/[ํ์ผ๋ช ],*.dlproxy.uk์ง๋งํฌ ์๋ฒฝ ์ง์- 2๋จ๊ณ ์์ ์ ์ถ ๋ฐ ๋คํธ์ํฌ ํจํท ๋ถ์, DrissionPage ์คํ ์ค ์ธ์ ์ ํตํ Cloudflare Turnstile ์บก์ฐจ ์๋ ํต๊ณผ
- ํ์ด๋จธ ๊ฒฝ๊ณผ ํ ๋ธ๋ผ์ฐ์ ์ปจํ ์คํธ ์ง๋งํฌ ๋ฐ๊ธ ๋ฐ ๋ฉํฐ ํํธ ์๋ธํด๋ ์๋ ์์ฑ
- ํธ์คํ
์ ๋์จ
DataNodesAddon๋ฑ๋ก ๋ฐ ๋ธ๋ฃจ ์ ์ฉ ๋ฐฐ์ง ์ฐ๋
- ๐งฉ ํฌ๋กฌ ํ์ฅ ํ๋ก๊ทธ๋จ ๋ฐ ํ์ด์ง ์ค์บ๋ ๊ธฐ๋ฅ ๊ฐ์ :
- PlanetEmu, Vimm's Lair, Romspure, WoWroms ๋ฑ
<form>POST ์ ์ถ ๋ฐฉ์์ ์ฌ์ฉํ๋ ๋ค์ด๋ก๋ ํ์ด์ง๋ฅผ ํ์ด์ง ์ค์บ๋๊ฐ ์ฆ์ ๊ฐ์งํ์ฌ 1ํด๋ฆญ ๋ค์ด๋ก๋ ์ง์ - PlanetEmu ๊ฒ์ ํ์ดํ ๋ฐ ์๋ธํด๋ ๊ฒฝ๋ก ์ ์ ๋ก์ง ๊ฐ์
- PlanetEmu, Vimm's Lair, Romspure, WoWroms ๋ฑ
- ๐ก๏ธ ํ์ง ๊ฒ์ฆ ๋ฐ ์ ๋ขฐ์ฑ ๊ฐํ:
- Pyrefly ํ์ ๊ฒ์ฌ ์ค๋ฅ 0๊ฑด ์ ์ง
- ์ ์ฒด ๋จ์ ํ
์คํธ 178๊ฑด 100% ํต๊ณผ (
OK (skipped=13))
๐ฆ ์ฒจ๋ถ ๋ฐ์ด๋๋ฆฌ ํ์ผ
RemoteDownloader.exe: ๋ณธ ํ๋ก๊ทธ๋จ ๋จ์ผ ์คํ ํ์ผ (๋ฌด์ค์น ํฌํฐ๋ธ)RemoteDownloader-Extension.zip: ํฌ๋กฌ ํ์ฅ ํ๋ก๊ทธ๋จ ํจํค์ง (๊ฐ๋ฐ์ ๋ชจ๋ ์์ถํด์ ์ค์น์ฉ)
Remote Downloader v0.1.44
๐ Remote Downloader v0.1.44 Release
์๊ฒฉ ๋ค์ด๋ก๋ (Remote Downloader) v0.1.44 ์ ์ ๋ฐฐํฌํ์ ๋๋ค.
๐ ์ฃผ์ ์ ๋ฐ์ดํธ ๋ด์ญ
- ๐ฎ Vimm's Lair (vimm.net) ๋ ํธ๋ก ๊ฒ์ ROM ๋ค์ด๋ก๋ ์ง์:
vimm.net/vault/*๋ฐdl*.vimm.net๊ฒ์ ๋ค์ด๋ก๋ ํ์ด์ง ์๋ฒฝ ์ง์- Cloudflare Turnstile ๋ณด์ ๊ฒ์ฆ ์๋ ์ฐํ ๋ฐ
submitDL์๋ฐ์คํฌ๋ฆฝํธ์ GET ์ฟผ๋ฆฌ ๋ณํ ์ฒ๋ฆฌ mediaId,token๋์ ๋ฐ๊ธ ๋ฐ ์ธ์ ์ฟ ํค ์ฐ๋์ ํตํ ๋ฌด๊ฒฐ์ฑ ์ง๋งํฌ ์์ฑ- ์๋ฒ
Content-Disposition๋ฐ ํ์ดํ ๊ธฐ๋ฐ ํ์ผ๋ช /์๋ธํด๋ ์๋ ์์ฑ - ์ ์ฉ ํธ์คํ
์ ๋์จ
VimmAddon๋ฑ๋ก (๋ณด๋ผ์ ๋ฐฐ์ง ์คํ์ผ ์ ์ฉ)
- ๐ ํฐ์คํ ๋ฆฌ ๋ฐ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ(Google Drive) ๊ณต์ ๋งํฌ ์ฐ๋ ๊ฐ์ :
- ํฐ์คํ ๋ฆฌ ํฌ์คํ
๋ณธ๋ฌธ์ ํฌํจ๋ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ(
drive.google.com) ๋ฑ ์ ๋ฌธ ํด๋ผ์ฐ๋ ๋งํฌ ์๋ ๊ฐ์ง ๋ฐ ํ์ - ๋ณธ๋ฌธ ์ธ ์ฌ์ด๋๋ฐ/๋๊ธ/ํธํฐ ๋งํฌ์ ๋ถํ์ํ ๊ณผ๋ค ์์ง(์์ฒ ๊ฐ ๋งํฌ ํญ์ฃผ ๋ฒ๊ทธ) ๋ฐฉ์ง ๋ฐ ๋ณธ๋ฌธ ์์ญ(
article,.entry-content๋ฑ) ์๊ฒฉ ๊ฒฉ๋ฆฌ
- ํฐ์คํ ๋ฆฌ ํฌ์คํ
๋ณธ๋ฌธ์ ํฌํจ๋ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ(
- ๐งฉ ํฌ๋กฌ ํ์ฅ ํ๋ก๊ทธ๋จ(Chrome Companion) ํ ์ทจ์(Cancel) ๊ธฐ๋ฅ ์ถ๊ฐ:
- ํ์
ํ ๋ชฉ๋ก์ ์ผ์์ ์ง, ์ฌ๊ฐ, ์ญ์ ์ธ '์์
์ทจ์' ๋ฒํผ ์ถ๊ฐ ๋ฐ ์น ๋์๋ณด๋์ ๋์ผํ
cancelled์ํ ์ค์๊ฐ ๋๊ธฐํ ์ง์
- ํ์
ํ ๋ชฉ๋ก์ ์ผ์์ ์ง, ์ฌ๊ฐ, ์ญ์ ์ธ '์์
์ทจ์' ๋ฒํผ ์ถ๊ฐ ๋ฐ ์น ๋์๋ณด๋์ ๋์ผํ
- ๐ก๏ธ ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค ํ์
์์ ์ฑ ๋ฐ ํ
์คํธ ํต๊ณผ:
- Pyrefly ํ์ ๊ฒ์ฌ ์ค๋ฅ 0๊ฑด ๋ฌ์ฑ
- ๋จ์ ํ
์คํธ 163๊ฑด ์ ์ฒด 100% ํต๊ณผ (
OK (skipped=13))
๐ฆ ์ฒจ๋ถ ๋ฐ์ด๋๋ฆฌ ํ์ผ
RemoteDownloader.exe: ๋ณธ ํ๋ก๊ทธ๋จ ๋จ์ผ ์คํ ํ์ผ (๋ฌด์ค์น ํฌํฐ๋ธ)RemoteDownloader-Extension.zip: ํฌ๋กฌ ํ์ฅ ํ๋ก๊ทธ๋จ ํจํค์ง (๊ฐ๋ฐ์ ๋ชจ๋ ์์ถํด์ ์ค์น์ฉ)
Remote Downloader v0.1.43
๐ Remote Downloader v0.1.43 Release
์๊ฒฉ ๋ค์ด๋ก๋ (Remote Downloader) v0.1.43 ์ ์ ๋ฆด๋ฆฌ์ฆ์
๋๋ค.
๐ฎ 1. Romspure (romspure.cc) ๋ ํธ๋ก ๊ฒ์ ROM ๋ค์ด๋ก๋ ์ง์
- Romspure ์ ์ฉ ๋ฆฌ์กธ๋ฒ ์ ์ค (
downloader/resolvers/romspure.py):romspure.cc์ ๊ฒ์ ์์ธ ํ์ด์ง(/roms/...), ๋ฒ์ ์ ํ ํ์ด์ง(/download/<slug>), ๊ฐ๋ณ ๋ค์ด๋ก๋ ํ์ด์ง(/download/<slug>/<index>) ์๋ ์ธ์ ๋ฐ ์๋ฒฝ ์ง์.- ์๋ํ๋ ์ค AJAX ๋์ ๋ณด์ Nonce(
action=romspure_get_nonce) ๋ฐ ์๋ช ๋ ์ง๋งํฌ(action=app_get_download_link) ๋ฐ๊ธ ํ๋ก์ธ์ค ๊ตฌํ. - Cloudflare ๋ณดํธ ์ ์ฅ์(
sto2.romsforever.co๋ฑ) ์๋ ๊ฐ์ง ๋ฐ ์คํ ์ค ๋ธ๋ผ์ฐ์ ์ฐ๋cf_clearance๋ณด์ ํ ํฐ ์๋ ํต๊ณผ ๊ธฐ๋ฅ ์ง์. - ๋ฉํฐ ๋์คํฌ/๋ฒ์ ๋ถํ ๋งํฌ ์๋ ์ถ์ถ ๋ฐ ์์ฐจ ๋ค์ด๋ก๋ ํ์(
extra_jobs) ์ง์.
- ์ ๋์จ ๋ฐ UI/ํ์ฅ ํ๋ก๊ทธ๋จ ์ฐ๋:
- ํธ์คํ
์ ๋์จ
RomspureAddon๋ฑ๋ก (domains=["romspure.cc"]). - ์น ๋์๋ณด๋ ๋ฐฐ์ง ์คํ์ผ(
.badge-romspure) ๋ฐ ํฌ๋กฌ ํ์ฅ ํ๋ก๊ทธ๋จ ์๋น์ค ๊ฐ์ง ํ๊ทธ(.tag-romspure) ์ถ๊ฐ.
- ํธ์คํ
์ ๋์จ
๐พ 2. ์๋ฒ ์ ์ฅ ๋๋ ํฐ๋ฆฌ ๋์คํฌ ์ฌ์ ๊ณต๊ฐ ๋ฐ ๋ณด๊ด ์ฉ๋ ์ค์๊ฐ ํ์
- ์ ์ฅ ์์น ํ๋จ ์ค์๊ฐ ์ฉ๋ ๋ชจ๋ํฐ๋ง (
templates/index.html,static/css/style.css,static/js/app.js,app.py):- ๋ฉ์ธ ๋์๋ณด๋ ์ ์ฅ ์์น ํ์ ๋ฐ๋ก ์๋์ชฝ์ ์๋ฒ ๋์คํฌ ์ฌ์ ๊ณต๊ฐ(
๐พ ์ฌ์ : xxx GB / ์ ์ฒด xxx GB), ๋ค์ด๋ก๋ ํด๋ ๋ณด๊ด ์ฉ๋(๐ ํด๋: xxx MB/GB (xx๊ฐ)), ๋ฏธ๋ ๊ฒ์ด์ง ๋ฐ ๋ฐ ์ฌ์ฉ๋ฅ (%)์ ์ค์๊ฐ ํ์. - ๋์คํฌ ์ฌ์ฉ๋ฅ ๊ตฌ๊ฐ๋ณ(์ ์ ๋ น์, 75% ์ด์ ์ฃผํฉ์, 90% ์ด์ ๋นจ๊ฐ์) ์๊ฐ์ ํผ๋๋ฐฑ ์ ๊ณต.
- REST API ์๋ํฌ์ธํธ
/api/server/storage์ ์ค ๋ฐ 15์ด ์ฃผ๊ธฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ์บ์ฑ, ๋ค์ด๋ก๋ ์๋ฃ/์์ ์ญ์ /์ค์ ๋ณ๊ฒฝ ์ ์๋ ๊ฐฑ์ ์ง์.
- ๋ฉ์ธ ๋์๋ณด๋ ์ ์ฅ ์์น ํ์ ๋ฐ๋ก ์๋์ชฝ์ ์๋ฒ ๋์คํฌ ์ฌ์ ๊ณต๊ฐ(
๐ฆ ์ฒจ๋ถ ๋ฐ์ด๋๋ฆฌ ํ์ผ
RemoteDownloader.exe: ๋จ์ผ ์คํ ํ์ผ (๋ฌด์ค์น ํฌํฐ๋ธ)RemoteDownloader-Extension.zip: ํฌ๋กฌ ํ์ฅ ํ๋ก๊ทธ๋จ ํจํค์ง