AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Mp3FileUtils
Thema durchsuchen
Ansicht
Themen-Optionen

Mp3FileUtils

Ein Thema von Gausi · begonnen am 15. Jun 2006 · letzter Beitrag vom 22. Jun 2013
 
MW97

Registriert seit: 20. Nov 2010
Ort: Sachsen-Anhalt, Region Magdeburg
13 Beiträge
 
Delphi 7 Personal
 
#28

AW: Mp3FileUtils

  Alt 16. Aug 2011, 14:24
Delphi-Quellcode:
type
    TAudioInf=class
      private
        procedure GetMp3Info;
        procedure GetWmaInfo;
        procedure SetUnknown;
      public
        Interpret: string;
        Titel : string;
        Pfad : string;
        Album : string;
        Jahr : string;
        Dauer : integer;

        //Titelinformationsprozeduren
        procedure GetAudioInfo(FileName: string);
        function GetPlaylistTitel:string;
  end;

implementation

uses
  SysUtils, Mp3FileUtils, ATL_WMAfile, Classes;

//*********************************
//Prozeduren für Titelinformationen
//*********************************

//Hauptprozedur für Titelinformationen
procedure TAudioInf.GetAudioInfo(FileName: string);
begin
  Pfad := filename;
  if (AnsiLowerCase(ExtractFileExt(FileName)) = '.mp3') then
    GetMp3Info
  else
    if AnsiLowerCase(ExtractFileExt(FileName)) = '.wmathen
      GetWMAInfo
    else
      SetUnknown;
  if Interpret='then Interpret:='Unbekannter Interpret';
  if Album=''     then Album:='Unbekanntes Album';
  if Jahr=''      then Jahr:='unbekanntes Jahr';
end;

//Prozedur für Titelinformationen von MP3-Dateien
procedure TAudioInf.GetMp3Info;
var
  MpegInfo: TMpegInfo;
  ID3v2Tag: TID3V2Tag;
  ID3v1tag: TID3v1Tag;
  Stream: TFileStream;
begin
  // Daten mit MP3FileUtils auslesen
  Mpeginfo:=TMpegInfo.Create;
  ID3v2Tag:=TID3V2Tag.Create;
  ID3v1tag:=TID3v1Tag.Create;
  Stream := TFileStream.Create(Pfad, fmOpenRead or fmShareDenyWrite);
  try
  id3v1tag.ReadFromStream(Stream);
  Stream.Seek(0, sobeginning);
  Id3v2tag.ReadFromStream(Stream);
  if Not id3v2Tag.exists then
    Stream.Seek(0, sobeginning)
  else
    Stream.Seek(id3v2tag.size, soFromBeginning);
  Mpeginfo.LoadFromStream(Stream);
  Stream.free;
  //Daten übertragen
  if mpeginfo.FirstHeaderPosition >- 1 then
  begin
    if id3v2tag.artist <> 'then
      Interpret := id3v2tag.artist
    else
      Interpret := id3v1tag.artist;
    if id3v2tag.Album <> 'then
      Album :=id3v2tag.Album
    else
      Album:=id3v1tag.Album;
    if id3v2tag.Year<> 'then
      Jahr:=id3v2tag.Year
    else
      Jahr:=id3v1tag.Year;
    if id3v2tag.title <> 'then
      Titel := id3v2tag.title
    else
      if id3v1tag.title <> 'then
        Titel := id3v1tag.title
      else
        Titel := ExtractFileName(Pfad);
    Dauer := mpeginfo.dauer;
  end else
    SetUnknown;
  finally
  MpegInfo.Free;
  Id3v2Tag.Free;
  Id3v1Tag.Free;
  end;
end;

//Prozedur für Titelinformationen von WMA-Dateien
procedure TAudioInf.GetWmaInfo;
var
  wmaFile: TWMAfile;
begin
  if Not FileExists(Pfad) then
  begin
    SetUnknown;
    exit;
  end;
  try
  wmaFile := TWMAFile.create;
  if wmaFile.ReadFromFile(Pfad) then
  begin
    if wmaFile.Title <> 'then
      Titel := wmaFile.Title
    else
      Titel := ExtractFilename(Pfad);
      Interpret := wmaFile.Artist;
      Dauer := Round(wmaFile.Duration);
      Album :=wmaFile.Album;
      Jahr :=wmaFile.Year;
  end else
    SetUnknown;
  finally
  wmaFile.Free;
  end;
end;

//Prozedur für Titelinformationen von unbekannten Dateien
procedure TAudioInf.SetUnknown;
begin
  Titel := ExtractFileName(Pfad);
  Interpret := '';
  Dauer := 0;
end;

//Prozedur für Titelinformationen nach %Interpret%-%Titel%
function TAudioInf.GetPlaylistTitel:string;
begin
  if Trim(Interpret)='then
    result := Titel
  else
    result := Interpret + ' - ' + Titel;
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz