Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - pastrank

Pagine: 1 2 [3] 4 5 ... 18
31
Programmazione / Re:Webview e salvataggio immagini
« il: 07 Novembre 2020, 11:12:54 »
Citazione
Ahime', mi sono rassegnato a usare altro per leggere perche' la lettura dei tag, anche nei soli file flac, e' molto varia: se nom ho inteso male, ci possono essere tag (id3 1.1, 2.3, 2.4, vorbis) normali stringhe, o formate da array. Poi ci  sono, solo tra quelli che uso, anche gli mp3 e i dsf

Alla fine sto iniziando a usare Mediainfo, per ora in shell, che legge praticamente tutto e di piu'. Via shell ha pure l'output formattabile, cosa che permette di rileggerlo senza acrobazie anche non volendo usare JSON o XML: per esempio, e' facile trasformare l'output in un file tipo ".ini". Le prime prove (si possono aggiungere anche le virgolette, volendo, e le tag che non si vedono e' perche' ancora non le ho implementate/non ne ho bisogno):

Codice: [Seleziona]
me@debsrv:~/tmp/test$ mediainfo --Output=file://template2.txt *.flac *.dsf *.mp3 *.ogg *.wv
[01.flac]
ALBU = Abbalati, abballati!
ARTS = Al Qantarah
GENR =
NAME = Surat Mariam
SIZE = 19437193
TRCK = 1
BITR = 678725
BITD = 16
BITS = 44100
CHAN = 2
COMP = Lossless
LENG = 229000
TYPE = FLAC

[01.dsf]
ALBU = Sessions from the 17th Ward
ARTS = Amber Rubarth
GENR = Folk
NAME = Sneak
SIZE = 192110584
TRCK = 11
BITR = 11290105
BITD =
BITS = 5644800
CHAN = 2
COMP = Lossless
LENG = 135999
TYPE = DSD

[01.mp3]
ALBU = Gun Song / Days "The Clubmixes"
ARTS = Alphawezen
GENR = House
NAME = Days (The Timewriter Remix)
SIZE = 10513372
TRCK = 2
BITR = 203226
BITD =
BITS = 44100
CHAN = 2
COMP = Lossy
LENG = 413753
TYPE = MPEG Audio

32
Programmazione / Re:Determinare il mio IP
« il: 17 Luglio 2020, 21:10:41 »
ipconfig e' in via di sostituzione da parte di ip

ip addr

puoi prendere il ruo ip locale anche con questo. Su Debian e Ubuntu funziona, puoi nche tentare di vedere se funge il classico

hostname -I

Per prendere l'indirizzo pubblico e basta, invece, potresti usare curl, o il controllo web di Gambas, piu' elegantemente senza usare la shell,, per recuperare un indirizzo di quelli preposti che ti rispondono con il solo ip pubblico, e quindi non necessiti nemmeno di parsare il risultato, sul tipo

webcontrol = "www.ident.me"
result = webcontrol.html 'qui e' a seconda di come vuoi fare e come e' il programma



33
Programmazione / Re:Variabili
« il: 16 Luglio 2020, 22:10:15 »
A me i database hanno sempre affascinato.

Non e' un delitto, ma a me ricordano i gestionali che volevano farmi scrivere 30 anni fa  :hatecomputer: e mi evito cosi' qualche problema di incompatibilita' con le versioni. I miei amori sono i file testuali, le esecuzioni programmate con cron e la linea di comando. La linea di comando anche perche' mi risparmio il tempo di disegnare l'interfaccia, la riservo per le occasioni massicce. Qualche volta in openbar mi mettero' a chiedervi cosa vi piace fare :-)

ps: si', ho risolto, devo cambiare il titolo?

34
Programmazione / Re:Variabili
« il: 16 Luglio 2020, 21:58:21 »
No, con la mia ! ;D
Non c'e' un'icona con i baci?  :)

35
Programmazione / Re:Variabili
« il: 16 Luglio 2020, 01:37:00 »
Però se usassi SQLite che non è problematico e lo puoi avere in una cartella condivisa, estraendo i dati in un file di testo avresti tutto come adesso ma molto più semplice, ordinato,e veloce, giusto?

