
KeylessUniversal

--[[
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 ass 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



the way *ody dared to comment like 🦗