Bonjour je cherche à télécharger l'entête d'un fichier mp3 d'un site pour en extraire uniquement le tag Id3v2 qui se situe au début du fichier
sans avoir à télécharger le fichier entier.
J'ai fait ceci :
mais je n'arrive pas à mettre une taille de téléchargement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 var SSL1 : TIdSSLIOHandlerSocketOpenSSL; MS: TMemoryStream; Url: String; begin MS := TMemoryStream.Create; try Url := 'https://98.236.135.12/music/3%20Doors%20Down/The%20Better%20Life/01%20Kryptonite.mp3'; MS.Clear; try Ssl1 := Tidssliohandlersocketopenssl.Create(NIL); //Pour Les Adresses Https Ssl1.Ssloptions.METHOD := Sslvsslv23; Idhttp1.Iohandler := Ssl1; Idhttp1.Request.Contenttype := 'text/xml'; Idhttp1.Request.Charset := 'utf-8'; IdHTTP1.Get(Url, MS); except on E: EIdHTTPProtocolException do Raise; end; MS.Position := 0; MS.SaveToFile('test.bin'); Application.ProcessMessages; finally MS.Free; Ssl1.Free; end;
http://id3.org/id3v2.4.0-structure
ID3v2 header
The first part of the ID3v2 tag is the 10 byte tag header, laid out
as follows:
ID3v2/file identifier "ID3"
ID3v2 version $04 00
ID3v2 flags %abcd0000
ID3v2 size 4 * %0xxxxxxx
source:https://github.com/pozitronik/TWinam...ster/ID3v2.pas
il faut télécharger les 10 premiers octets puis la taille de l’entête est dans 'ID3v2 size 4 * %0xxxxxxx'
j'ai essayé avec
faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 {*************************************************************************} FUNCTION Downhearderfile(CONST Url: STRING; CONST Destinationfilename: STRING): BOOLEAN; VAR Hinet: Hinternet; Hfile: Hinternet; Localfile: FILE; Header : ARRAY[0..9] OF BYTE; Tag : TAginfo; buffer: array[1..1024] of byte; Bytesread: Dword; TotalBytesread: Dword; Sizetag:Integer; BEGIN Result := FALSE; Hinet := InternetOpen('Delphi 5.x', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); // Hinet := Internetopen(PCHAR(APPLICATION.TITLE)), Internet_Open_TYPE_Preconfig,NIL,NIL,0); Hfile := Internetopenurl(Hinet,PCHAR(Url),NIL,0,0,0); IF Assigned(Hfile) THEN BEGIN TotalBytesread:=0; Assignfile(Localfile,Destinationfilename); REWRITE(Localfile,1); Internetreadfile(Hfile,@Header,SIZEOF(Header),Bytesread); TotalBytesread:=TotalBytesread+Bytesread; BLOCKWRITE(Localfile,Header,Bytesread); Sizetag:= Header[6] * $200000 + Header[7] * $4000 + Header[8] * $80 + Header[9] + 10; REPEAT Internetreadfile(Hfile,@BUFFER,SIZEOF(BUFFER),Bytesread); BLOCKWRITE(Localfile,BUFFER,Bytesread); TotalBytesread:=TotalBytesread+Bytesread; UNTIL (Bytesread = 0) OR (TotalBytesread>Sizetag); Closefile(Localfile); Result := TRUE; Internetclosehandle(Hfile); END; Internetclosehandle(Hinet); END; {Downhearderfile}
--> Downhearderfile('https://98.236.135.12/music/3%20Doors%20Down/The%20Better%20Life/01%20Kryptonite.mp3','test.bin')
mais ne donne rien
Merci de votre aide
Partager