Ayuda En Listadode Archivos Para Catalogar Thumbnails


Ir a la página 1, 2, 3  Siguiente

Objetivo: Ayuda En Listadode Archivos Para Catalogar Thumbnails
hola amigos, soy nuevo en esto, quiero saber como logro hacer lo siguiente.
tengo un formulario que quiero me muestre los nombres de archivos con una extensión específica.
con la agravante siguiente el formulario debe ir creando la lista divididas en X cantidad de lineas, Me explico, si tengo 100 archivo, pero yo quiero que me muestra todos los archivos pero de 20 en 20, creando así cuadros de 20 archivos crearía entonces, 5 cuadros con todos os archivos según la extensión que especifiqué.,, y como si fuese poco necesito que haga todo esto con cada sub directorio dentro de un directorio.
ejemplo general,
crear especie de thumbnails

quiero me muestre todos los archivos mp3 que están en sub carpetas dentro de la carpeta música
están de la siguiente manera

/musica/artista/cancion.mp3

de esta manera si el artista tiene 40 canción debe crearme 2 listas de 20 canciones del artista . y proseguir en el próximo subdirectorio

/musica/artista2/cancion.mp3

ojo: si la cantidad de archivos nos es múltiplo de 20, osea es inexacto a 20,40,60, etc continúe dejando los espacios en blanco y continúe con el proximo subdirectorio

/musica/artista3,/cancion.mp3

lógicamente como no se sabrá la cantidad de archivos exactos y es variante, el programa debe crear dichas listas a según vaya "ENUMERANDOLAS" con esto quiero decir que no puedo limitar a 4 o 5 "Listbox" (o cualquier objeto control que ustedes me indiquen)
porque si tengo 30 directorios y mil archivos debe crear como "PAGINAS SIGUIENTE" según las necesidades

post-data: no espero que me hagan todo el trabajo, solo quiero aprender que usar ustedes me diran debes crear un list box o un grid o X,.. con tal otra cosa creas esto, y para que se creen las lsitas segun cantidad de archivos es esta rutina, etc etc,, se que implica varias cosas,ymetodos, pero quiero queme orienten para yo hacerlo,

Objetivo: Re: Ayuda En Listadode Archivos Para Catalogar Thumbnails
Pues... empieza a andar y pide cosas más concretas, que no pides tú na así de sopetón, digo.

Perfil MP  
Objetivo: Re: Ayuda En Listadode Archivos Para Catalogar Thumbnails
Bienvenido emerling

Supongo que lo que shordi quiere decir es que tu problema es bastante complejo y que sería necesario abordarlo por partes y no como un todo

Si planteas cómo paginar, por ejemplo, la salida de un listado con SHELL "ls /musica/*.mp3" sería más fácil ofrecer una posible solución, que si lo planteas todo de una sola vez.

Para listar los directorios puedes usar un control DirChooser y en función del directorio escogido, listar al lado en un ColumnView.
Para este caso concreto, mi consejo es que utilices un ColumnView, que te permite añadir un icono delante del texto. La salida del anterior comando, la puedes guardar en una variable string y hacer un split por nueva línea, o llenar un array de cadenas parseando lo que sea necesario. Según la longitud del array, vas llenando el ColumnView con el nº de elementos necesarios, etc...

Es una idea muy general, que seguro ya habrías pensado, pero es todo lo que se me ocurre ahora mismo.

Lo que no comprendo muy bien es por qué quieres limitar o paginar los resultados a 20, cuando el control FileChooser te permite ver todo, con posibilidad de scroll y limitando únicamente el nº de items visibles por el tamaño del control.

Espero que te sirva la idea y que otros puedan ofrecer las suyas convenientemente.

Saludos

Perfil MP  
Objetivo: Re: Ayuda En Listadode Archivos Para Catalogar Thumbnails
Saxto Jesús, eso quería decir, que hay tantas maneras de pelar ese gato que ni te cuento. Lo mejor es que elija una línea de acción y luego plantee los problemas concretos que le surjan.

