-- take note of YtLink, I keep passing it around in order to show it as the title bar -- of the download window, YOU WILL HAVE TO PAY ATTENTION TO IT -- IT GOES THROUGH FUCKING EVERYTHING -- Also it will be replaced by what the user saves the file as -- keep that in mind as well require ('iuplua') local cancelflag --set variable local downloadProgress --set variable local function downloadStart(YtLink) --create button and cancle flag cancelButton = iup.button{ title = "Cancel", action = function() cancelflag = true --return iup.CLOSE --not sure if needed end } local downloadProgress = iup.progressbar{expand="HORIZONTAL", MARQUEE="YES"} local dlgProgress = iup.dialog{ --create main window title = YtLink, dialogframe = "YES", border = "YES", iup.vbox { -- create vbox that contains said objects downloadProgress, cancelButton, } } dlgProgress.size = "QUARTERxEIGHT" --should be size of dialog box -- dlgProgress.menubox = "NO" -- no windows menus dlgProgress.close_cb = cancelButton.action -- calls the action of the button dlgProgress:showxy(iup.CENTER, iup.CENTER) -- show and position box return dlgProgress end local function DL_progress(YtLink) -- monitor download progress downloadStart(YtLink) -- start the progress bar -- downloadProgress.value = 0 -- local pipe = io.popen(YtLink) os.execute(YtLink) --[[repeat local c = pipe:read() -- read the first 20 characters of each line if c then -- if c is true then... --downloadProgress.value = c/100 -- x out of 100 -- in this case x is the progress -- data we grabbed iup.Flush() -- speeds everything up considerably -- when changing an attribute of an element, the change may not -- take place immediately -- in that case throw in a flush after the change iup.LoopStep() -- required to work, also allows user to click button iup.Flush() -- added this second flush... helps a shit ton if cancelflag then -- if cancelflag is true, then break -- which happens if you click the button iup.Message("Terminated", "You have canceled the conversion") iup.Flush() break end end until not c-- creating a loop until c is not true pipe:close() -- closing the ipopen--]] iup.Close() end convert_mp3 = {} convert_mp3.go = function(tubeLink) DL_progress(tubeLink) end --if you can have your script call this one and insert the link to YtLink... win --local YtLink = ('http://www.youtube.com/watch?v=jrmlums5bV8') --DL_progress( YtLink)