Script en Lua para grabar radio Almaina – LuaRecord 0.1

Esto sirve para grabar radio almaina u otro stream ogg o mp3 que le indiquemos. Lo cierto es que no lo he probado con otros streams.
La idea era grabar lo que se emite en radioalmaina con un buffer suficiente como para escucharlo al mismo tiempo con vlc sin problema. Lo que viene a ser grabar y escuchar la radio simplemente haciendo doble click al archivo que estamos grabando.

Aquí puede bajarse el código: luaradio.zip

Se ejecuta así si le hemos dado permisos de ejecución:

./luarecord http://212.47.248.124/_stream/almaina.ogg grabacion_radio_almaina.ogg

Hemos de tener instalado lua5.1 y luacurl. Ojo con luacurl que ha de instalarse desde luarocks. Ver aquí como instalar luacurl desde luarocks (que tiene algo de miga):

https://mierda.tv/2017/12/19/scripts-en-lua-con-luacurl-para-descarga-de-archivos/

¿He de pegar el código en la entrada?

Pues si. Es bueno pegar el código para quien quiera mirarlo. Al no ser muy largo pues se puede mostrar.
Algunas personas creen que es algo malo pero la verdad es que no. Desde los buscadores llegan muchas peticiones buscando muchas veces fragmentos de código y si lo metemos en un zip y no lo mostramos perderemos la ocasión de que a esa persona le pudiera ser de utilidad.

El código:

#!/usr/bin/lua5.1

require("luacurl")
-- LuaRecord 0.1 . Record a http ogg stream
-- lua5.1 and luacurl from luarocks: https://mierda.tv/2017/12/19/scripts-en-lua-con-luacurl-para-descarga-de-archivos/
-- fanta  2018/06/20

url = arg[1] -- The first argument. Example: http://212.47.248.124/_stream/almaina.ogg
outputFile = arg[2] -- The second argument. Example: almaina.ogg

if (arg[1] and arg[2]) then

userAgent = "LuaRecord 0.1"
f = assert(io.open(outputFile, "w"))
c = curl.new()
c:setopt(curl.OPT_URL, url)
c:setopt(curl.OPT_ENCODING, "utf8")
c:setopt(curl.OPT_BUFFERSIZE, 16000)-- 16K
local t = {}
c:setopt(curl.OPT_WRITEFUNCTION, function (param, buf) table.insert(t, buf) return #buf end)
c:setopt(curl.OPT_PROGRESSFUNCTION, function(param, dltotal, dlnow)
	    if dlnow >= 160000 then
	       size = (dlnow / 1024) / 1024
	       print("Recording " .. outputFile .. " - [Mb " .. size .. "]")
	       f = assert(io.open(outputFile, "a+"))
	       f:write(table.concat(t))
	       io.close(f)
	       t = {}
	       dlnow = 0
	    end
end)
c:setopt(curl.OPT_NOPROGRESS, false)
c:setopt(curl.OPT_USERAGENT, userAgent)
c:setopt(curl.OPT_SSL_VERIFYHOST, 0)
assert(c:perform())
c:close()

else
   print("No No No. Use: luarecord [url] [outputfile]")
end

¿Eres un pesado?

Si. No estás leyendo esto ya que has leído verticalmente ignorando hasta las negritas. No lees esto y ya estás diciendo aquello de:

– Fanta, fanta ! menuda tontería, puedo usar mismamente el propio vlc para grabar o puedo usar noseque programa.

Pues usa lo que te de la gana que quieres que te diga amigo/a :).

Saludos cordiales.

Un comentario

fanta 20 junio, 2018 Contestar

https://radioalmaina.org/ es la url de radio almaina.

Deja un comentario