์ด๋ฏธ์ง ํ์ผ ์ ๋ ฌ ๋ฐ ์ผ๊ด ์ด๋ฆ ๋ณ๊ฒฝ ๋๊ตฌ
Renam์ ์ด๋ฏธ์ง ํ์ผ์ ํด๋์์ ์๋ ์ ๋ ฌํ๊ณ , ์ฌ์ฉ์๊ฐ ์ํ๋ ๊ท์น์ผ๋ก ์ผ๊ด์ ์ผ๋ก ํ์ผ๋ช ์ ๋ณ๊ฒฝํ ์ ์๋ GUI ๊ธฐ๋ฐ ๋๊ตฌ์ ๋๋ค.
ํฌ๋ก์ค ํ๋ซํผ ์ง์: Windows, macOS, Linux (Docker ์ง์)
| ๊ธฐ๋ฅ | ์ค๋ช |
|---|---|
| ํด๋ ์ ํ | ํฌ๋ก์ค ํ๋ซํผ ํด๋ ์ ํ ์ฐฝ ์ ๊ณต |
| ํ์ ํด๋ ๋ชจ๋ | ์์ ํด๋ ์ ํ ์ ํ์ ํด๋๋ฅผ ์ข์ธก ๋ฆฌ์คํธ๋ก ํ์, ํด๋๋ณ๋ก ๋ ๋ฆฝ๋ ์ค์ /๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ด๋ฆฌ |
| ์ด๋ฏธ์ง ํํฐ๋ง | JPG, PNG ๋ฑ ํ์ฅ์ ์๋ ์ ํ |
| ์ ๋ ฌ ๊ท์น ์ ํ | ์ซ์, ์ํ๋ฒณ, ๋ ์ง, ํ์ฅ์, ์ฌ์ฉ์ ์ ๊ท์ |
| ์ ๋ ฌ ์ ์ง | ์ด๋ฆ ๋ณ๊ฒฝ/๋๋๋ฆฌ๊ธฐ/์ด๊ธฐํ/์ฌ์ค์บ ํ์๋ ํ์ฌ ์ ๋ ฌ ๊ท์น ์๋ ์ฌ์ ์ฉ (ํ์ ํญ ๋ชจ๋ ํฌํจ) |
| ํ์ผ๋ช ํจํด | {n} ๋ฑ์ ์ด์ฉํด ์ผ๊ด ์ด๋ฆ ์์ฑ |
| ์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ | ๋ณ๊ฒฝ๋ ํ์ผ๋ช
์ ์ฆ์ ํ์, ๋ฏธ๋ฆฌ๋ณด๊ธฐ > ํด๋๋ช
ํ์ดํ๋ก ํ์ฌ ์ปจํ
์คํธ ํ์ |
| ์๋ ์ ๋ ฌ ๊ธฐ๋ฅ | โโ ๋ฒํผ์ผ๋ก ๋ธ๋ก ๋จ์ ์์ ์ด๋ |
| Undo ๊ธฐ๋ฅ | ์๋ ํ์ผ๋ช ์ผ๋ก ๋ณต๊ตฌ (์ต๊ทผ 10๊ฐ) |
| ๋ถ๋๋ฌ์ด UI | ์์ ํฐํธ์ ์์ ฏ ์ฌ์ฌ์ฉ์ผ๋ก ๋ฆฌ์คํธ/ํ ์ด๋ธ ๊น๋นก์ ์ต์ํ |
| Docker ์ง์ | ์น ๋ธ๋ผ์ฐ์ ๋ก GUI ์ ์ ๊ฐ๋ฅ |
| EXE ์ ๊ณต | Windows ์ค์น ์์ด ์คํ ๊ฐ๋ฅ |
๐ ํด๋ ์ ํ โ ์ต์
์ค์ โ ํ์ผ ํธ์ง โ ์คํ ์๋ฃ!
Renam
[ํด๋ ์ ํ]
C:/Users/.../Pictures
[์ข์ธก] ํ์ ํด๋ / ์ต์
- ํด๋A
- ํด๋B
- ํด๋C
[์ฐ์ธก] ๋ฏธ๋ฆฌ๋ณด๊ธฐ > ํด๋๋ช
์๋ณธ ํ์ผ๋ช
โ ๋ณ๊ฒฝ ํ์ผ๋ช
001.jpg โ 1.jpg
002.jpg โ 2.jpg
...
[ํ๋จ]
[๋ณ๊ฒฝ] [๋๋๋ฆฌ๊ธฐ] [์ข
๋ฃ]
-
ํ์ ํด๋ ๋ชจ๋
- ์ ํํ ์์ ํด๋์ ํ์ ํด๋๊ฐ ํ๋ ์ด์ ์์ ๋ ํ์ฑํ๋ฉ๋๋ค.
- ์ข์ธก
ํ์ ํด๋๋ฆฌ์คํธ์์ ํด๋๋ฅผ ํด๋ฆญํ๋ฉด ํด๋น ํด๋๊ฐ ํ์ฌ ํญ์ด ๋๋ฉฐ:- ์ฐ์ธก ์๋จ ํ์ดํ์ด
๋ฏธ๋ฆฌ๋ณด๊ธฐ > {ํด๋๋ช }์ผ๋ก ํ์๋ฉ๋๋ค. - ์ ๋ ฌ ๊ท์น, ํ์ผ๋ช ํจํด, ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ํ๊ฐ ํด๋๋ณ๋ก ๋ ๋ฆฝ์ ์ผ๋ก ์ ์ฅ๋ฉ๋๋ค.
- ์ด๋ฆ ๋ณ๊ฒฝ, ๋๋๋ฆฌ๊ธฐ, ์ด๊ธฐํ, ์ฌ์ค์บ ์ดํ์๋ ํ์ฌ ์ ํ๋ ์ ๋ ฌ ๊ท์น์ด ์๋์ผ๋ก ๋ค์ ์ ์ฉ๋ฉ๋๋ค.
- ์ฐ์ธก ์๋จ ํ์ดํ์ด
- ํ๋จ
[๋ณ๊ฒฝ],[๋๋๋ฆฌ๊ธฐ]๋ฒํผ์ ํ์ฌ ์ ํ๋ ํ์ ํด๋ ํ๋๋ง ๋์์ผ๋ก ๋์ํฉ๋๋ค.
-
๋จ์ผ ํด๋ ๋ชจ๋
- ์ ํํ ํด๋์ ํ์ ํด๋๊ฐ ์์ ๋ ํ์ฑํ๋ฉ๋๋ค.
- ํ์ฌ ํด๋์ ๋ชจ๋ ์ด๋ฏธ์ง ํ์ผ์ ํ ๋ฒ์ ์ ๋ ฌ/๋ณ๊ฒฝ/๋๋๋ฆฌ๊ธฐ ํฉ๋๋ค.
- ์ด๋ฆ ๋ณ๊ฒฝ, ๋๋๋ฆฌ๊ธฐ, ์ด๊ธฐํ ํ์๋
_apply_sort๋ฅผ ํตํด ํ์ฌ ์ ๋ ฌ ๊ท์น์ด ์ ์ง๋ฉ๋๋ค.
- Python 3.10+
- Tkinter (GUI)
- os, pathlib, re, shutil (ํ์ผ ์ฒ๋ฆฌ)
- Docker (์ปจํ
์ด๋ํ)
- TigerVNC (VNC ์๋ฒ)
- noVNC (์น ๊ธฐ๋ฐ VNC ํด๋ผ์ด์ธํธ)
- Fluxbox (๊ฒฝ๋ ์๋์ฐ ๋งค๋์ )
- pyinstaller (Windows ์คํ ํ์ผ ํจํค์ง)
๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ! ์น ๋ธ๋ผ์ฐ์ ๋ก GUI ์ ์
# 1. ์ ์ฅ์ ํด๋ก
git clone https://github.com/Hobby2025/Renam.git
cd Renam
# 2. ์์
ํด๋ ์์ฑ (์ด๋ฏธ์ง ํ์ผ์ ์ฌ๊ธฐ์ ๋ฃ์ผ์ธ์)
mkdir workspace
# 3. Docker Compose๋ก ์คํ
docker-compose up -d
# 4. ์น ๋ธ๋ผ์ฐ์ ์์ ์ ์
# http://localhost:6080์ ์ ์ ๋ณด:
- ์น UI: http://localhost:6080 (noVNC)
- VNC ํด๋ผ์ด์ธํธ: localhost:5901 (๋น๋ฐ๋ฒํธ:
renam)
ํ์ผ ์์ :
workspace/ํด๋์ ์ด๋ฏธ์ง ํ์ผ์ ๋ฃ์ผ์ธ์- GUI์์
/workspaceํด๋๋ฅผ ์ ํํ์ธ์ - ํ์ผ๋ช
๋ณ๊ฒฝ ํ
workspace/ํด๋์์ ๊ฒฐ๊ณผ ํ์ธ
์ค์ง ๋ฐ ์ ๊ฑฐ:
# ์ค์ง
docker-compose stop
# ์ฌ์์
docker-compose start
# ์์ ์ ๊ฑฐ
docker-compose downPython 3.10+ ํ์
# ์์กด์ฑ ์ค์น
pip install -r requirements.txt
# ์คํ
python app.py# ํต์ฌ ๋ก์ง ํ
์คํธ
python test_logic.pyflowchart TD
A[ํ๋ก๊ทธ๋จ ์คํ] --> B[ํด๋ ์ ํ]
B --> C[์ด๋ฏธ์ง ํ์ผ ์ค์บ / ๋ฆฌ์คํธ ์์ฑ]
C --> D[์ ๋ ฌ ๊ท์น ์ ํ or ์ฌ์ฉ์ ์
๋ ฅ]
D --> E[์ ๋ ฌ ๊ฒฐ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ์]
E --> F{์ฌ์ฉ์ ์์ ๋ณ๊ฒฝ?}
F -->|์| G[๋๋๊ทธ/๋ฒํผ ์ด๋ โ ๋ฆฌ์คํธ ์
๋ฐ์ดํธ]
F -->|์๋์ค| H[ํ์ผ๋ช
ํจํด ์
๋ ฅ]
G --> H
H --> I[์คํ]
I --> J[ํ์ผ๋ช
๋ณ๊ฒฝ / ๋ก๊ทธ ์ ์ฅ]
J --> K{๋๋๋ฆฌ๊ธฐ?}
K -->|์| C
K -->|์๋์ค| L[์ข
๋ฃ]
| ์ ๋ ฌ ๊ธฐ์ค | ์ฒ๋ฆฌ ๋ฐฉ์ |
|---|---|
| ์ซ์ ๊ธฐ๋ฐ | ์ ๊ท์์ผ๋ก ์ซ์ ์ถ์ถ ํ ์ ๋ ฌ |
| ์ํ๋ฒณ ๊ธฐ๋ฐ | ๊ธฐ๋ณธ ๋ฌธ์์ด ์ ๋ ฌ |
| ์์ฑ/์์ ๋ ์ง | os.stat ๊ธฐ๋ฐ ์๊ฐ ์ ๋ ฌ |
| ํ์ฅ์ | ํ์ฅ์ ๊ทธ๋ฃน ํ ๋ด๋ถ ์ ๋ ฌ |
| ์ฌ์ฉ์ ์ ๊ท์ | Custom key function ์ ์ฉ |
ํ์ ํด๋ ๋ชจ๋์ ๋จ์ผ ํด๋ ๋ชจ๋ ๋ชจ๋์์ ์ด๋ฆ ๋ณ๊ฒฝ / ๋๋๋ฆฌ๊ธฐ / ์ด๊ธฐํ / ์ฌ์ค์บ ์ดํ ํ์ฌ ์ ํ๋ ์ ๋ ฌ ๊ท์น์ด ๋ค์ ์ ์ฉ๋์ด, ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์์ order ๊ฐ์ด ํญ์ ์ผ๊ด๋๊ฒ ์ ์ง๋ฉ๋๋ค.
[
{
"original": "IMG_10.jpg",
"display_name": "IMG_10.jpg",
"new_name": "1.jpg",
"order": 1,
"ext": "jpg"
}
]{
"folder": "...",
"before": ["IMG_10.jpg", "IMG_01.jpg"],
"after": ["1.jpg", "2.jpg"],
"timestamp": "2025-11-21T12:00:00"
}| ์์ธ ์ํฉ | ๋์ |
|---|---|
| ์ค๋ณต ํ์ผ๋ช ๋ฐ์ | ์์ postfix ๋ถ์ฌ ์ฒ๋ฆฌ |
| ๊ถํ ์ค๋ฅ | Alert ํ์ + ์์ ์ค๋จ |
| ๋น ํด๋ ์ ํ | ๊ฒฝ๊ณ ํ์ |
| ์ ๊ท์ ์ค๋ฅ | ์ค๋ฅ ๋ฉ์์ง + ์ ๋ ฅ ์ด๊ธฐํ |
- EXIF ์ดฌ์์ผ ๊ธฐ์ค ์ ๋ ฌ
- ์ธ๋ค์ผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ UI
- ๋ณตํฉ ์ ๋ ฌ ๊ท์น ์ค์
- ํ์ผ ์ ์ธ ๊ท์น
MIT License
Issues์ Pull Requests๋ฅผ ํ์ํฉ๋๋ค!