Perfil MP  
Objetivo: Re: Ayuda En Listadode Archivos Para Catalogar Thumbnails
por ejemplo en fragmento de código tienes una rutina que sirve para obtener de forma recursiva listados de archivos con su path completo.

Ve planteando los problemas que te vayan saliendo

Perfil MP  
Objetivo: Re: Ayuda En Listadode Archivos Para Catalogar Thumbnails
ok, iré tratando de la manera que mas o menos entiendo, ,,
quiero mas o menos esto que vi en San google
vrockola_multimedia_and_graphics_media_management-3294-screenshot
ahora bien leyendo aqui y alla, logre hacer lo siguiente con un botón que genera el evento click y coloque esto queiba a un listbox
no me pregunten el porque d e los nombre de las variables sCads etc, buscando ejemplos y probando con "ls" etc etc entre los ejemplo estofuué lo que me quedo

DIM sCads AS NEW String[]
DIM Buf AS String
DIM Bucle AS Integer
'EXEC ["find", "./", "-maxdepth", "1", "-type", "d"] TO Buf ------------------- aqui es para listar los directorios
EXEC ["find", "./", "-name", "*.mp3"] TO Buf
sCads = Split(Buf, "\n")
sCads.Remove(0)
sCads.Remove(sCads.Count - 1)

FOR Bucle = 0 TO sCads.Count - 1
ListBox1.Add(sCads[Bucle])
NEXT

ahora bien el me coloca los nombres perfectamente.. y me hace un listado, el problema es, CREAR en tiempo de ejecución los listbox según la cantidad de directorios y archivos debo limitar el listbox (o cualquier control que ustedes me indiquen) a unas cuantas lineas ejemplo 20 e ir distribuyendolos por todo el formulario, y al ocupar los listbox toda la pantalla crear en tiempo de ejecucion los siguientes formularios y listbox

ojo.... no es necesario o tiene que ser listbox, a mi lo que me importa es que genere en pantala del formulario todos las lista de directorios y archivos cn cualquier control o manera

Objetivo: Re: Ayuda En Listadode Archivos Para Catalogar Thumbnails
También podrias tener 4 listbox y dos botones de paginación, incluso un scroll.
Primero recorreria todas las carpetas usando las funciones que nos permiten recorrer archivos y carpetas:
Dir, Exist, IsDir ...
Te creas una clase Artista y otra Disco, la clase artista tendrá una matriz de objetos Disco.
En el formulario creas una matriz de artistas que rellenaras al momento de recorrer las carpetas.
Con esto tienes toda la estructura en memoria (no se hasta que punto seria rentable en colecciones muuy grandes).
A partir de aquí haces las funciones necesarias para recorrer la matriz y mostrar los elementos en los controles pertinentes del formulario.
Si fijas la vista a 4 listbox no tendras muchos problemas para mostrarlo, en cambio para usar una cantidad aleatoria de controles deberas crearlos en tiempo de ejecución.
Parece que puede hacerse de esta forma:

DIM hButton AS Button
hButton = NEW Button (ME) AS "hButton"
hButton.X = 215
hButton.Y = 60
hButton.Width = 200
hButton.Height = 40
hButton.Enabled = TRUE
hButton.Text = "Click or press ESC to Quit"
hButton.Border = TRUE
hButton.Default = TRUE
hButton.Cancel = TRUE
hButton.Show

Aunque no se como enlazar los controles creados a sus eventos correspondientes.
En un manual he visto que debes crear la función del evento para cuando crees el control, pero no se si cuando creas el control en ejecución busca sus eventos en el código de forma automática.
Esta parte no la tengo muy clara, ya que representa que debes saber de antemano los controles que vas a crear para poder hacer sus eventos antes.

Bueno, perdón por el rollazo, espero que te sirva de algo.
Saludos,
Maikl