Non ne sono tanto sicuro: a parte la mia innata avversione per i database, avrei il timore di trovarmi, come e' successo, con un blocco del programma dopo qualche aggiornamento, ci agirei con piu' difficolta' con gli script, e non potrei usare i file di testo per ottenere con facilita' le pagine per il mio sito tramite l'unica cosa un po' piu' grande che ho fatto negli ultimi anni, un generatore di siti statici fatto con Python.

36
Programmazione / Re:Variabili
« il: 15 Luglio 2020, 20:16:38 »
Perché scrivi dovevi, hai un motivo particolare per salvare in posti diversi?

Si', perche' a ogni cartella corrisponde un file e un album. Un esempio:

[data]
app = checkshares.py
time = 1592277899
added = 2017-04-17
chk =
genre = dark
tags = firenze
year = 1981
length = 1155
file count = 4
bits = 16
khz = 44.1
channels = 2

[files]
01. boxes.flac = 5E950504
02. spiders.flac = EBA51C94
03. drivin'.flac = E08B73A3
04. lobotomy.flac = 966D9A75

[applications]
taggalizer = 2

Perche' separati e non, per esempio, tutto im un db? Perche' gli album sono quasi 20000, e ci agisco sopra con programmi e script, a volte anche da Windows, e quindi voglio rimanere ai file di testo: a ricostruire tutti dati, dagli hash ai valori che testimoniano il controllo, ci sta che ci vogliano settimane :-)

37
Programmazione / Re:Variabili
« il: 15 Luglio 2020, 19:24:48 »
però mi devi promettere di non ridere

Non rido, anche perche' ne sai piu' di me :-) Ora mi ci vorra' un po' di tempo per controllare lo svolgimento delle procedure (non tanto per quello che stavo facendo qui, ma per altri usi in cui varrebbe la pena). Unica cosa che ti chiedo sarebbe: ma il file ini dove salvi e' nella location standard ./config/gambas/nomeapp? Perche' quando facevo le prove con settings, dovevo usare la classe settings, tipo (ma senza giurarlo che ho provato in molti modi e non ricordo quale)

Codice: [Seleziona]
my = New Settings(nomefile)
my[data/app] = "testodascrivere"
my.save


38
Programmazione / Re:Variabili
« il: 15 Luglio 2020, 01:32:31 »
Solo aggiungo un mio suggerimento, perché, visto che Minisini le reputa inadatte, invece di una struttura non usare una classe?
Infatti, a suo dire, pare che per creare una struttura Gambas debba prima creare anche una classe.

Infatti, non ti saprei fare una descrizione veloce, ma in pratica all'inizio nemmeno volevo fare una classe per tenere insieme il tutto, visto che questo dovrebbe essere una piccola parte di tutto il programma: fai conto, lo dico solo per giustificarmi, che ho un sacco di ifile audio, e poiche' leggere tag o calcolare hash e' cosa lunga, faccio controlli solo su insiemi parziali ogni notte (il pc e' poco potente, ma acceso 24/24).
Per salvare i dati che raccolgo, gli hash, ma anche, per esempio, l'anno di uscita, salvo questi in un file di testo, che mi serve anche per sapere, di conseguenza, cosa ho controllato e cosa no (l'anno di uscita, per esempio, dovrebbe essere comune a tutti i file di un album, se non lo e' c'e' un problema). Questi file li leggo e li scrivo con piccoli programmini fatti con Python, con Gambas e Bash.
All'origine volevo usare gb.settings qui, ma mi sono accorto sia che come lo usavo mi creava il file se non esisteva, ma andava in errore se esisteva, e che inseriva sempre le virgole a delimitare la stringa che scriveva come valore, dovendo quindi aggiornare tutti le altre procedure che ci accedevano, e quindi ho desistito subito.

39
Programmazione / Re:Variabili
« il: 15 Luglio 2020, 01:08:16 »
Comunque sia, resta la mia considerazione e il mio rispetto di sempre per te come programmatore.

Negli ultimi 10 anni temo di non aver scritto niente da poter far vedere senza vergogna agli altri, m anche prima, devo risalire al pleistocene per ricordare qualcosa di entusiasmante, il fatto di ricordare di aver visto esempi su tante cose non e' la stessa cosa di averli creati! :-)
E proprio adesso che parliamo di file audio, mi sa che tu sei avanti sull'argomento al 99% dei gambasiani e alla maggior parte degli altri.

