(16-08-2021, 10:11)Shordi escribió: ¡No es un Bug, es una Feature!
(16-08-2021, 10:11)Shordi escribió: Ese era el comportamiento inicial ... Se podrían implementar ciertos controles (si se hace click y en la carpeta no hay mp3 entonces no se buscan... y cosas así) pero dejar la opción de buscar al usuario con el dobleClick es lo que me pareció más adecuado... pero estoy abierto a cualquier sugerencia.Si el tema de búsquedas de archivos y de colecciones grandes de estos es todo un tema para discutir largamente.
(16-08-2021, 10:11)Shordi escribió: Supongo que eso se puede conseguir vía alguna web y demás... pero no es algo que me motive mucho... aunque si sabes cómo hacerlo, repito: estoy abierto a sugerencias (para eso está el git ¿no?)Respecto a la tapa del disco, normalmente se dan dos situaciones, tienes la imagen o no la tienes. Si tienes la imagen que suele estar en el mismo directorio que el archivo de musica, solo basta con cargarla en un control, como un picturebox o un toolbutton y si no la tienes, pues nada, pones una genérica y listo.
(16-08-2021, 10:11)Shordi escribió: Muchas gracias por tu ayuda.De nada, es agradable devolverte algo de toda la ayuda que en todos estos años me has prestado con gambas y también porque espero que le des al botón de !Gracias por este post!
Private Sub loadFolder (sPath As String)
Dim adir As String []
Dim sSong As String
Dim aExt As String [] = ["mp3", "wav", "ogg"]
Dim n As Integer
aDir = RDir (sPath) .Sort ()
'adir = Dir (sPath) .Sort ()
For Each sSong In adir
' If IsDir (spath & / sSong) Then loadFolder (spath & / sSong) 'Recursion
If aExt.Exist (LCase (File .ext (Ssong))) Then
$ Lista.Add ([spath & / Ssong, ""])
Endif
Next
lista.rows.Count = $ lista.Count
For n = 0 To $ list.
Next
List.MoveTo (0, 0)
list.SetFocus
End
Public Sub Timer1_Timer()
Object.Lock(posicion)
posicion.Value = Music.Pos
Object.Unlock(posicion)
If Round(Music.Pos) = posicion.MaxValue - 1 Then
bNext_Click()
Endif
End
(16-08-2021, 16:40)tincho escribió: Siguiendo con el feedback, ahora dentro del código.Es otra opción. Miraré cual va más "suave"
Me gusto como resolviste lo del evento del Slider ya que usaste Object.Lock yo siempre había resuelto esto prescindiendo del evento "Change" lo cual ahora lineas de código.
Saludos.Código:Public Sub Timer1_Timer()
Object.Lock(posicion)
posicion.Value = Music.Pos
Object.Unlock(posicion)
If Round(Music.Pos) = posicion.MaxValue - 1 Then
bNext_Click()
Endif
End
(16-08-2021, 16:16)cogier escribió: Puede cambiar el 'Dir' por 'RDir' como se indica a continuación.
....Código:Private Sub loadFolder (sPath As String)
Dim adir As String []
Dim sSong As String
Dim aExt As String [] = ["mp3", "wav", "ogg"]
Dim n As Integer
aDir = RDir (sPath) .Sort ()
'adir = Dir (sPath) .Sort ()
For Each sSong In adir
' If IsDir (spath & / sSong) Then loadFolder (spath & / sSong) 'Recursion
If aExt.Exist (LCase (File .ext (Ssong))) Then
$ Lista.Add ([spath & / Ssong, ""])
Endif
Next
lista.rows.Count = $ lista.Count
For n = 0 To $ list.
Next
List.MoveTo (0, 0)
list.SetFocus
End
Pensé que podría ser interesante, ya que tiene algunas características que podrían interesar. Puedes usar la rueda del ratón en el 'TrayIcon' para cambiar el volumen. Haz clic en el 'TrayIcon' para iniciar o detener la música.
Poner algo de música en la carpeta 'MusicYT' para empezar, el programa creará la carpeta si no está allí.
(16-08-2021, 13:41)jguardon escribió: Creo que he encontrado un recurso bastante útil. Se trata de una API gratuita de LastFM que proporciona casi cualquier metadato relativo a un artista, álbum o canción incluyendo las carátulas (o tapas) de disco. Podría tener algún tipo de limitación para evitar abusos, pero no he visto nada reseñable.
https://www.last.fm/api#getting-started
Lo bueno es que se pueden usar los dos métodos disponibles, XML o JSON, éste último mucho más sencillo de implementar. Por supuesto, montar la clase API en gambas con los métodos de autenticación y las llamadas a los métodos más usuales o necesarios para el programa lleva tiempo y esfuerzo, pero puede merecer la pena al ser reutilizable.
Saludos
Cita:Perfecto, de todos modos, como sabes, en gnome3 no existe donde usar el tryicon.Mmm... no creo que use nunca gnome3... pero supongo que no es difícil implementar comportamientos distintos según el tipo de escritorio. Le daré una vuelta con una máquina virtual a ver qué se puede hacer.
(16-08-2021, 18:04)Shordi escribió: Buff, buff... eso que sugieres me supera. En serio... Si te animas, ya sabes: gitlab
Cita:Estoy intentando crear una clase para dar utilidad a las ecuaciones de Robert Penner relativas a easing (o suavizado de valores vs tiempo) muy útiles para animaciones y cosas así.
(16-08-2021, 16:16)cogier escribió: He escrito un programa como este para mí. No iba a publicarlo ya que lo escribí para Linux Mint y, puede que no funcione en otras distribuciones, especialmente el control de volumen que cambia el volumen del sistema. La función de inicio automático también puede causar problemas. Está diseñada para tomar las URLs de YouTube y descargar la música desde allí. Necesitarás instalar 'youtube-dl' para que funcione.
Shell "cd ~/MusicYT && youtube-dl -x --audio-format 'mp3' --audio-quality 0 --output '%(title)s.%(ext)s' " & Trim(TextBoxDownload.Text) Wait
(17-08-2021, 12:43)Shordi escribió: Tincho:
He modificado el programa de manera que si el escritorio es gnome, no hay trayicon y el programa se comporta como uno "normal", es decir, al iniciar se abre la ventana y al cerrarla se termina el programa. Si me puedes confirmar que funciona bien... conejudo.
(17-08-2021, 20:43)jguardon escribió: Siempre me gusta jugar con las APIs aunque ahora con el rollo de tener que ser todo usando SSL, ya se complica un poco más... Bueno, confiemos en curl dentro de los componentes de gambas.
Cita:Vale. Perdón, había omitido algunas líneas y equivocado otras, como es mi costumbre...
- Si, ahora, cuando cierro el programa termina la canción.
- Luego da un error al restablecer la configuración cerrar y volver a abrir. el error lo da en la linea 29 Settings.Save() [1]
- Maldito Splitter
- ¿Amarillo? De verdad?