Sem Panela
참석자 명단, 균형 잡힌 팀 추첨, 경기 비용 관리 기능을 제공합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Small runnable Python examples for the OddsRelay odds API: an oddsmatcher, an odds screen, a racing board, conditional polling and CSV export.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Small Python programs that read the OddsRelay odds API, one folder each.
Python 3.9 or later and nothing else: there are no packages to install. The one exception is
flumine-bookmaker-prices, which runs inside flumine (Python 3.10 or later). The three n8n- folders hold
n8n workflows instead, built on n8n's own HTTP Request node: import the JSON file into n8n. And
val-town-price-drops is a Val Town val in TypeScript, which runs on a schedule there.
| Folder | What it shows |
|---|---|
| oddsmatcher-50 | Each bookmaker back price on a matched board beside the lowest exchange lay price, sorted by a rating the script calculates. |
| odds-screen | The best back price for each selection across every venue on the raw board, and which venues offer it. |
| conditional-polling | Polling a board with ETag and If-None-Match: an unchanged board comes back as an empty 304 Not Modified that costs nothing. |
| csv-export | Any matched board written to CSV, one row per back or lay offer. |
| racing-board | The next races' prices from a racing board, posted to a Discord channel or a Telegram chat, and only when the board has changed. |
| flumine-bookmaker-prices | UK and Irish bookmakers' win prices beside Betfair's in a flumine strategy: a background worker polls the raw board and hands each new board to the strategy. |
| n8n-oddsmatcher-sheets | An n8n workflow that keeps a Google Sheet of bookmaker back prices beside the lowest exchange lay, rated: on a schedule it adds new rows, updates the ones it wrote before and removes those that have left the board. |
| n8n-back-lay-log-sheets | An n8n workflow that logs close back and lay pairs to Google Sheets, with a new row only when a pair is new or one of its prices has moved since its last row. |
| n8n-price-moves-telegram | An n8n workflow that sends a Telegram message when a bookmaker's price moves past a threshold you set, comparing each check with the last. |
| val-town-price-drops | A Val Town val that emails you, or posts to a webhook, when a bookmaker's price drops by a percentage you set since the last run. |
Sign up at app.oddsrelay.io/signup and copy your key from the dashboard. Free gives you 50,000 tokens for 14 days from sign-up, with no card, then no tokens until you choose a plan, on the same key. Plans and token prices.
export ODDSRELAY_KEY="your API key"
cd oddsmatcher-50
python3 main.py --sports tennis
Every script takes --help. The docs cover routes and parameters.
ODDSRELAY_KEY and sends it as Authorization: Bearer. It never goes in a URL and is
never printed.Accept-Encoding: gzip and unzips what comes back. Python's urllib asks for an uncompressed reply
unless told otherwise, and the standard, dutching and raw boards refuse that.quote=true, which costs nothing. If the request has a price, the script asks
before spending it; pass --max-tokens to set a ceiling and run without the prompt.429 for as long as Retry-After says, and stops on any other error with the API's error code
and request id. flumine-bookmaker-prices runs as a long-lived worker instead: it logs the error, clears its
bookmaker prices and polls again.The HTTP helper is api.py. Each folder keeps an identical copy, so any folder can be lifted out on its own.
The n8n workflows keep the key in an n8n Header Auth credential (x-api-key) and price each call with
quote=true before they read, stopping above the cap set in their Settings node. The two Google Sheets
workflows also try a failed call three times, then stop with the API's error code and request id. The Val Town
val reads the key from the val's environment variables and does the same against MAX_TOKENS_PER_RUN.
The tests run each example's logic on the response examples published in the API's OpenAPI file (fixtures/).
They make no network calls and need no key. The flumine example's tests are skipped unless flumine is installed
(pip install -r flumine-bookmaker-prices/requirements.txt).
for m in */main.py; do (cd "$(dirname "$m")" && python3 -m unittest -v) || break; done
for t in */test.mjs; do node --test "$t" || break; done
The second line runs the n8n workflows' Code nodes on the same fixtures (Node.js 18 or later), and the Val Town val with its storage and email stood in for (Node.js 22.18 or later, which runs TypeScript as it is).
pip install oddsrelaynpm install oddsrelay