Belllo comunque anche il fatto che leggendo i post qua sopra megli anni anche ragazzi allora ingenui siano poi migliorati tanto  :coder:

40
Programmazione / Re:Variabili
« il: 14 Luglio 2020, 20:49:22 »
Codice: [Seleziona]
...ad ogni modo, questo semplice esempio può essere utile ?  :-\

...
.
    inew = New IniStruct

...
 

Direi che alla fine il mio problema era qui, in effetti :) Adesso inserisco praticamente un numero di righe di codice che e' il minimo possibile (una nuova istanza della variabile, tre valori che devo per forza settare). Direi risolto!

41
Programmazione / Re:Variabili
« il: 14 Luglio 2020, 20:45:50 »
1a domanda (per capire):  perché dichiari "Pubblica" la variabile globale myini ?

Perche' ero nel dubbio ancora su come accedere ai valori in myini... nel caso avrei accesso da altri moduli, ma mi rendo conto di quello che mi dici (si', in effetti ci accedo da una funzione, e imetto subito private)

42
Programmazione / [Risolto] Variabili
« il: 14 Luglio 2020, 19:35:46 »
Dio mio come sono arrugginito :-)
Facciamo conto che abbia una classe, che mi serve per semplificare la creazione di file tipo gli ".ini" (tra l'altro, avevo provato a usare gb.settings, ma con quelli non dei settaggi classici, ma in cartelle diverse, non riuscivo a creare il file, e non a modificarlo se esisteva gia'). Per farla semplice, in questa classe c'e' una struttura che definisco globalmente per essere usata in un array usato tramite i metodi della classe

Codice: [Seleziona]
Public Struct IniStruct 
  sez As String
  chv As String
  res As String
End Struct
Public myini As New IniStruct[]

e poi la uso in molti posti, creando un array e aggiungendoci i vari elementi

Codice: [Seleziona]
Public Sub IniSet(sezione As String, chiave As String, nuovovalore As Variant)
 Dim i As IniStruct
  Dim inew, inew2 As New IniStruct
 
   For Each i In myini
    If i.sez = sezione And i.chv = chiave Then
      i.res = nuovovalore
      Return
    Endif
  Next
 
 ->
 inew.sez = sezione
  inew.chv = "app"
  inew.res = "myappname"
  myini.Add(Inew)

  inew2.sez = sezione
  inew2.chv = chiave
  inew2.res = nuovovalore
  myini.Add(Inew2)
<-

Questa parte di codice, in pratica, modifica l'array che poi sara' salvato, se non esiste il file invece crea proprio l'array. Per funzionare, funziona, ma trovo orribile la cosa di inserire due variabili /(la parte tra -> e <- del codice), altrimenti non funziona: se riuso inew, vengono settati due valori uguali. Ma ci sara' un altro sistema, se dovessi inserire cento valori, mica potro' mettere cento variabili... allora immagino la dovrei azzerare...

43
Programmazione / Re:Webview e salvataggio immagini
« il: 18 Giugno 2020, 02:28:31 »
Tornando sul file audio di formato FLAC, va detto che i TAG utilizzati sono analoghi a quelli usati nei formati MP3 e OGG.
Essendo individuati come stringhe di caratteri, è molto agevole anche usando le sole risorse di Gambas estrapolarli dal file audio.

Ahime', mi sono rassegnato a usare altro per leggere perche' la lettura dei tag, anche nei soli file flac, e' molto varia: se nom ho inteso male, ci possono essere tag (id3 1.1, 2.3, 2.4, vorbis) normali stringhe, o formate da array. Poi ci  sono, solo tra quelli che uso, anche gli mp3 e i dsf

https://kid3.sourceforge.io/kid3_en.html#tag3

Diventerebbe quindi un lavorone gestire tutto a mano, e' troppo piu' semplice affidarsi a qualche applicazione specializzata che fa gia' tutto. La cosa piu' universale che conosco probabilmente e' la libreria Mutagen per Python, ma neanche questa e' troppo veloce come uso, visto che necessariamente comporta l'uso di diverse classi, anche se ha il vantaggio di leggere praticamente tutti i tipi di file audio. kid3-cli e' la versione terminale di Kid3, applicazione QT5 che ha il vantaggio di potere essere usata anche via d-bus.
Volevo ridurre idealmente a 2 le funzioni in Gambas dove lo uso, una per leggere e l'altra per scrivere le tag, in modo che poi il passaggio dal richiamo come shell a d-bus non fosse una riscrittura completa

