Changeset 5


Ignore:
Timestamp:
Feb 2, 2015, 10:50:53 PM (9 years ago)
Author:
chronos
Message:
  • Replace underscore by space in file name.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GenPlaylist.pas

    r4 r5  
    6161  Files: TStringList;
    6262  I: Integer;
    63   FileName: string;
     63  Creator: string;
     64  Album: string;
     65  Location: string;
     66  LocationOriginal: string;
     67  Title: string;
     68  Part: string;
     69  TrackNum: string;
     70  Out: Integer;
     71  NameRemoved: Boolean;
    6472begin
    6573  Files := TStringList.Create;
     
    6876  WriteLn('<trackList>');
    6977  FileSearch(Files, ParamStr(1), ['.mp3', '.ac3', '.flac', '.it', '.m4a', '.wma', '.s3m', '.ogg'], ParamStr(1));
    70   for I := 0 to Files.Count - 1 do begin
    71     FileName := StringReplace(Files[I], '&', '&amp;', [rfReplaceAll]);
     78  for I := 0 to Files.Count - 1 do begin 
     79    LocationOriginal := StringReplace(Files[I], '&', '&amp;', [rfReplaceAll]);
     80    Location := StringReplace(LocationOriginal, '_', ' ', [rfReplaceAll]);
     81    Album := ExtractFileName(ExtractFileDir(Location));
     82    NameRemoved := False;
     83   
     84    // Detect Creator from directory name
     85    if Pos(' - ', Album) > 0 then begin
     86      Creator := Copy(Album, 1, Pos(' - ', Album) - 1);
     87      Delete(Album, 1, Length(Creator) + 3);
     88    end else Creator := Album;
     89    Title := Copy(ExtractFileName(Location), 1, Length(ExtractFileName(Location)) - Length(ExtractFileExt(Location)));
     90   
     91    // Remove starting with album name from title
     92    Part := Creator + ' - ';
     93    if Copy(Title, 1, Length(Part)) = Part then begin
     94      Delete(Title, 1, Length(Part));
     95      NameRemoved := True;
     96    end;
     97     
     98    // Try to load Creator from name
     99    if (Pos(' - ', Title) > 0) and (not NameRemoved) then begin
     100      Part := Copy(Title, 1, Pos(' - ', Title) - 1);
     101      // Avoid track number which can be first title part
     102      if not TryStrToInt(Part, Out) then begin
     103        Creator := Part;
     104        Delete(Title, 1, Length(Creator) + 3);
     105      end;
     106    end;
     107    // Detect track number from title
     108    if Pos(' - ', Title) > 0 then begin
     109      TrackNum := Copy(Title, 1, Pos(' - ', Title) - 1);
     110      if TryStrToInt(TrackNum, Out) then       
     111        Delete(Title, 1, Length(TrackNum) + 3)
     112        else TrackNum := '';
     113    end else TrackNum := '';
     114   
    72115    WriteLn('<track>');
    73     WriteLn('<title>' + Copy(ExtractFileName(FileName), 1, Length(ExtractFileName(FileName)) - Length(ExtractFileExt(FileName))) + '</title>');
    74     WriteLn('<location>' + FileName + '</location>');
    75     WriteLn('<album>' + ExtractFileName(ExtractFileDir(FileName)) + '</album>');
     116    WriteLn('<title>' + Title + '</title>');
     117    WriteLn('<location>' + LocationOriginal + '</location>');
     118    WriteLn('<album>' + Album + '</album>');
     119    WriteLn('<creator>' + Creator + '</creator>');
     120    WriteLn('<trackNum>' + TrackNum + '</trackNum>');
    76121    WriteLn('</track>');
    77122  end;
Note: See TracChangeset for help on using the changeset viewer.