CORS Unblockers:
Instruction Manuals (
If you have not installed the Kraker Local Proxy Server then please go read the Installation Manual.
Alleycat Player does not auto-update. Please check for an update every two to four weeks at the link shown above.
This application is a reduced implementation of Alleycat Player. YouTube, BitChute, Vimeo, InfoWars and Brighteon
are supported.
Internet TV is included but only a handful of channels. Also Internet Radio. There is just one video viewer instead of three.
Press the "End" key to go to the bottom of the page. Click a radio button to play the radio.
Here is a rundown of each site, the available video formats and the site URL (link will open a new tab or window):
YouTube | mp4/webm | * | [#] KRAK ! | www.youtube.com | |
BitChute | mp4 | ? | [#] Proxy | www.bitchute.com | |
Rumble | mp4/webm | * | [+] Proxy (DIG) | rumble.com | |
Vimeo | mp4 | * | [#] Proxy | vimeo.com | |
InfoWars | m3u8/mp4 | ? | [+] No Proxy | www.infowars.com | banned.video |
Brighteon | m3u8 | * | [+] KRAK ! | www.brighteon.com | www.naturalnews.com |
? = unknown or auto-select (m3u8/mpd)
* = user selectable (via format box)
! = use the Sandbox option to embed the video.
KRAK = only accessible with the Local Proxy Server (Kraker)
CORS = only accessible with a CORS unblocker (or Kraker)
Format (m3u8) Use Proxy Allow Multiple No Play Raw Sandbox |
No Video |
Talk Radio | Cool Music | Funky Music | Just Garbage | More Garbage |
---|---|---|---|---|
Fox News Talk
Talk Radio UK Conservative Radio WABC Talk Radio Republic Broadcasting American Family Radio The Blaze Radio Red State Talk The Fringe FM Truth Frequency Radio Dark Matter Digital Devil's Advocates Radio Voice America BBS Talk Radio 1 BBS Talk Radio 2 InfoWars - Alex Jones InfoWars - Harrison Smith InfoWars - Owen Shroyer |
Star FM Rock Classics
Rockin Doc Radio Lynx Classic Rock Rock Radio Gem Radio New Wave Retro Hits Dance Wave Salsa Mexico Disco Classics Radio Lounge Radio Absolute Trance Radio Starlite Radio |
Virtual DJ: ClubZone
Virtual DJ: TheGrind Virtual DJ: Hypnotica Virtual DJ: PowerBase Radio Free Americana Venice Classic Radio Italia Tropicalisma FM Rockabilly Radio Dandelion Radio Entranced FM Toxxic Radio Radio Swiss Jazz |
BBC Radio 1
BBC Radio 1-Extra BBC Radio 2 BBC Radio 3 BBC Radio 4 BBC Radio 4-Extra BBC Radio 5-Live BBC Radio 6-Music Nashville FM Country Power Station Old School Hip-Hop Wu World Radio |
Radio El Dorado
Asia Dream Radio Streaming Sound Tracks Radio Africa Online Radio Mi Amigo Int'l Nagaswara FM Schlager Time iRie Rockers Company Radio SRC FM Rahva Radio Splinterwood |
"; var specs = "width=400,height=240,top=100,left=100"; var win = window.open ("about:blank", "", specs), doc = win.document; win.focus(); doc.open(); doc.write (insert); doc.close(); doc = doc.body; doc.onresize = function() { var w = doc.clientWidth, h = doc.firstChild.clientHeight; if (w <= 0 || h <= 0) return; if (!this.count) this.count = 0; w = 400 - w; h = 240 - h; if (++this.count > 3) w = h = 0; if (w || h) win.resizeBy (w, h); else { doc.onresize = null; download_m3u8 (win, doc, aud, vid); } } doc.onresize(); } //////////////////// const download_m3u8 = async (win, doc, aud, vid) => { var i, j, k, resp, data, str, url, header; var src, sub, name, count, errors, msg = "DONE"; var button = doc.getElementsByTagName ("button")[0]; var status = doc.getElementsByTagName ("input"); status[0].value = aud ? "Pending" : "No Track"; status[1].value = vid ? "Pending" : "No Track"; var fname = "+" + button.value; if (cookies [fname]) { button.innerText = "GO AWAY"; return; } cookies [fname] = "ok"; try { for (i = 0; i < 2; i++) { name = fname + (i ? "-vid" : "-aud"); try { resp = await fetch (name, { method: 'PUT' } ); } catch(e) { resp = ""; } if (!resp || resp.status != 200) throw ("Error writing file"); src = i ? vid : aud; if (!src) continue; for (k = 1; k < 5; k++) { try { resp = await fetch (src); data = await resp.text(); } catch(e) { resp = ""; } if (resp && resp.status == 200) break; if (k > 3) throw ("Error loading m3u8"); } k = data.indexOf ("#EXT-X-ENDLIST"); if (k < 0) k = data.length; sub = data.substr (0, k).split ("#EXTINF:"); count = errors = 0; for (j = 1; j < sub.length; j++) { url = ""; header = {}; str = sub [j].split ("\n"); for (k = str.length - 1; k > 0; k--) { if (!str [k]) { str.splice (k, 1); continue; } if (!url && str [k][0] != "#") url = str [k]; } if (!url) continue; url = merge_url (src, url) + url; if ((k = str [1].indexOf ("#EXT-X-BYTERANGE:")) >= 0) { str = str [1].substr (k + 17).split ("@"); k = str [0] * 1 + str [1] * 1 - 1; str = str [1] + "-" + k; header = { headers: { Range: "bytes=" + str }}; } for (k = 1; k < 5; k++) { if (!button.value) throw ("STOPPED"); try { resp = await fetch (url, header); data = await resp.arrayBuffer(); } catch(e) { resp = ""; } if (resp && (resp.status == 200 || resp.status == 206)) { await fetch ("~+" + name, { method: 'PUT', body: data } ); status[i].value = ++count + " of " + (sub.length - 1); if (errors > 0) errors--; break; } if (k > 3) { console.log ("Error loading segment " + j + " in " + name); if (++errors > 2) throw ("Server not responding"); } } } } } catch (err) { msg = err; } button.innerText = msg; cookies [fname] = ""; } ////////////////////