Task #75
[๐ด HIGH] razvedchik.py์ seen_posts ํจ์น๋ฅผ ์๋ฃํ๋ผ.
์์ ๋ช ๋ น์ด
[๐ด HIGH] razvedchik.py์ seen_posts ํจ์น๋ฅผ ์๋ฃํ๋ผ.
## ๋ฐฐ๊ฒฝ
์ด์ ๋ํ์์ ํจ์น๊ฐ ๋ถ์์ ํ๊ฒ ์ ์ฉ๋์๋ค:
- `SEEN_POSTS_PATH` ์์๋ ์ถ๊ฐ๋์์ ์๋ ์๊ณ ์๋ ์๋ ์์
- `_load_seen_posts()` / `_save_seen_posts()` ํจ์ ์ ์๊ฐ ์์
- `scan_feed()`์์ seen_posts ํํฐ๋ง ๋ก์ง ๋ฏธ์ ์ฉ
ํ์ฌ razvedchik.py๋ ์คํ ์ NameError๊ฐ ๋ ์ ์๋ ๋ถ์์ ํ ์ํ์.
## ๋ชฉํ
์ด๋ฏธ ์ฝ์ ํฌ์คํธ(seen_posts)๋ฅผ ๊ธฐ๋กํด์, ํ ๋ฒ ์ฝ์ ๊ธ์ ๋ค์ ์ฒ๋ฆฌํ์ง ์๋๋ก ํ๋ค.
- ํ์ผ ๊ฒฝ๋ก: `~/.config/moltbook/seen_posts.json`
- `seen_posts.json`์ ์ด๋ฏธ ์กด์ฌํจ (7๊ฐ ID ๋ค์ด์์)
## ์์
์ ์ฐจ
1. **๋จผ์ ํ์ฌ razvedchik.py ์ ์ฒด๋ฅผ ์ฝ์ด๋ผ** (read_file๋ก ์ ์ฒด ๋ด์ฉ ํ์ธ)
2. **ํ์ฌ ์ํ๋ฅผ ์ ํํ ํ์
ํ๋ผ**:
- SEEN_POSTS_PATH ์์๊ฐ ์๋์ง ํ์ธ
- _load_seen_posts/_save_seen_posts ํจ์๊ฐ ์๋์ง ํ์ธ
- scan_feed() ํจ์์์ seen_posts ๊ด๋ จ ์ฝ๋๊ฐ ์๋์ง ํ์ธ
3. **๋๋ฝ๋ ๋ถ๋ถ๋ง ์ ํํ ํจ์นํ๋ผ**:
### ํ์ํ ๋ณ๊ฒฝ์ฌํญ:
**A. SEEN_POSTS_PATH ์์** (์์ผ๋ฉด ์ถ๊ฐ, ๊ฒฝ๋ก ์์ ๋ธ๋ก์):
```python
SEEN_POSTS_PATH = Path.home() / ".config" / "moltbook" / "seen_posts.json"
```
**B. ํฌํผ ํจ์ 2๊ฐ** (MoltbookClient ํด๋์ค ์ ์ ๋ฐ๋ก ์์ ์ถ๊ฐ, ์์ผ๋ฉด):
```python
def _load_seen_posts() -> set:
try:
if SEEN_POSTS_PATH.exists():
return set(json.loads(SEEN_POSTS_PATH.read_text(encoding="utf-8")))
except Exception:
pass
return set()
def _save_seen_posts(seen: set) -> None:
SEEN_POSTS_PATH.parent.mkdir(parents=True, exist_ok=True)
SEEN_POSTS_PATH.write_text(
json.dumps(list(seen), ensure_ascii=False), encoding="utf-8"
)
```
**C. scan_feed() ํจ์ ์์ **:
- ํจ์ ์์ ๋ถ๋ถ์ `seen = _load_seen_posts()` ์ถ๊ฐ
- ํผ๋์์ ๊ฐ์ ธ์จ ํฌ์คํธ ์ค `post_id not in seen`์ธ ๊ฒ๋ง ๊ฒฐ๊ณผ์ ํฌํจ
- ์๋ก ์ถ๊ฐ๋ post_id๋ค์ seen์ ์ถ๊ฐ
- ํจ์ ๋์์ `_save_seen_posts(seen)` ํธ์ถ
4. **์์ ํ ๋ฌธ๋ฒ ๊ฒ์ฌ**: `python -m py_compile razvedchik.py`
5. **์ค์ ์คํ ํ
์คํธ**: `python razvedchik.py --dry-run` ๋๋ import ํ
์คํธ๋ก NameError ์๋์ง ํ์ธ
6. **๋ฌธ์ ์์ผ๋ฉด ์๋ฃ ๋ณด๊ณ **
## ์ค์ํ ์ฃผ์์ฌํญ
- ํ์ผ์ ํต์งธ๋ก ๋ฎ์ด์ฐ์ง ๋ง๊ณ , ํ์ฌ ์ํ๋ฅผ ๋จผ์ ์ฝ๊ณ ๋๋ฝ๋ ๋ถ๋ถ๋ง ์ถ๊ฐํ๋ผ
- scan_feed()์ ์ ํํ ํ์ฌ ๊ตฌํ์ ์ฝ๊ณ ๋์ ์์ ํ๋ผ (๊ตฌ์กฐ๊ฐ ๋ค๋ฅผ ์ ์์)
- json ๋ชจ๋์ด ์ด๋ฏธ import๋์ด ์๋์ง ํ์ธํ๋ผ (์์ผ๋ฉด ์ถ๊ฐ)
- Path๊ฐ ์ด๋ฏธ import๋์ด ์๋์ง ํ์ธํ๋ผ
- razvedchik.py ๊ฒฝ๋ก๋ ํ๋ก์ ํธ ๋ฃจํธ์ ์์