Merged in silvernode (pull request #9)

Implemented audio format selection for mp3, ogg, and flac
This commit is contained in:
logen_kain 2013-07-31 16:15:43 -05:00
commit d7d3cc53bf
5 changed files with 84 additions and 16 deletions

View File

@ -1,4 +1,5 @@
#Mandy #Mandy - current version: 0.5.0
##About ##About
@ -20,6 +21,8 @@ Current platforms: Linux(x86/x64)
![progressbar][4] ![progressbar][4]
![converting][8]
##Installation ##Installation
@ -212,11 +215,12 @@ Thanks!
[1]: http://lua.org [1]: http://lua.org
[2]: http://www.tecgraf.puc-rio.br/iup/ [2]: http://www.tecgraf.puc-rio.br/iup/
[3]: http://i.imgur.com/ol0ZRUp.png [3]: http://i.imgur.com/P2rMTiM.png
[4]: http://i.imgur.com/wpoVeXZ.png [4]: http://i.imgur.com/1AcLZk6.png
[5]: http://sourceforge.net/projects/iup/files/ [5]: http://sourceforge.net/projects/iup/files/
[6]: http://sourceforge.net/projects/canvasdraw/files/ [6]: http://sourceforge.net/projects/canvasdraw/files/
[7]: http://sourceforge.net/projects/imtoolkit/files/ [7]: http://sourceforge.net/projects/imtoolkit/files/
[8]: http://i.imgur.com/XrmwZrX.png

View File

@ -2,7 +2,7 @@ TODO:
key: + = to add, - = to remove, x = completed, # = comment key: + = to add, - = to remove, x = completed, # = comment
+Add option for multiple audio formats xAdd option for multiple audio formats
+Dynamic libraries +Dynamic libraries
+Create custom url entry dialog +Create custom url entry dialog
+Create dialog asking to play finished file or not +Create dialog asking to play finished file or not

17
changelog.txt Normal file
View File

@ -0,0 +1,17 @@
***CHANGELOG***
Version 0.5.0 (7-31-13)
*added audio format selection for mp3. ogg, and flac
-autoplay has been removed, users now play files manually
Version 0.4 (7-27-13)
+ fixed media player error when opening finished file
+ fixed .mp3 validation
+ cancel button now works properly in url entry box
* added progress bar for conversion process
* added push notifications
* files now open with default media player not vlc

0
main.lua Executable file → Normal file
View File

View File

@ -7,8 +7,13 @@ require('ffmpeg_progress')
--Main url entry box --Main url entry box
function url_entry() function url_entry()
res, url = iup.GetParam("Mandy 0.4 - Enter URL", nil, local url = ""
"Enter Youtube URL: %s\n", "") local format = 0
res, url, format = iup.GetParam("Mandy 0.5.0 - Enter URL", nil,
"Enter Youtube URL: %s\n"..
"Select an audio format: %l|mp3|ogg|flac|\n", url, format)
gFormat = sel_Codec(format)
if res == true then if res == true then
if string.match(url, "youtube.com/watch") then if string.match(url, "youtube.com/watch") then
return url return url
@ -23,28 +28,43 @@ function url_entry()
end end
--Ask user to select a codec --make format dropdown menu items work
function sel_Codec() function sel_Codec(x)
if x == 0 then
local mp3 = ".mp3"
print("Selected "..mp3)
return mp3
elseif x == 1 then
local ogg = ".ogg"
print("Selected "..ogg)
return ogg
elseif x == 2 then
local flac = ".flac"
print("Selected "..flac)
return flac
end
end end
--Ask user to set directory --Ask user to set directory
function set_dir() function set_dir()
getPath = iup.filedlg{dialogtype = "SAVE", title="Save file...", getPath = iup.filedlg{dialogtype = "SAVE", title="Save file...",
filter="*.mp3", filterinfo="mp3", filter="*.mp3; *.ogg; *.flac",
directory=".", directory=".",
file="*.mp3"} file=""}
getPath:popup(iup.ANYWHERE, iup.ANYWHERE) getPath:popup(iup.ANYWHERE, iup.ANYWHERE)
local status = getPath.status local status = getPath.status
if status == "1" or status == "0" then if status == "1" or status == "0" then
if string.match(getPath.value, "%.mp3") then if string.match(getPath.value, "%"..gFormat) then
local savedPath = getPath.value local savedPath = getPath.value
return savedPath return savedPath
else else
local savedPath = getPath.value..".mp3" local savedPath = getPath.value..gFormat
return savedPath return savedPath
end end
@ -66,13 +86,40 @@ function ytDl(x)
return tmpPath2 return tmpPath2
end end
--optional function to implement autoplay
function ask_play(x)
play = ""
res, play = iup.GetParam("Play now?", nil,
"Do you want to play the file now? %t\n", play)
if res == true then
io.popen("notify-send 'The file was saved to' "..x)
io.popen("xdg-open "..x)
else
return false
end
end
function ffmpeg(tmpPath, dirD) function ffmpeg(tmpPath, dirD)
local subSpaces = string.gsub(dirD, " ", "\\ ")
local mp3 = "ffmpeg -i "..tmpPath.." -acodec libmp3lame -ac 2 -ab 192k -vn -y "..subSpaces local subSpaces = string.gsub(dirD, " ", "\\ ")
local mp3 = "ffmpeg -i "..tmpPath.." -acodec libmp3lame -ac 2 -ab 192k -vn -y "..subSpaces
local ogg = "ffmpeg -i "..tmpPath.." -acodec libvorbis -ac 2 -ab 192k -vn -y "..subSpaces
local flac = "ffmpeg -i "..tmpPath.." -acodec flac -ac 2 -ab 192k -vn -y "..subSpaces
if gFormat == ".mp3" then
local flag = convert_mp3.go(mp3) local flag = convert_mp3.go(mp3)
if not flag then return false end elseif gFormat == ".ogg" then
local flag = convert_mp3.go(ogg)
elseif gFormat == ".flac" then
local flag = convert_mp3.go(flac)
else
if not flag then return false end
end
io.popen("notify-send 'The file was saved to' "..subSpaces) io.popen("notify-send 'The file was saved to' "..subSpaces)
io.popen("xdg-open "..subSpaces)
end end
--put everything into a table to use local functions globally --put everything into a table to use local functions globally