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 :

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;
mais je n'arrive pas à mettre une taille de téléchargement

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

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}
faire
--> 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