Skip to content

rainygirl/rreader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rReader

CLI(커맨드 라인 인터페이스)용 RSS 리더 클라이언트. rterm에서 분리된 프로젝트입니다.

PythonRust 두 가지 버전으로 제공됩니다.

한국어, 日本語, 中文 RSS 피드를 지원합니다.

Python 코드는 Gemini API로 영문 RSS를 한국어로 번역합니다.

스크린샷

screenshot

프로젝트 구조

rreader/
├── rreader-python/    # Python 구현
│   ├── pyproject.toml
│   └── src/rreader/
├── rreader-rust/      # Rust 구현
│   ├── Cargo.toml
│   └── src/
└── rreader-web/       # 정적 HTML 생성기
    ├── generate.py
    └── feeds.json

rreader-web

RSS 피드를 수집하고 Gemini API로 제목을 한국어로 번역한 뒤, 정적 HTML 페이지를 생성하는 웹 버전입니다. news.coroke.net에서 실제로 운영 중입니다.

특징

  • 카드 뷰 / 목록 뷰 전환 지원
  • 소스별 그룹핑: 카드 뷰에서 출처별로 최신 기사를 묶어 표시
  • 썸네일 자동 수집: RSS 피드 및 og:image 크롤링
  • 번역 캐시: 기사 URL 기준으로 번역 결과를 캐싱하여 API 호출 최소화
  • 크론 연동: 매시간 자동 실행에 최적화

실행 방법

cd rreader-web

# 의존성 설치
pip install feedparser google-genai

# Gemini API 키 설정 (번역 기능 사용 시)
echo '{"GEMINI_API_KEY": "your-key-here"}' > ~/.rreader_gemini_config.json

# 실행
python generate.py

# 생성된 파일 확인
open output/index.html

크론 등록 예시 (매시간 실행):

0 * * * * cd /path/to/rreader-web && python generate.py

RSS 피드 설정

feeds.json 파일에서 카테고리와 피드를 설정합니다:

{
    "tech": {
        "title": "Tech",
        "feeds": {
            "Hacker News": "https://news.ycombinator.com/rss",
            "TechCrunch": "https://techcrunch.com/feed/"
        }
    },
    "news": {
        "title": "Top News",
        "feeds": {
            "BBC": "http://feeds.bbci.co.uk/news/rss.xml",
            "CNN": "http://rss.cnn.com/rss/cnn_topstories.rss"
        }
    }
}

주의사항

  • generate.py 내에 Google Analytics(GA4)Google AdSense 코드가 포함되어 있습니다. 이는 news.coroke.net 전용 코드입니다. 재활용 시 반드시 해당 코드를 삭제하거나 본인의 코드로 교체하세요. 해당 위치는 코드 내 주석(<!-- news.coroke.net용 코드이니 재활용시 삭제하세요 -->)으로 표시되어 있습니다.
  • Gemini API 키가 없으면 번역 없이 원문 제목으로 생성됩니다.
  • og:image 수집 시 외부 요청이 발생하므로 네트워크 환경에 따라 시간이 걸릴 수 있습니다.

설치

Python 버전

Python 3.10 이상 필요

git clone https://github.com/rainygirl/rreader
cd rreader/rreader-python

# 가상환경 생성 및 활성화
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# 의존성 설치
pip install -e .

# 실행
python src/rreader/run.py

Gemini 번역 기능을 사용하려면 추가 의존성을 설치합니다:

pip install -e ".[gemini]"

Rust 버전

Rust 1.70 이상 필요

cd rreader-rust
cargo install --path .

# 실행
rreader

배포 패키지 빌드

Python

cd rreader-python

pip install build
python -m build

# 빌드된 패키지는 dist/ 디렉토리에 생성됩니다
# - rreader-x.x.x.tar.gz (소스 배포판)
# - rreader-x.x.x-py3-none-any.whl (wheel)

단일 실행 파일 빌드

cd rreader-python

# 바이너리 빌드
./build-standaline.sh

# 바이너리 위치: dist/rreader

i386 (32비트) 크로스 컴파일

Debian (glibc) Docker 컨테이너 안에서 PyInstaller를 사용하여 표준 32비트 Linux 배포판과 호환되는 i386 바이너리를 생성합니다.

Docker가 필요합니다.

cd rreader-python

# i386용 바이너리 빌드
./build-i386.sh

# 바이너리 위치: rreader-i386

Rust

git clone https://github.com/rainygirl/rreader
cd rreader/rreader-rust

# 릴리스 바이너리 빌드
cargo build --release

# 바이너리 위치: target/release/rreader

i386 (32비트) 크로스 컴파일

cross를 사용하여 정적 링크된 i386 바이너리를 빌드합니다. macOS와 Linux에서 동작하며, 구버전 glibc와 호환되는 바이너리를 생성합니다.

Docker가 필요합니다.

# cross 설치
cargo install cross --git https://github.com/cross-rs/cross

# i386용 정적 바이너리 빌드
cd rreader-rust
cross build --release --target i686-unknown-linux-musl

# 바이너리 위치: target/i686-unknown-linux-musl/release/rreader

RSS 피드

~/.rreader/feeds.json 파일에서 RSS 피드를 추가하거나 수정할 수 있습니다.

예시:

{
    "news": {
        "title": "Top News",
        "feeds": {
            "BBC": "http://feeds.bbci.co.uk/news/rss.xml",
            "CNN": "http://rss.cnn.com/rss/edition_world.rss"
        }
    },
    "tech": {
        "title": "Tech",
        "feeds": {
            "Hacker News": "https://news.ycombinator.com/rss",
            "TechCrunch": "http://feeds.feedburner.com/TechCrunch/"
        },
        "show_author": true
    }
}

단축키

동작
h, ? 도움말
, , j, k 목록 탐색
PgUp, PgDn 빠른 스크롤
Enter, o 브라우저에서 링크 열기
Tab, Shift+Tab 카테고리 전환
1-4 카테고리로 바로 이동
r 새로고침
g, G 맨 위/아래로 이동
q, Esc, Ctrl+C 종료

개발

Python

cd rreader-python

# 개발 의존성과 함께 설치
pip install -e ".[dev]"

# 코드 포맷팅
black src/

# 린트
ruff check src/

# 테스트 실행
pytest

Rust

cd rreader-rust

# 디버그 모드로 실행
cargo run

# 테스트 실행
cargo test

# 코드 검사
cargo clippy

기여

자유롭게 포크하고 기여해주세요!

라이선스

rReader는 MIT 라이선스로 배포됩니다.

크레딧

About

RSS reader client for CLI (Command Line Interface),

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors