Rblxify
Key RequiredUniversal

Rblxify

Universal Scriptladynoireladynoire 608 views 460 executesUpdated Dec 7, 2025
0.0/ 5(1 votes)
010% Positive
Lua Script•274 lines (10273 chars)
--[[
spotify into roblox
also .rbi files don't need to be in a folder because im lazy to reedit the code and i forgot folders (otherwise you could type folder/album.rbi)
to delete all songs and covers in your exploits workspace use _G.cleanup() in another script tab
before running the script theres a personal customization called getgenv().openimg and it only accepts rbxassetids even getcustomasset or official
also im a⁠ss at making guis
]]

local gui = Instance.new("ScreenGui")
gui.Name = "Rblxify"
gui.ResetOnSpawn = false
gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
gui.Parent = game:GetService("CoreGui")

local main = Instance.new("Frame", gui)
main.Size = UDim2.new(0,610,0,432)
main.Position = UDim2.new(0.5,-305,0.5,-216)
main.BackgroundColor3 = Color3.fromRGB(255,255,255)
main.BorderSizePixel = 0
main.Draggable = true
Instance.new("UICorner", main).CornerRadius = UDim.new(0,16)

local grad = Instance.new("UIGradient", main)
grad.Color = ColorSequence.new{
    ColorSequenceKeypoint.new(0,Color3.fromRGB(16,16,16)),
    ColorSequenceKeypoint.new(1,Color3.fromRGB(35,169,28))
}
grad.Rotation = 135

local title = Instance.new("TextLabel", main)
title.Size = UDim2.new(0,146,0,58); title.Position = UDim2.new(0,6,0,6)
title.BackgroundTransparency = 1; title.Text = "Rblxify"; title.TextColor3 = Color3.new(1,1,1)
title.TextScaled = true; title.TextXAlignment = "Left"; title.Font = Enum.Font.GothamBold

local titlegrad = Instance.new("UIGradient", title)
titlegrad.Color = ColorSequence.new{
    ColorSequenceKeypoint.new(0,Color3.fromRGB(16,16,16)),
    ColorSequenceKeypoint.new(1,Color3.fromRGB(35,169,28))
}
titlegrad.Rotation = 130

local album = Instance.new("Frame", main)
album.Size = UDim2.new(0,368,0,260); album.Position = UDim2.new(0,196,0,28)
album.BackgroundColor3 = Color3.fromRGB(255,255,255)
Instance.new("UICorner", album).CornerRadius = UDim.new(0,16)

local albumgrad = Instance.new("UIGradient")
albumgrad.Parent = album
albumgrad.Color = ColorSequence.new{
    ColorSequenceKeypoint.new(0,Color3.fromRGB(16,16,16)),
    ColorSequenceKeypoint.new(1,Color3.fromRGB(35,169,28))
}
albumgrad.Rotation = 90

local albumCover = Instance.new("ImageLabel", album)
albumCover.Size = UDim2.new(0,128,0,128); albumCover.Position = UDim2.new(0,22,0,16)

local list = Instance.new("ScrollingFrame", album)
list.Size = UDim2.new(0,180,0,218); list.Position = UDim2.new(0,170,0,22)
list.BackgroundColor3 = Color3.fromRGB(119,119,119); list.ScrollBarThickness = 4
Instance.new("UICorner", list).CornerRadius = UDim.new(0,16)

local current = Instance.new("Frame", main)
current.Size = UDim2.new(0,442,0,86); current.Position = UDim2.new(0,136,0,332)
current.BackgroundColor3 = Color3.fromRGB(73,73,73)
Instance.new("UICorner", current).CornerRadius = UDim.new(0,12)

local cover = Instance.new("ImageLabel", current)
cover.Size = UDim2.new(0,70,0,70); cover.Position = UDim2.new(0,6,0,6)

local songName = Instance.new("TextLabel", current)
songName.Size = UDim2.new(0.8,0,0.3,0); songName.Position = UDim2.new(0,92,0,10)
songName.BackgroundTransparency = 1; songName.TextColor3 = Color3.new(1,1,1)
songName.TextScaled = true; songName.Text = "Song name"

local durBG = Instance.new("Frame", current)
durBG.Size = UDim2.new(0.8,0,0,8); durBG.Position = UDim2.new(0,92,0,70)
durBG.BackgroundColor3 = Color3.fromRGB(50,50,50)
Instance.new("UICorner", durBG).CornerRadius = UDim.new(0,4)

local durFill = Instance.new("Frame", durBG)
durFill.Size = UDim2.new(0,0,1,0); durFill.BackgroundColor3 = Color3.fromRGB(35,169,28)
durFill.BorderSizePixel = 0
Instance.new("UICorner", durFill).CornerRadius = UDim.new(0,4)

local durText = Instance.new("TextLabel", current)
durText.Size = UDim2.new(0.8,0,0,20); durText.Position = UDim2.new(0,92,0,78)
durText.BackgroundTransparency = 1; durText.Text = "0:00 / 0:00"
durText.TextColor3 = Color3.new(1,1,1); durText.TextSize = 14

local prev = Instance.new("TextButton", current); prev.Size = UDim2.new(0,28,0,32); prev.Position = UDim2.new(0,100,0,50); prev.BackgroundTransparency = 1; prev.Text = "←"; prev.TextScaled = true; prev.TextColor3 = Color3.new(1,1,1)
local playbutton = Instance.new("TextButton", current); playbutton.Size = UDim2.new(0,28,0,32); playbutton.Position = UDim2.new(0,133,0,50); playbutton.BackgroundTransparency = 1; playbutton.Text = "▶️"; playbutton.TextScaled = true; playbutton.TextColor3 = Color3.new(1,1,1)
local next = Instance.new("TextButton", current); next.Size = UDim2.new(0,28,0,32); next.Position = UDim2.new(0,170,0,50); next.BackgroundTransparency = 1; next.Text = "→"; next.TextScaled = true; next.TextColor3 = Color3.new(1,1,1)

local input = Instance.new("TextBox", main)
input.Size = UDim2.new(0,144,0,38); input.Position = UDim2.new(0,10,0,86)
input.BackgroundColor3 = Color3.fromRGB(255,255,255); input.PlaceholderText = "album.rbi"

local loadBtn = Instance.new("TextButton", main)
loadBtn.Size = UDim2.new(0,144,0,38); loadBtn.Position = UDim2.new(0,12,0,154)
loadBtn.BackgroundColor3 = Color3.fromRGB(255,255,255); loadBtn.Text = "Stream Album"

local close = Instance.new("TextButton", main)
close.Size = UDim2.new(0,48,0,48); close.Position = UDim2.new(0,562,0,4)
close.BackgroundTransparency = 1; close.Text = "X"; close.TextScaled = true; close.TextColor3 = Color3.new(1,1,1)

local openerImg = Instance.new("ImageButton", gui)
openerImg.Size = UDim2.new(0,64,0,64); openerImg.Position = UDim2.new(0,226,0,434)
openerImg.BackgroundColor3 = Color3.fromRGB(42,106,47)
openerImg.Draggable = true
Instance.new("UICorner", openerImg).CornerRadius = UDim.new(1,8)
Instance.new("UIStroke", openerImg).Color = Color3.fromRGB(74,168,67)

-- cleanup function
_G.cleanup = function()
    local deleted = {
        songs = {},
        cov = {}
    }

    local files = listfiles("")

    for _, f in ipairs(files) do
        local name = f:match("[^/\\]+$")

        if not name then
            continue
        end

        local lower = name:lower()

        -- classify and delete
        if lower:sub(1, 4) == "song" then
            table.insert(deleted.songs, name)
            delfile(name)

        elseif lower:sub(1, 3) == "cov" then
            table.insert(deleted.cov, name)
            delfile(name)
        end
    end

    -- print results
    print("Deleted songs:")
    for _, f in ipairs(deleted.songs) do
        print("  • " .. f)
    end

    print("\nDeleted covers:")
    for _, f in ipairs(deleted.cov) do
        print("  • " .. f)
    end

    return deleted
end


-- logic for ending gracie abrams and blocking her
local HttpService = game:GetService("HttpService")
local RunService = game:GetService("RunService")
local sound = Instance.new("Sound", game.SoundService)
sound.Volume = 0.7

local queue = {}
local idx = 1
local curFile = nil
local curCover = nil
local curCoverFile = nil

album.Visible = false
current.Visible = false

local function loadImage(url, imageLabel)
    if not url or url == "" then
        imageLabel.Image = ""
        return
    end

    if curCoverFile and isfile(curCoverFile) then
        spawn(function()
            pcall(delfile, curCoverFile)
        end)
    end

    -- unique filename every time so script don't get confused
    local filename = "cov_" .. string.gsub(tostring(tick()), "%.", "") .. ".png"
    
    -- download the image 
    local success, imgData = pcall(function()
        return game:HttpGet(url, true)
    end)
    
    if not success or #imgData < 100 then  -- very small like your- ahem = probably failed
        imageLabel.Image = ""  -- leave blank if download failed
        return
    end

    writefile(filename, imgData)
    curCoverFile = filename
    imageLabel.Image = getcustomasset(filename)
end

local function updateDuration()
    if sound.TimeLength > 0 then
        local pos = sound.TimePosition
        local len = sound.TimeLength
        durFill.Size = UDim2.new(pos/len,0,1,0)
        durText.Text = string.format("%d:%02d / %d:%02d", pos/60, pos%60, len/60, len%60)
    end
end

local function play(i)
    if not queue[i] then return end
    idx = i
    local s = queue[i]

    curFile = "song_" .. string.gsub(tostring(tick()), "%.", "") .. ".mp3"
    writefile(curFile, game:HttpGet(s.song, true))
    sound.SoundId = getcustomasset(curFile)
    sound:Play()

    songName.Text = (s.name or "Unknown") .. "\n" .. (s.artist or "")
    loadImage(s.cover, cover)

    playbutton.Text = "▶️"
    durFill.Size = UDim2.new(0,0,1,0)
    durText.Text = "0:00 / 0:00"
end

loadBtn.MouseButton1Click:Connect(function()
    local f = input.Text
    if not f:lower():match("%.rbi$") then f = f..".rbi" end
    if not isfile(f) then input.Text = "Not found!"; return end

    local data = HttpService:JSONDecode(readfile(f))
    queue = data.songs or data

    album.Visible = true
    current.Visible = true
    loadImage(data.albumcover or data.cover or "", albumCover)

    list:ClearAllChildren()
    local y = 0
    for i,v in ipairs(queue) do
        local b = Instance.new("TextButton", list)
        b.Size = UDim2.new(1,-10,0,50); b.Position = UDim2.new(0,5,0,y)
        b.BackgroundTransparency = 0.9
        b.Text = (v.name or "Track "..i)..(v.artist and (" — "..v.artist) or "")
        b.TextColor3 = Color3.new(1,1,1); b.TextScaled = true
        b.MouseButton1Click:Connect(function() play(i) end)
        y = y + 55
    end
    list.CanvasSize = UDim2.new(0,0,0,y)
end)

playbutton.MouseButton1Click:Connect(function()
    if sound.IsPlaying then sound:Pause(); playbutton.Text = "▶️" else sound:Resume(); playbutton.Text = "⏸️" end
end)

prev.MouseButton1Click:Connect(function() if idx > 1 then play(idx-1) end end)
next.MouseButton1Click:Connect(function() if idx < #queue then play(idx+1) end end)
sound.Ended:Connect(function() if idx < #queue then play(idx+1) else playbutton.Text = "▶️" end end)

RunService.Heartbeat:Connect(updateDuration)

openerImg.Image = getgenv().openimg or _G.openimg or ""
openerImg.MouseButton1Click:Connect(function() main.Visible = true; openerImg.Visible = false end)
close.MouseButton1Click:Connect(function()
main.Visible = false
openerImg.Visible = true
end)

_G.ln = string.char(109,97,100,101,32,98,121)
_G.ladynoire = function(ln) return _G.ln .. string.char(32,108,97,100,121,32,110,111,105,114,101) end

Features & Information

spotify in roblox example of an .rbi file here: https://files.catbox.moe/h6fngi.txt

Community Comments (1)

ladynoireladynoireDec 7, 2025

the way *ody dared to comment like 🦗

More Scripts for Universal Scripts