Compare commits

..

No commits in common. "master" and "logen_kain" have entirely different histories.

6 changed files with 48 additions and 109 deletions

View File

@ -1,5 +1,4 @@
#Mandy
###current version: 0.6.0
#Mandy - current version: 0.5.0
##About
@ -7,7 +6,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
@ -216,7 +215,7 @@ Thanks!
[1]: http://lua.org
[2]: http://www.tecgraf.puc-rio.br/iup/
[3]: http://i.imgur.com/btD0dJc.png
[3]: http://i.imgur.com/P2rMTiM.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,15 +2,16 @@ TODO:
key: + = to add, - = to remove, x = completed, # = comment
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
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
+Percentage in progress bar --- not possible with iUP
#possibly more later

View File

@ -1,16 +1,7 @@
***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/env lua
#!/usr/bin/lua5.2
require("mandy")
dofile("mandy.cfg")
function main()

View File

@ -1,11 +1,6 @@
cfg_table = {
--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",
format = "ogg" -- 0 for mp3, 1 for ogg, 2 for flac
}

109
mandy.lua
View File

@ -1,4 +1,4 @@
#!/usr/bin/env lua
#!/usr/bin/lua5.2
require("iuplua")
require("iupluacontrols")
@ -7,31 +7,24 @@ 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"
local url = ""
res, url, format, bitRate, playNow, changeLog = iup.GetParam("Mandy 0.6.0 (alpha)", nil,
res, url, format = iup.GetParam("Mandy 0.5.0 - Enter URL", nil,
"Enter Youtube URL: %s\n"..
"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)
"Select an audio format: %l|mp3|ogg|flac|\n", url, format)
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")
@ -55,26 +48,6 @@ 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
@ -95,30 +68,6 @@ 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()
@ -153,7 +102,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
@ -163,10 +112,18 @@ end
--optional function to implement autoplay
function ask_play(x)
if x == 0 then
return false
elseif x == 1 then
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
return false
end
end
@ -177,22 +134,18 @@ function ffmpeg(tmpPath, dirD)
if gFormat == ".mp3" then gFormat = "libmp3lame" end
if gFormat == ".ogg" then gFormat = "libvorbis" end
if gFormat == ".flac" then gFormat = "flac" end
local subSymbols = string.gsub(dirD, "'", "")
local subSpaces = string.gsub(subSymbols, " ", "\\ ")
local codec = "ffmpeg -i "..tmpPath.." -acodec "..gFormat.." -ac 2 -ab "..gBitrate.." -vn -y "..subSpaces
local subSpaces = string.gsub(dirD, " ", "\\ ")
local codec = "ffmpeg -i "..tmpPath.." -acodec "..gFormat.." -ac 2 -ab 192k -vn -y "..subSpaces
print(format)
local flag = convert_mp3.go(codec, tmpPath)
if not flag then return false end
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
--io.popen("notify-send 'The file was saved to' "..subSpaces)
ask_play(subSpaces)
end
--put everything into a table to use local functions globally