Perfil MP  
Objetivo: Re: Ayuda En Listadode Archivos Para Catalogar Thumbnails
Bueno, he hecho una prueba de lo que habia dicho antes y de momento funciona.
A partir de una ruta te construye los artistas, albumes y canciones que encuentra siempre suponiendo un orden lógico de jerarquia de carpetas.
Primera carpeta es artista, dentro tiene carpetas que son los albumes y dentro los mp3 con canciones.

Código del programa

Clase Discoteca
' gambas class file

'Creamos una matriz de artistas.
PUBLIC oArtistas AS Object[]
PRIVATE strRuta AS String

PUBLIC SUB _new()

oArtistas = NEW Object[]

END


PUBLIC SUB Iniciar(strRutaInicial AS String)

DIM strArchivo AS String
DIM oArtista AS clsArtista

'Comprobamos si tenemos acceso a la ruta dada.
IF Access(strRutaInicial, gb.Read) = TRUE THEN
strRuta = strRutaInicial 'Guardamos la ruta.
'Recorremos los archivos de la carpeta en busca de otras carpetas.
FOR EACH strArchivo IN Dir(strRuta)
'Si el archivo es una carpeta continuamos. (No se como buscar solo carpetas).
IF IsDir(strRuta & "/" & strArchivo) = TRUE THEN
'Creamos un objeto del tipo artista.
oArtista = NEW clsArtista
oArtista.ObtenerCarpeta(strruta & "/" & strArchivo)
oArtista.strNombre = strArchivo
oArtistas.Add(oartista)
ENDIF
NEXT
ENDIF

END

PUBLIC FUNCTION BuscarArtista(strBuscar AS String) AS Integer

DIM i AS Integer

FOR i = 0 TO oArtistas.Count - 1
IF oArtistas[i].strNombre = strBuscar THEN
RETURN (i)
EXIT
ENDIF
NEXT
i = -1

END


Clase Artista
'
gambas class file

PRIVATE strRuta AS String

PUBLIC strNombre AS String
PUBLIC intNumDiscos AS Integer
PUBLIC oAlbumes AS Object[]

PUBLIC SUB ObtenerCarpeta(strNuevaRuta AS String)

DIM strArchivo AS String
DIM oAlbum AS clsAlbum

oAlbumes = NEW Object[]

'Comprobamos si tenemos acceso a la ruta dada.
IF Access(strNuevaRuta, gb.Read) = TRUE THEN
strRuta = strNuevaRuta 'Guardamos la ruta.
'Recorremos los archivos de la carpeta en busca de otras carpetas.
FOR EACH strArchivo IN Dir(strRuta, "")
'Si el archivo es una carpeta continuamos. (No se como buscar solo carpetas).
IF IsDir(strRuta & "/" & strArchivo) = TRUE THEN
'Creamos un objeto album y lo iniciamos con la ruta.
oAlbum = NEW clsAlbum(strRuta, strArchivo)
'Llamamos a la función que nos busca los mp3 del álbum y llena el objeto.
IF oAlbum.ObtenerCanciones() = TRUE THEN
'Si todo ha ido correcto añadimos el album en la matriz.
oAlbumes.Add(oAlbum)
ENDIF
ENDIF
NEXT
ENDIF
intNumDiscos = oAlbumes.Count

END

PUBLIC FUNCTION BuscarAlbum(strBuscar AS String) AS Integer

DIM i AS Integer

FOR i = 0 TO oAlbumes.Count - 1
IF oAlbumes[i].strNombre = strBuscar THEN
RETURN (i)
EXIT
ENDIF
NEXT
i = -1

END


Clase Album

' gambas class file

PRIVATE strRuta AS String
PUBLIC strCanciones AS String[]

PUBLIC strNombre AS String
PUBLIC intNumCanciones AS Integer

PUBLIC SUB _new(strNuevaRuta AS String, strNuevoNombre AS String)

'Iniciamos el objeto con los valores pasados por parámetro al crear.
strNombre = strNuevoNombre
strruta = strNuevaRuta
intNumCanciones = 0
strCanciones = NEW String[]

