|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 3797
|
Lista files
Chiedo venia se è la sezione sbagliata o se è un argomento old...
esiste uno script, un programmino o altro che scrivano in un file di testo la lista dei files di una o più cartelle, ed eventualmente, nel caso di mp3, ne associno anche alcuni dettagli come titolo, autore, durata, ecc??? |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Sep 2004
Città: vicino a Cosenza
Messaggi: 61
|
per quale sistema operativo ti serve? e quale linguaggio?
se per C++, ti posso postare il codice per la lettura/scrittura dei tag ID3. Saluti
__________________
<| http://fgr.altervista.org |> <| GNU/Linux Registered User #365929 |> <| GnuPG/OpenPGP key available |> |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 3797
|
Grazie, saresti molto gentile, per c++ va benissimo, deve girare su win xp.
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Sep 2004
Città: vicino a Cosenza
Messaggi: 61
|
Ciao,
allora ti posto il codice per i tag ID3. Quindi deve girare su Win xp, se era per Linux ti potevo postare qualcosa anche sulla lista di file e cartelle. Comunque ci dovrebbe essere una qualche API (che ora mi sfugge). <code> #include <iostream> #include <iomanip> #include <fstream> using namespace std; bool ctrlTag(fstream&); // controlla se esiste la stringa TAG void viewTag(fstream&); // visualizza le informazioni ID3 void setTag(fstream&); // imposta i tag ID3, anche se non esistono typedef struct { char title[31]; char artist[31]; char album[31]; char year[5]; char comment[29]; char track; char genere; } ID3; // struttura globale, accessibile da tutte le funzioni int main(int argc, char* argv[]) { char risp; if (argc == 1 || argc > 2) { cerr << "Error: Devi specificare un file .mp3!\n" << "Sintassi: ./id3 \"file1.mp3\"\n\n"; exit(EXIT_FAILURE); } fstream fio(argv[1], ios::binary | ios::in | ios::out); if (!fio) { cerr << "File non valido o non esistente!\n\n"; exit(EXIT_FAILURE); } // controllo se è presente la stringa TAG if (!ctrlTag(fio)) cerr << "TAG ID3 mancanti o errore di posizionamento all'interno del file!\n\n"; else viewTag(fio); cout << "Desideri inserire/modificare i tag ID3? [Si, No]: "; cin >> setw(1) >> risp; if (risp == 's' || risp == 'S') setTag(fio); return EXIT_SUCCESS; } bool ctrlTag(fstream& file) { char buf[3]; file.seekp(-128, ios::end); // posizionamento 128 byte prima di EOF file.read(buf, 3); if (!strncmp(buf, "TAG", 3)) return true; // c'e' la stringa tag else return false; } void viewTag(fstream& file) { char buf[129]; int i; file.seekp(-128, ios::end); file.read(buf, 128); // titolo traccia, byte 3..32 cout << "\nTITOLO: "; for (i = 3; i < 33; i++) if ((buf[i] == '\0') || (buf[i] == ' ') && (buf[i+1] == ' ')) break; else cout << buf[i]; // artista, byte 33..62 cout << "\nARTISTA: "; for (i = 33; i < 63; i++) if ((buf[i] == '\0') || (buf[i] == ' ') && (buf[i+1] == ' ')) break; else cout << buf[i]; // album, byte 63..92 cout << "\nALBUM: "; for (i = 63; i < 93; i++) if ((buf[i] == '\0') || (buf[i] == ' ') && (buf[i+1] == ' ')) break; else cout << buf[i]; // anno, byte 94..96 cout << "\nANNO: "; for (i = 93; i < 97; i++) if (!(buf[i] >= '1') && (!buf[i+1] <= '9') || (buf[i] == '\0')) break; else cout << buf[i]; // commento, byte 94..96 cout << "\nCOMMENT: "; for (i = 97; i < 126; i++) if ((buf[i] == '\0') || (buf[i] == ' ') && (buf[i+1] == ' ')) break; else cout << buf[i]; // traccia cout << "\nTRACCIA: "; cout << static_cast<int> (buf[126]); // genere cout << "\nGENERE: "; cout << buf[127]; cout << "\n\n"; } void setTag(fstream& file) { ID3 id3; int size, i, traccia; char tag[] = "TAG"; char buf[125], track[4]; if (!ctrlTag(file)) { file.seekp(0, ios::end); file.write(tag, 3); } else file.seekp(-125, ios::end); file.flush(); cin.getline(tag, 3); cout << "\nTitolo: "; cin.getline(id3.title, 31); size = cin.gcount()-1; for (i = size; i < 30; i++) id3.title[i] = static_cast<char> (NULL); for (i = 0; i < 30; i++) buf[i] = id3.title[i]; cout << "\nArtista: "; cin.getline(id3.artist, 31); size = cin.gcount()-1; for (i = size; i < 30; i++) id3.artist[i] = static_cast<char> (NULL); for (i = 0; i < 30; i++) buf[30+i] = id3.artist[i]; cout << "\nAlbum: "; cin.getline(id3.album, 31); size = cin.gcount()-1; for (i = size; i < 30; i++) id3.album[i] = static_cast<char> (NULL); for (i = 0; i < 30; i++) buf[60+i] = id3.album[i]; cout << "\nAnno: "; cin.getline(id3.year, 5); if (cin.gcount()-1 < 4 || id3.year[0] == '\n') for (i = 0; i < 4; i++) id3.year[i] = static_cast<char> (NULL); else for (i = 0; i < 4; i++) buf[90+i] = id3.year[i]; cout << "\nComment: "; cin.getline(id3.comment, 29); size = cin.gcount()-1; for (i = size; i < 28; i++) id3.comment[i] = static_cast<char> (NULL); for (i = 0; i < 28; i++) buf[94+i] = id3.comment[i]; cout << "\nTraccia: "; cin.getline(track, 4); traccia = atoi(track); if (traccia >= 0 && traccia <= 127) id3.track = static_cast<char> (traccia); else id3.track = static_cast<char> (NULL); buf[122] = static_cast<char> (NULL); buf[123] = id3.track; buf[124] = static_cast<char> (NULL); // genere file.write(buf, sizeof(buf)); } </code> Saluti
__________________
<| http://fgr.altervista.org |> <| GNU/Linux Registered User #365929 |> <| GnuPG/OpenPGP key available |> |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 3797
|
Scusa, per i midi è possibile la stessa cosa o simile?
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Sep 2004
Città: vicino a Cosenza
Messaggi: 61
|
Non lo so come e' la situazione per i midi.
__________________
<| http://fgr.altervista.org |> <| GNU/Linux Registered User #365929 |> <| GnuPG/OpenPGP key available |> |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
scusate ragazzi...ma a cosa serve questo codice?cosa produce?e sopratutto...come posso far si che diventi un file utilizzabile per la sua applicazione?
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
Quote:
MB_ICONQUESTION
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
come lo compilo?cosa mi serve?dove posso scaricare questo programma?
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
guarda nelle faq oppure cerca devcpp
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:46.



















