openjutsu
영상에서 원클릭으로 인물 교체, ComfyUI·MiniMax H3 기반 오픈소스 로컬 힉스필드 겐주츠 대안, FLUX.3 Klein 재조명 지원
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A web radio that runs entirely in the browser, live at https://radio.sala.company (GitHub Pages). It's styled after a 10-band shortwave portable, and it's the radio counterpart of M3U TV (video.sala.company).
| Source | How it loads |
|---|---|
| Radio Browser (radio-browser.info), the default | Live API: top voted, most listened, trending, by country, genre, language or name. Only stations that passed Radio Browser's own check are loaded. |
| junguler/m3u-radio-music-playlists | Genre M3U files read straight from GitHub (the genre menu comes from the GitHub API). |
| SomaFM | Official channel API. |
| Mirrored lists | Lists whose servers block browsers (no CORS) are copied into the published site by the deploy workflow once a day. Add more in lists/sources.json. |
| Your own | Any M3U/PLS URL, an uploaded file, or pasted text. ?m3u=<url> adds a list from a link. |
<audio> element checks whether audio actually starts, which also catches CDNs that cut off plain reads.status-json.xsl and Shoutcast /currentsong.
| On the radio | What it does |
|---|---|
| Band strip / BAND knob | Your station lists: FM = 1st, MW = 2nd, SW1–SW8 = the next eight |
| TUNING knob / scale | Moves through the stations; tunes in when you stop. Click the scale to jump. |
| ⏮ ⏸ ⏹ ⏭ under the dial | Previous · pause / play · stop · next |
| 🔊 · ● LIVE · ☆ | Mute · back to live · favorite |
| VOLUME knob | Volume |
| POWER switch | Play / stop |
| SENS DX / LOCAL | DX shows every station. LOCAL hides stations that are off air or blocked. |
| ⏾ Sleep (with the play controls) | 30 minutes to 3 hours in 30-minute steps, with a live countdown; at zero the sound fades out and the radio turns off |
| MEMORY · LIGHT | Favorite · dial lamp and effects |
| TUNE light | Green = playing, amber = tuning, buffering or paused, red = no signal |
#, so nothing is sent to any server) that carries your favorite stations, or a list, to another phone or person; opening it offers to add them. Big lists share their source instead of their contents.sw.js) keeps the app's own files in the browser, so the site opens instantly and still opens with no network, showing your lists, favorites and songs heard (streams need network). The page is fetched fresh whenever the network answers within 4 seconds, so updates arrive normally.radio-relay, a Cloudflare Worker (relay/relay.js, deployed at radio-relay.jamal-akuna-matata.workers.dev) that passes the audio through unchanged and adds the headers. Direct always goes first; the dial's LINK cell says RELAY when it's in use. HLS streams aren't relayed.Plain HTML, CSS and JS, with no build step. The scripts in js/ share one global scope and load in order:
| File | What's in it |
|---|---|
core.js | Storage, helpers, app state |
lists.js | List sources, parsing, the Add-list dialog |
health.js | Status badges and the stream tester |
guide.js | Station guide, filters, search and browsing |
radio.js | Dial, knobs, display, sleep timer, phone mini-player |
player.js | Playback, reconnecting, pause / mute / live, lock-screen controls |
nowplaying.js | Song titles and the songs-heard log |
car.js | Small phones: the push-button car radio and the station picker |
ipod.js | The iPod look: click wheel, menus, Now Playing; two-page layout on wide screens |
app.js | Station details, favorites, backup, settings, wiring, start-up |
hls.js loads from jsDelivr only when an HLS station plays.
.github/workflows/pages.yml publishes the site on every push to main and once a day. The daily run also refreshes the mirrored lists. In the repo's Settings → Pages, the source must be GitHub Actions. The custom domain comes from the CNAME file and the Pages settings.