44
Programmazione / Re:Webview e salvataggio immagini
« il: 17 Giugno 2020, 16:41:16 »
Ben tornato Pastrank !  :)

E be', non sono mai andato, ho sempre letto, anche se ho commentato zero!

Rispondo alla prima questione.

Avevo visto quello, del resto reputo la wiki una delle migliori parti del sito, pero' il mio problema e' che  non conosco il nome dell'immagine. Potrei provare a scontornarla con Imagemagick, appunto, anche se mi dispiacerebbe aggiungere una dipendenza. Alla fine pero' ho fatto una cialtronata delle mia, rammentando un suggerimento che hai dato. In questa form ho messo delle variabili private, che poi mi saranno necessarie.

Codice: [Seleziona]
Private myhtml As String = ""
Private ht As New HttpClient As "MyHttp"

Sono stato costretto a scrivere qualcosa per l'evento Mousedown() del webview, perche' avevo bisogno di usare HitTest(). Se il mouse va giu' dove c'e' un immagine, mi prende il pezzo che lo gestisce e lo mette in myhtml

Codice: [Seleziona]
Public Sub wv_MouseDown()
Dim v As WebHitTest = wv.HitTest(Mouse.x, Mouse.y)
If v.Image Then
    myhtml = v.Element.HTML
Endif
End

a questo punto, visto che volevo usare, forzosamente, un menu contestuale col right click, devo ripulire myhtml, e estrarre il path dell'immagine (sperando che non rifacciano il sito cambiando tutto). A quel punto lo scarico nella cartella, dandogli il nome che preferisco

Codice: [Seleziona]
Public Sub mnuSaveCover_Click()
  Dim ss As String[]
  Dim s As String
 
    If InStr(myhtml, "src=") > 0 Then
      s = Mid(myhtml, InStr(myhtml, "src=") + 5)
      s = Left(s, InStr(s, "\"") - 1)
      With ht
         .URL = s
         .Timeout = 15
         .Get(Null, FMain.DirChooser.Current &/ "cover.jpg")
       End With
    Endif
End

Ho tolto un po' di cose per scriverle qui sopra, ma il principio e' quello. Che vergogna :-)

45
Programmazione / Web view e salvataggio immagini
« il: 17 Giugno 2020, 10:30:32 »
Esiste un modo, che voi sappiate, di potere salvare immagini come queste, in un controllo webview?

https://www.discogs.com/Soundgarden-Ultramega-OK/master/11308

Non la posso mostrare direttamente, e' quella che appare cliccando sull'immagine della copertina in alto a sinistra. Ovviamente dovrebbe funzionare su ogni pagina, corrispondente a un disco. Dapprima pensavo a regex sul tipo di contenitore, ma poi alla fine ho visto che non sempre e' uguale, anzi, in una decina di prove ce ne erano almeno 5 tipi diversi. L'ideale sarebbe ovviamente un  bel menu "salva come", ma ovviamente dovrei capire dove sono e quale file prendere. Qui mi sono fermato.
Come ultima alternativa potrei prendere l'immagine di tutta la pagina e scontornare l'immagine centrale emersa con Imagemagick, ma mi sembrerebbe di sparare a una mosca con un cannone, oltre al fatto che limitare le dipendenze mi da' una gioia immensa  :)

Ps; non merita un altro thread: questa cosa e' per il mio orrido programmillo che uso per gestire le mie raccolte di musica. Costretto dai tempi a fare delle modifiche - era mezzo hardcoded - mi chiedo quale possa essere il metodo piu' pratico e sicuro per ottenere le tag dei file, ma intendo proprio tutte, non solo gli mp3, ma anche flac e dsf. Attualmente richiamo kid3-cli, ma ha, sia a linea di comando che via dbus, dei comandi sia complessi (va escapato tutto perche' usa le virgolette nei comandi), sia una documentazione praticamente priva di esempi. Pensavo allora a richiamare via Python Mutagen, ma mi chiedevo se non c'era di meglio.

Pagine: 1 2 [3] 4 5 ... 18