AUDIO CATALOG V2
Key RequiredUniversal

AUDIO CATALOG V2

Universal ScriptSkibidigionSpyMegaSkibidigionSpyMega 832 views 176 executesUpdated Feb 6, 2026
Unrated
00
Lua Script•165 lines (5496 chars)
local AssetService = game:GetService("AssetService")
local SoundService = game:GetService("SoundService")
local Players = game:GetService("Players")

local Player = Players.LocalPlayer
local PlayerGui = Player:WaitForChild("PlayerGui")

if PlayerGui:FindFirstChild("MiniFixHub") then PlayerGui.MiniFixHub:Destroy() end

local ScreenGui = Instance.new("ScreenGui", PlayerGui)
ScreenGui.Name = "MiniFixHub"
local Preview = Instance.new("Sound", SoundService)

local CurrentPages = nil
local PageNum = 1

-- MAIN FRAME (Mini & Smooth Drag)
local Main = Instance.new("Frame", ScreenGui)
Main.Size = UDim2.new(0, 220, 0, 260)
Main.Position = UDim2.new(0.5, -110, 0.2, 0)
Main.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
Main.ClipsDescendants = true 
Main.Active = true
Main.Draggable = true -- Standard drag for mobile

local Stroke = Instance.new("UIStroke", Main)
Stroke.Color = Color3.fromRGB(0, 255, 150)
Stroke.Thickness = 2
Instance.new("UICorner", Main)

-- TOP BAR
local SearchBox = Instance.new("TextBox", Main)
SearchBox.Size = UDim2.new(0, 140, 0, 30)
SearchBox.Position = UDim2.new(0, 5, 0, 5)
SearchBox.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
SearchBox.PlaceholderText = "Search..."
SearchBox.TextColor3 = Color3.new(1, 1, 1)
SearchBox.TextSize = 12
Instance.new("UICorner", SearchBox)

local StopBtn = Instance.new("TextButton", Main)
StopBtn.Size = UDim2.new(0, 60, 0, 30)
StopBtn.Position = UDim2.new(1, -65, 0, 5)
StopBtn.BackgroundColor3 = Color3.fromRGB(150, 0, 0)
StopBtn.Text = "STOP"
StopBtn.TextColor3 = Color3.new(1, 1, 1)
Instance.new("UICorner", StopBtn)

-- SCROLL AREA
local Scroll = Instance.new("ScrollingFrame", Main)
Scroll.Size = UDim2.new(1, -10, 0, 110)
Scroll.Position = UDim2.new(0, 5, 0, 40)
Scroll.BackgroundTransparency = 1
Scroll.ScrollBarThickness = 2
Scroll.CanvasSize = UDim2.new(0, 0, 0, 0)
local Layout = Instance.new("UIListLayout", Scroll)
Layout.Padding = UDim.new(0, 3)

-- ID BOX
local Info = Instance.new("Frame", Main)
Info.Size = UDim2.new(1, -10, 0, 40)
Info.Position = UDim2.new(0, 5, 0, 155)
Info.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
Instance.new("UICorner", Info)

local IdDisplay = Instance.new("TextBox", Info) 
IdDisplay.Size = UDim2.new(1, -10, 0, 30)
IdDisplay.Position = UDim2.new(0.5, -100, 0.5, -15)
IdDisplay.BackgroundColor3 = Color3.fromRGB(10, 10, 10)
IdDisplay.Text = "ID WILL SHOW"
IdDisplay.TextColor3 = Color3.fromRGB(255, 255, 0)
IdDisplay.ClearTextOnFocus = false
IdDisplay.TextEditable = true
Instance.new("UICorner", IdDisplay)

-- THE FIXED PAGINATION ( < 1 > )
local Footer = Instance.new("Frame", Main)
Footer.Size = UDim2.new(1, 0, 0, 35)
Footer.Position = UDim2.new(0, 0, 1, -40)
Footer.BackgroundTransparency = 1

local Prev = Instance.new("TextButton", Footer)
Prev.Name = "PrevBtn"
Prev.Text = "<"
Prev.Size = UDim2.new(0, 40, 0, 30)
Prev.Position = UDim2.new(0, 10, 0, 0)
Prev.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
Prev.TextColor3 = Color3.new(1, 1, 1)
Instance.new("UICorner", Prev)

local Next = Instance.new("TextButton", Footer)
Next.Name = "NextBtn"
Next.Text = ">"
Next.Size = UDim2.new(0, 40, 0, 30)
Next.Position = UDim2.new(1, -50, 0, 0)
Next.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
Next.TextColor3 = Color3.new(1, 1, 1)
Instance.new("UICorner", Next)

local PageLbl = Instance.new("TextLabel", Footer)
PageLbl.Size = UDim2.new(1, -100, 1, 0)
PageLbl.Position = UDim2.new(0, 50, 0, -5)
PageLbl.Text = "Page 1"
PageLbl.TextColor3 = Color3.new(1, 1, 1)
PageLbl.BackgroundTransparency = 1

--- LOGIC ---

local function ClearList()
    for _, v in pairs(Scroll:GetChildren()) do if v:IsA("Frame") then v:Destroy() end end
end

local function LoadCurrent()
    ClearList()
    local data = CurrentPages:GetCurrentPage()
    for _, audio in pairs(data) do
        local id = audio.AssetId or audio.assetId or audio.Id or audio.id
        local Row = Instance.new("Frame", Scroll)
        Row.Size = UDim2.new(1, -5, 0, 30)
        Row.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
        Instance.new("UICorner", Row)
        
        local B = Instance.new("TextButton", Row)
        B.Size = UDim2.new(1, 0, 1, 0); B.BackgroundTransparency = 1; B.TextColor3 = Color3.new(1, 1, 1)
        B.Text = " " .. audio.Title; B.TextXAlignment = "Left"; B.TextTruncate = "AtEnd"; B.TextSize = 10

        B.MouseButton1Click:Connect(function()
            Preview:Stop()
            Preview.SoundId = "rbxassetid://" .. tostring(id)
            Preview:Play()
            IdDisplay.Text = tostring(id)
        end)
    end
    Scroll.CanvasSize = UDim2.new(0, 0, 0, Layout.AbsoluteContentSize.Y)
    PageLbl.Text = "Page " .. PageNum
end

local function NewSearch(q)
    local p = Instance.new("AudioSearchParams"); p.SearchKeyword = q
    local s, r = pcall(function() return AssetService:SearchAudio(p) end)
    if s and r then
        CurrentPages = r
        PageNum = 1
        LoadCurrent()
    end
end

SearchBox.FocusLost:Connect(function(e) if e then NewSearch(SearchBox.Text) end end)
StopBtn.MouseButton1Click:Connect(function() Preview:Stop() end)

-- FIXED BUTTON LOGIC
Next.MouseButton1Click:Connect(function()
    if CurrentPages and not CurrentPages.IsFinished then
        CurrentPages:AdvanceToNextPageAsync()
        PageNum = PageNum + 1
        LoadCurrent()
    end
end)

Prev.MouseButton1Click:Connect(function()
    if PageNum > 1 then
        -- Roblox API workaround: Restart and skip (simplified here as refresh)
        NewSearch(SearchBox.Text)
    end
end)

Features & Information

Roblox store this like Audio catalog on client do those things like listen music copy the id and scroll down click for next page everything like Roblox execpt 2 features
#Audio catalog#Audio#Audio searcher#Audio search helper

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts