Closed kyv closed 11 years ago
Puedes pegar aquí un ejemplo del formato json
el mpdcron, para que vea el tratamiento que se le tendría que hacer el archivo.
Mpdcron no tiene formato para eso asi. Mpdcron unicamente corre sus ganchas
. Voy escribir un script que si llama de una de las ganchas. Asi que la podemos estructurar como veamos mejor. Lo paso cuando esta.
algo asi para cancion actual:
{
Free:true,
Mp3: "$URL_MP3",
Oga: "$URL_OGG",
Duration: "$DURATION",
Artist: "$MPD_SONG_TAG_ARTIST"
Album: "$MPD_SONG_TAG_ALBUM"
Album_Artist: "$MPD_SONG_ALBUM_ARTIST"
Title: "$MPD_SONG_TAG_TITLE"
Track: "$MPD_SONG_TAG_TRACK"
Name: "$MPD_SONG_TAG_NAME"
Genre: "$MPD_SONG_TAG_GENRE"
Date: "$MPD_SONG_TAG_GENRE"
Composer: "$MPD_SONG_TAG_COMPOSER"
Performer: "$MPD_SONG_TAG_PERFORMER"
Comment: "$MPD_SONG_TAG_COMMENT"
Disc: "$MPD_SONG_TAG_DISC"
Musicbrainz Artist ID: "$MPD_SONG_TAG_MUSICBRAINZ_ARTISTID"
Musicbrainz Album ID: "$MPD_SONG_TAG_MUSICBRAINZ_ALBUMID"
Musicbrainz AlbumArtist ID: "$MPD_SONG_TAG_MUSICBRAINZ_ALBUMARTISTID"
Musicbrainz Track ID: "$MPD_SONG_TAG_MUSICBRAINZ_TRACKID"
}
un ejemplo sencillo para la cola:
{ 0: Dmitri Shostakovich - Symphony No.7, Op.60 'Leningrad' i. Allegretto, 1: Ella Fitzgerald - Drop Me Off in Harlem, 2: Mi chacua, 3: ACAPULCO TROPICAL [UNIVERSAL RECORDS MP3] - La Mona, 4: Musica/SalsaMeetsFunk/111-Frenz & Croma Latina - Medley En El Aire edited.mp3, 5: Etta James - Just A Little Bit, 6: VA -, }
Que onda acabo de revisar tu ejemplo,veo que la salida del Mpdcron
también incluye la duración de la canción, para el plugin del reproductor creo que le quedaría algo mas conveniente, el siguiente ejemplo:
{
{
nombre : 'Dmitri Shostakovich',
artista : 'Symphony No.7, Op.60 Leningrad i. Allegretto',
mp3_path : '/nombre_archivo.mp3',
mp3_ogg : '/nombre_archivo.ogg',
duracion : '03:52'
},
{
nombre : 'Drop Me Off in Harlem',
artista : 'Ella Fitzgerald',
mp3_path : '/nombre_archivo.mp3',
mp3_ogg : '/nombre_archivo.ogg',
duracion : '05:00'
},
{
nombre : 'Medley En El Aire edited',
artista : '111-Frenz & Croma Latina',
mp3_path : '/nombre_archivo.mp3',
mp3_ogg : '/nombre_archivo.ogg',
duracion : '04:23'
},
{
nombre : 'ACAPULCO TROPICAL [UNIVERSAL RECORDS MP3]',
artista : 'La Mona',
mp3_path : '/nombre_archivo.mp3',
mp3_ogg : '/nombre_archivo.ogg',
duracion : '02:42'
}
}
No estoy seguro si debería llevar la ruta donde se localiza el archivo o la obtengo a partir de alguna convención entre nombre del artista/canción.
De esta forma yo podría obtener la lista con el método getJson e interaccionar con las canciones p.e.
/*Código de ejemplo como obtendriamos una lista de reproducción y la metemos en el
* contenedor de la lista de reproduccion de forma dinamica/asincrona.
**/
$.getJSON('json/listaHome.json', function(listaReproducccion) {
var canciones = '';
$.each(listaReproducccion, function(key, cancion) {
canciones += '<li id="cancion_' + key + '">' +
cancion.artista + ' - ' + cancion.nombre +
'</li>';
});
//Agregamos en lista no ordenada(ul) los items y lo insertamos en
//el contenedor del reproductor.
$('<ul/>', {
'class': 'mi_lita_de_reproducccion',
html: canciones
}).appendTo('#contenedorListaReproducción');
});
mi parece bien
Agregue la lista con un formato muy similar al que habíamos comentado ( de echo sólo por cuestión de la notación de la lista del plugin se cambiaron los nombres).
Agregue también una función (cargar_lista
) para tratar esta lista y relacionarlo con plugin que estamos ocupando para la rockola.
Estoy pensando que la barra del menu izquierdo deberian de ser enlaces a listas y cuando le das click te deberia de cargar la lista de esa opcion, me imagino algo como.
Y cuando le den click te cargue la rockola con una nueva lista, donde esta lista pueden ser varios archivos de audio o una ruta hacia un streaming.
si mi parece mas o menos lo que estoy pensando tambien
ademas estoy pensando que la lista de rockoltes de la columna izquierda, puede ser producida dinamicamente.. quiza seria con una llamada ajax directamente a la oja de estatus de icecast, asi producienedo el json dinamicamente en el servidor de streaming. el formato de json creo que podria ser lo mismo que la rockola.
¿Te refieres a la, nube de etiquetas que esta en el costado derecho?, estas mas que ser un canal en especifico(una radio) es mas bien una especie de categoría. Voy a darle una revisar la lista del costado izquierdo y a partir de esta igual y podemos clasificaras por categorías.
perdon columna izquierda. refero a eso que dice Nubes de Rockolites. Rockolite siendo otras rockolas, o otros radios por internet. entonces seria cargar esta lista de rockoltes
dinamicamente.
El Nube de etiquetas, columna derecha, seria generado atreves de los etiquetas de los audios en la biblioteca, su metadata. como podemos manejar esto? Mpd utiliza sqlite para datos asociados con su biblioteca de musica. Utilizamos directamente el base de datos de mpd?
aparentamente es possible extraer los datos de audio con javascript. http://blog.nihilogic.dk/2008/08/reading-id3-tags-with-javascript.html
Pero igual es mas facil que mpd haga este trabajo.
Mpd utiliza sqlite para datos asociados con su biblioteca de musica. Utilizamos directamente el base de datos de mpd?
Sí, si la intensión es que alguien descargue y ejecute la rockola veo viable una base de datos en formato sqlite
, seria cosa de definir con que lenguaje se trabajaría debería de cumplir que:
Por ejemplo he visto que django
y onRails
traen un script que se ejecuta como servidor de producción.
#Caso de dijango
python manage.py runserver 8080
#Caso de rubyOnRails
rails server
Con esto no estoy diciendo que utilicemos django
o Onrails
si no que decidamos algún lenguaje y luego hacemos un pequeño demonio a partir de algunos ya existentes.
Estoy revisando la página de ID3, tengo la duda si para extraer dicha información ¿descarga todo el archivo? o ¿sólo las cabeceras del archivo de audio?.
Revisando el ejemplo http://www.nihilogic.dk/labs/id3/ se ve rápido,... el detalle es si los archivos a los que les queremos extraer la información son mas pesado y/o son varios ¿no generaríamos una descarga grande para el usuario?.
El detalle de javascript
es que se ejecuta en el cliente, el navegador tendra que descargar el archivo o una porción de esta para obtener dicha información.
Sí, si la intensión es que alguien descargue y ejecute la rockola veo viable una base de datos en formato sqlite,
En el caso de rockola.flujos.org, mpd sera presente en el servidor como automatizador de la radio. Y si, la idea seria que uno puede clonar la rockola, y funciona localmente. Aun que creo que no seria tan necesario, porque como en el scenario de flujos-vivos mpd es presente localmente. O bueno algun otro reproductor que mas seguro seria mas completo que la rockola.
Javascript únicamente tendrá que extraer los datos del base de datos.
seria cosa de definir con que lenguaje se trabajaría debería de cumplir que:
Aqui no entiendo bien pero mi idea era utilizar javascript para interactuar con el base de datos. El DB es generado automáticamente al actualizar la biblioteca de musica. No entiendo porque tendremos hacer un demonio.
Revisando el ejemplo http://www.nihilogic.dk/labs/id3/ se ve rápido,... el detalle es si los archivos a los que les queremos extraer la información son mas pesado y/o son varios ¿no generaríamos una descarga grande para el usuario?.
seguramente si. pero si existe un base de datos en el servidor, entonces si extrae los metadatos al momento de subir. en este momento el usuario no tendra que descargar nada.
he hecho un diagrama para visualizar como relacionan todo eso: http://kyv.github.com/rockola/diagrama.svg
¿Como vez este proyecto?, manejo de BD con javascript https://github.com/kripken/sql.js
no lo conocía pero si ve muy bien.
por lo pronto he agregado la lista a el API, si puede hacer rockola.flujos.org/cola para obtener la lista actual. luego cambiaria hacer el version estatica.
la rockola debe de obtener la lista actual en reproducción atreves de json. el json puede ser producido por mpdcron al momento que cambia la lista (version compilada), pero tambien debe de funcionar si un CGI devuelva un json en el formato adecuado.
algo parecido podria occurir tambien con la Cancion Actual. mpdcron 'compila' el json al momento que el canscion cambia.