Recursively searches and inspects directory trees inside the host GitHub repository directly on the edge.
Ideal for dynamically discovering script files, themes, and configuration assets.
Query Parameters
Parameter
Type
Required
Description
folder
string
No
Target directory path to inspect (e.g. OtherScripts, Themes, or functions/api).
search
string
No
Fuzzy search keyword to filter paths and file names dynamically.
local HttpService = game:GetService("HttpService")
local ApiUrl = "https://horomoris-skidding-archives.pages.dev/api/files?folder=OtherScripts"
local success, response = pcall(function()
return HttpService:GetAsync(ApiUrl)
end)
if success then
local data = HttpService:JSONDecode(response)
print("Found " .. tostring(data.count) .. " files in repository:")
for _, item in ipairs(data.items) do
print("[" .. item.type:upper() .. "]", item.path, "(" .. tostring(item.size or 0) .. " bytes)")
end
else
warn("Failed to fetch repository files:", response)
end
// Fetch files filtered by directory or keyword
async function getRepoFiles(folder = 'OtherScripts', search = '') {
const params = new URLSearchParams({ folder, search });
const res = await fetch(`https://horomoris-skidding-archives.pages.dev/api/files?${params}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
console.log(`Discovered ${data.count} items:`, data.items);
return data.items;
}
getRepoFiles('Themes').then(files => console.log(files));
Returns raw UTF-8 text contents from any file inside the repository without base64 decoding hassle.
Perfect for direct execution with Roblox loadstring().
Query Parameters
Parameter
Type
Required
Description
path
string
Yes
Relative file path inside repository (e.g. OtherScripts/Fly.lua or README.md).
Usage Examples
local targetPath = "OtherScripts/InfiniteYield.lua"
local rawUrl = "https://horomoris-skidding-archives.pages.dev/api/content?path=" .. game:GetService("HttpService"):UrlEncode(targetPath)
-- Direct execution via loadstring:
loadstring(game:HttpGet(rawUrl))()
-- Or read raw text contents:
local rawCode = game:HttpGet(rawUrl)
print("Fetched file source (" .. #rawCode .. " characters)")
async function fetchFileContent(filePath) {
const url = `https://horomoris-skidding-archives.pages.dev/api/content?path=${encodeURIComponent(filePath)}`;
const res = await fetch(url);
if (!res.ok) throw new Error(`File not found: ${filePath}`);
const rawText = await res.text();
console.log('File Content:\n', rawText);
return rawText;
}
fetchFileContent('OtherScripts/SimpleESP.lua');
Edge proxy function deployed via beatmaps.js on Cloudflare Pages.
It routes queries across multiple fallback mirrors (Nerinyan, Catboy, Hinamizawa AI, and official osu! endpoints)
for beatmap searches, .osz archive downloads, MP3 preview audio streaming, and album cover thumbnail retrieval.
Supported Actions
Action
Endpoints / Parameters
Description
action=search
q (query), mode (0-3), limit
Searches for beatmaps across Nerinyan, Catboy, and Hinamizawa mirrors. Returns JSON array.
action=download / osz
id or setId (numeric ID)
Proxies direct .osz archive download with automatic mirror failovers and attachment headers.
action=audio / preview
id or setId (numeric ID)
Proxies raw audio/mpeg audio stream for browser or player playback.
action=cover / image
id or setId (numeric ID)
Proxies image/jpeg cover card or thumbnail artwork.
Use parameter mode or m:
0 = osu!standard,
1 = osu!taiko,
2 = osu!catch,
3 = osu!mania (default).
Usage Examples
local HttpService = game:GetService("HttpService")
local BaseUrl = "https://horomoris-skidding-archives.pages.dev/api/beatmaps"
-- 1. Search for osu!mania beatmaps (mode = 3)
local searchUrl = string.format("%s?action=search&q=%s&mode=3&limit=5", BaseUrl, HttpService:UrlEncode("xi"))
local success, response = pcall(function()
return HttpService:GetAsync(searchUrl)
end)
if success then
local maps = HttpService:JSONDecode(response)
for _, map in ipairs(maps) do
local id = map.id or map.beatmapset_id or map.setId
local title = map.title or "Unknown"
local artist = map.artist or "Unknown"
print(string.format("[%s] %s - %s", tostring(id), artist, title))
-- Audio preview URL:
local audioUrl = string.format("%s?action=audio&id=%s", BaseUrl, tostring(id))
print(" -> Preview Audio: " .. audioUrl)
end
else
warn("Beatmaps search failed:", response)
end
const API_BASE = "https://horomoris-skidding-archives.pages.dev/api/beatmaps";
// 1. Search beatmaps
async function searchBeatmaps(query, mode = 3) {
const res = await fetch(`${API_BASE}?action=search&q=${encodeURIComponent(query)}&mode=${mode}`);
const maps = await res.json();
return maps;
}
// 2. Play Audio Preview in browser
function playPreview(beatmapSetId) {
const audio = new Audio(`${API_BASE}?action=audio&id=${beatmapSetId}`);
audio.play();
return audio;
}
// 3. Download .osz Archive
function downloadOsz(beatmapSetId) {
window.open(`${API_BASE}?action=download&id=${beatmapSetId}`, '_blank');
}
import requests
BASE_URL = "https://horomoris-skidding-archives.pages.dev/api/beatmaps"
# 1. Search beatmaps
def search_beatmaps(query, mode=3, limit=10):
params = {"action": "search", "q": query, "mode": mode, "limit": limit}
r = requests.get(BASE_URL, params=params)
return r.json() if r.status_code == 200 else []
# 2. Download .osz package
def download_beatmap(set_id, filename=None):
filename = filename or f"{set_id}.osz"
params = {"action": "download", "id": set_id}
with requests.get(BASE_URL, params=params, stream=True) as r:
if r.status_code == 200:
with open(filename, "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
print(f"Downloaded {filename}")
This page uses the same archive host referenced by the original HTML:
https://horomoris-skidding-archives.pages.dev/.
The random image loader specifically queries /api/files?folder=assets/images.
Repository · /OtherStuff
Stuff
Website cards show the rendered page contents. Clicking a card only opens that site in a new window.
Scanning /OtherStuff…
Repository · /WebportSlop
webport slop
Finds every index.html inside /WebportSlop and gives each game three ways to launch it.