END

PUBLIC FUNCTION ObtenerCanciones() AS Boolean

DIM strArchivo AS String

'Buscamos las canciones en la ruta indicada.
IF IsDir(strruta) THEN
FOR EACH strArchivo IN Dir(strRuta & "/" & strNombre, "*.mp3")
strCanciones.Add(strArchivo)
NEXT
intNumCanciones = strCanciones.Count
RETURN TRUE
ELSE
RETURN FALSE
ENDIF

END


Formulario con 3 listbox y un botón.

Código del formulario.
' gambas class file

oDiscoteca AS clsDiscoteca
PUBLIC intArtista AS Integer
PUBLIC intAlbum AS Integer

PUBLIC SUB _new()

oDiscoteca = NEW clsDiscoteca
intArtista = -1
intAlbum = -1

END

PUBLIC SUB Form_Open()

END

PUBLIC SUB Button1_Click()

DIM oArtista AS Object

oDiscoteca.Iniciar("/home/maikl/musica")

ListBox1.Clear
listbox2.Clear
listbox3.Clear
FOR EACH oArtista IN oDiscoteca.oArtistas
ListBox1.Add(oArtista.strNombre)
NEXT

END

PUBLIC SUB ListBox1_Click()

DIM oDisco AS Object

IF ListBox1.Text <> "" THEN
listbox2.Clear
listbox3.Clear
intArtista = oDiscoteca.BuscarArtista(ListBox1.Text)
IF intArtista >= 0 THEN
FOR EACH oDisco IN oDiscoteca.oArtistas[intArtista].oAlbumes
listbox2.Add(oDisco.strNombre)
NEXT
ENDIF
ENDIF

END

PUBLIC SUB ListBox2_Click()

DIM strCancion AS String

IF ListBox2.Text <> "" THEN
listbox3.Clear
IF intArtista >= 0 THEN
intAlbum = oDiscoteca.oArtistas[intArtista].BuscarAlbum(ListBox2.Text)
IF intAlbum >= 0 THEN
FOR EACH strCancion IN oDiscoteca.oArtistas[intArtista].oAlbumes[intAlbum].strCanciones
listbox3.Add(strCancion)
NEXT
ENDIF
ENDIF
ENDIF

END



A mi me ha funcionado, supongo que tendrias que cambiar la ruta de origen.
Faltan comentarios y explicaciones pero es que es muy taaarde y mañana hay curroooggghh
buenas noches!

Perfil MP  
Objetivo: Re: Ayuda En Listadode Archivos Para Catalogar Thumbnails
Mil gracias, de verdad, todo esta claro me has dado un gran empujón, estaba enredado con lo delas matrices y los bucles no me salia bien, complementado lo que hiciste, de seguro daré unos cuantos pasos mas, gracias.. mil gracias de todo corazón por todo tu tiempo, paciencia y dedicación
desde Venezuela un amigo.

ahora a probar...

Objetivo: Re: Ayuda En Listadode Archivos Para Catalogar Thumbnails
bueno me sale un error y no le he dado la vuelta, pantallazo_gambas_1

el extracto de la clase es
PRIVATE strRuta AS String

PUBLIC strNombre AS String
PUBLIC intNumDiscos AS Integer
PUBLIC oAlbumes AS Object[]

PUBLIC SUB ObtenerCarpeta(strNuevaRuta AS String)

DIM strArchivo AS String
DIM oAlbum AS clsAlbum <<<<<<<<<<<<<<<<<<<<< esta es la linea del error en Artista.class

oAlbumes = NEW Object[]

'Comprobamos si tenemos acceso a la ruta dada.
IF Access(strNuevaRuta, gb.Read) = TRUE THEN
strRuta = strNuevaRuta 'Guardamos la ruta.

Ir a la página 1, 2, 3  Siguiente

Página 1 de 3


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 1.0099s (PHP: -68% SQL: 168%)
Consultas SQL: 45 - Debug off - GZIP Activado