Merge branch 'silvernode' into testing

This commit is contained in:
silvernode 2013-08-06 22:35:28 -05:00
commit 652055d6bd
6 changed files with 108 additions and 46 deletions

View File

@ -1,4 +1,5 @@
#Mandy - current version: 0.5.0
#Mandy
###current version: 0.6.0
##About
@ -6,7 +7,7 @@
Mandy is a script written in [Lua][1] using the [IUP][2] GUI toolkit. The
purpose of Mandy is to provide a simple interface for downloading
youtube videos and converting them to different audio formats.
Currently only mp3 format is supported.
Mandy currently relies on youtube-dl and ffmpeg for video downloading and
converting however, if native libraries surface in the future the
@ -215,7 +216,7 @@ Thanks!
[1]: http://lua.org
[2]: http://www.tecgraf.puc-rio.br/iup/
[3]: http://i.imgur.com/P2rMTiM.png
[3]: http://i.imgur.com/btD0dJc.png
[4]: http://i.imgur.com/1AcLZk6.png
[5]: http://sourceforge.net/projects/iup/files/
[6]: http://sourceforge.net/projects/canvasdraw/files/

View File

@ -2,16 +2,15 @@ TODO:
key: + = to add, - = to remove, x = completed, # = comment
xAdd option for multiple audio formats
+Dynamic libraries
+Create custom url entry dialog
+Create dialog asking to play finished file or not
+Fix FFMPEG MARQUEE bar
xMake cancel button exit in url dialog
xFix progress bar cancel button
xDisplay current action in progressbar instead of youtube link itself
xUrl validation
xplace spaces in file name with dashes/underscores
xAppend extensions to file name in save dialog unless exists
x Add option for multiple audio formats
+ Dynamic libraries/package IUP
x Option play file once finished
+ Fix FFMPEG MARQUEE bar
x Make cancel button exit in url dialog
x Fix progress bar cancel button
x Display current action in progressbar instead of youtube link itself
x Url validation
x place spaces in file name with dashes/underscores
x Append extensions to file name in save dialog unless exists
+Percentage in progress bar --- not possible with iUP
#possibly more later

View File

@ -1,7 +1,16 @@
***CHANGELOG***
Version 0.6.0 (8-5-13)
* Set the default settings in 'mandy.cfg'
* Can now select audio bitrate
* Autoremove old video files from /tmp
* Added option to play completed file
- Still unknown bug with 'converting' bar
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

View File

@ -1,4 +1,4 @@
#!/usr/bin/lua5.2
#!/usr/bin/env lua
require("mandy")
dofile("mandy.cfg")
function main()

View File

@ -1,6 +1,11 @@
cfg_table = {
format = "ogg" -- 0 for mp3, 1 for ogg, 2 for flac
--Change default audio format and bitrate within the quotes
--Values for format: mp3, ogg, flac
--Values for bitrate: 320k, 192k, 160k, 128k, 96k
format = "ogg",
bitrate = "320k",
playFile = "no",
}

106
mandy.lua
View File

@ -1,4 +1,4 @@
#!/usr/bin/lua5.2
#!/usr/bin/env lua
require("iuplua")
require("iupluacontrols")
@ -7,24 +7,31 @@ require('ffmpeg_progress')
--Main url entry box
function url_entry()
local format = sel_format()
local bitRate = sel_bitrate()
local url = ""
local playNow = sel_play()
local changeLog = "* Set the default settings in 'mandy.cfg'\n"..
"* Can now select audio bitrate\n"..
"* Autoremove old video files from /tmp\n"..
"* Added option to play completed file\n"..
"- Still unknown bug with 'converting' bar\n"
res, url, format = iup.GetParam("Mandy 0.5.0 - Enter URL", nil,
res, url, format, bitRate, playNow, changeLog = iup.GetParam("Mandy 0.6.0 (alpha)", nil,
"Enter Youtube URL: %s\n"..
"Select an audio format: %l|mp3|ogg|flac|\n", url, format)
"Audio Options %t\n"..
"Select an audio format: %l|mp3|ogg|flac|\n"..
"Select the bitrate: %l|320 kbps|192 kbps|160 kbps|128 kbps|96 kbps|\n"..
"Play file when finished?: %l|no|yes|\n"..
"Changelog: %m\n",
url, format, bitRate, playNow, changeLog)
gPlay = ask_play(playNow)
gFormat = sel_Codec(format)
gBitrate = bit_logic(bitRate)
if res == true then
if string.match(url, "youtube.com/watch") then
local format_config = io.open("Config.txt", "w")
format_config:write("local format = "..format)
format_config:close()
return url
else
iup.Message("Error", "The URL is not a youtube link")
@ -48,6 +55,26 @@ function sel_format()
end
end
function sel_bitrate()
local bitrate = cfg_table["bitrate"]
if bitrate == "320k" then return 0
elseif bitrate == "192k" then return 1
elseif bitrate == "160k" then return 2
elseif bitrate == "128k" then return 3
elseif bitrate == "96k" then return 4
elseif bitrate == "32k" then return 5
else return 0
end
end
function sel_play()
local playFile = cfg_table["playFile"]
if playFile == "no" then return 0
elseif playFile == "yes" then return 1
else return 0
end
end
--make format dropdown menu items work
@ -68,6 +95,30 @@ function sel_Codec(x)
end
function bit_logic(x)
if x == 0 then
local b320k = "320k"
print ("Selected "..b320k)
return b320k
elseif x == 1 then
local b192k = "192k"
print ("Selected "..b192k)
return b192k
elseif x == 2 then
local b160k = "160k"
print ("Selected "..b160k)
return b160k
elseif x == 3 then
local b128k = "128k"
print ("Selected "..b128k)
return b128k
elseif x == 4 then
local b96k = "96k"
print ("Selected "..b96k)
return b96k
end
end
--Ask user to set directory
function set_dir()
@ -102,7 +153,7 @@ function ytDl(x)
local tmpNameTwo = math.random(0,999999999999)
local tmpPath = x.." --output=/tmp/youtube-dl-"..tmpName.."-"..tmpNameTwo..".flv"
local tmpPath2 = "/tmp/youtube-dl-"..tmpName.."-"..tmpNameTwo..".flv"
print(x)
local flag = popin.ytdl(tmpPath, tmpPath2)
if not flag then return false end
@ -112,18 +163,10 @@ end
--optional function to implement autoplay
function ask_play(x)
local play = ""
res, play = iup.GetParam("Play now?", nil,
"Do you want to play the file now? %t\n")
if res == true then
io.popen("notify-send 'The file was saved to' "..x)
io.close()
io.popen("xdg-open "..x)
io.close()
return true
else
if x == 0 then
return false
elseif x == 1 then
return true
end
end
@ -135,17 +178,22 @@ function ffmpeg(tmpPath, dirD)
if gFormat == ".ogg" then gFormat = "libvorbis" end
if gFormat == ".flac" then gFormat = "flac" end
local subSpaces = string.gsub(dirD, " ", "\\ ")
local codec = "ffmpeg -i "..tmpPath.." -acodec "..gFormat.." -ac 2 -ab 192k -vn -y "..subSpaces
local codec = "ffmpeg -i "..tmpPath.." -acodec "..gFormat.." -ac 2 -ab "..gBitrate.." -vn -y "..subSpaces
print(format)
print(format) --debug purposes
local flag = convert_mp3.go(codec, tmpPath)
if not flag then return false end
--end
--io.popen("notify-send 'The file was saved to' "..subSpaces)
ask_play(subSpaces)
io.popen("notify-send 'The file was saved to' "..subSpaces)
io.close()
if gPlay == true then
io.popen("xdg-open "..subSpaces)
io.close()
elseif gPlay == false then
print ("You chose not to open the file")
end
end
--put everything into a table to use local functions globally