Jump to content

Search the Community

Showing results for tags 'id3'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Announcements and Site News
    • Administration
  • AutoIt v3
    • AutoIt Help and Support
    • AutoIt Technical Discussion
    • AutoIt Example Scripts
  • Scripting and Development
    • Developer General Discussion
    • Language Specific Discussion
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Categories

  • AutoIt Team
    • Beta
    • MVP
  • AutoIt
    • Automation
    • Databases and web connections
    • Data compression
    • Encryption and hash
    • Games
    • GUI Additions
    • Hardware
    • Information gathering
    • Internet protocol suite
    • Maths
    • Media
    • PDF
    • Security
    • Social Media and other Website API
    • Windows
  • Scripting and Development
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Categories

  • Forum FAQ
  • AutoIt

Calendars

  • Community Calendar

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Member Title


Location


WWW


Interests

Found 2 results

  1. Hello, Experiencing strange behavior when I get ID3 tags from certain files. (using ID3_v3.4.au3) It works fine with most of the files but in certain repeatable cases, it loads only the artist tag... But not really: In MsgBox, it only shows artist tag and no title tag. Not even the " - " text (weird!) nor total time In Playlist, it does the same thing. In Label, it shows both artist and title tag and current/total time correctly. In ConsoleWrite, all values are also shown correctly. Although, in 'Solid Earth' case and similar, it writes the tags in the same row: $sTrackArtist: The Future Sound Of London$sTrackTitle: Solid Earth$sTrackArtist: Ty Segall $sTrackTitle: Imaginary Person Cannot wrap my head around it... Thanks for your help Func ReadID3Tags()     $sFileTagInfo = _ID3ReadTag($sAudioFilePath)     ;MsgBox(0,"$sFileTagInfo",$sFileTagInfo)     $sTrackTitle = _ID3GetTagField("TIT2")         If StringLen($sTrackTitle) = 0 Then             $sTrackTitle = _ID3GetTagField("Title")         EndIf     $sTrackArtist = _ID3GetTagField("TPE1")         If StringLen($sTrackArtist) = 0 Then             $sTrackArtist = _ID3GetTagField("Artist")         EndIf     $sTrackAlbum = _ID3GetTagField("TALB")         If StringLen($sTrackAlbum) = 0 Then             $sTrackAlbum = _ID3GetTagField("Album")         EndIf     $sTrackYear = _ID3GetTagField("TYER")         If StringLen($sTrackYear) = 0 Then             $sTrackYear = _ID3GetTagField("Year")         EndIf     Sleep(20)     GUICtrlSetData($idLabel_ArtistName, StringUpper($sTrackArtist))     GUICtrlSetData($idLabel_TrackName, StringUpper($sTrackTitle))              ; Debugging messages     ConsoleWrite("$sTrackArtist: " & $sTrackArtist & @CRLF)     ConsoleWrite("$sTrackTitle: " & $sTrackTitle & @CRLF)          MsgBox(0, "id3", $sTrackArtist & " - " & $sTrackTitle) EndFunc Func GetTrackProperties()     $nTrackLengthBytes   = _BASS_ChannelGetLength($hAudioFile, $BASS_POS_BYTE)     $nTrackLengthSeconds = _BASS_ChannelBytes2Seconds($hAudioFile, $nTrackLengthBytes)     $nTrackLengthSecondsRound = Round($nTrackLengthSeconds, 0)     GUICtrlSetData($idLabel_TrackPosAndLength, $nTrackCurrPosSecondsRound & " / " & $nTrackLengthSecondsRound)     GUICtrlSetData($idLabel_TrackPosAndLengthBytes, $nTrackCurrPosBytes & " / " & $nTrackLengthBytes) EndFunc Func AddToPlaylist()     MsgBox(0, "id3", $aAudioFile[3][$nAudioFilePosY] & " - " & $aAudioFile[2][$nAudioFilePosY] & "|" & $nTrackLengthSecondsRound)     Local $sPlaylistItem = $sTrackArtist & " - " & $sTrackTitle & "|" & $nTrackLengthSecondsRound     Local $Item1 = GUICtrlCreateListViewItem($sPlaylistItem, $idListView_Playlist) EndFunc
  2. I was trying to clean up my MP3 collection and was not happy. Not happy because apps claiming to remove all ID3 tags were leaving lots behind. What do geeks do when they are not happy? Yup, do it themselves! It turned out to be MUCH more difficult than I had imagined! ID3V1 are easy, they come at the end of the file and are fixed length. ID3V2 are insane, and can be many times the size of the song itself! Combine that with other re-tagging or tag removal apps doing a bad job at housekeeping and you can have some pretty broken tags. MP3 files are designed to be streamable and are built in packets called frames. The frame headers contain information such as sample rate, samples per frame, bitrate, and padding, and those 4 key pieces of information are used to determine how many bytes the frame will be. Of course it isn't actually that simple, since some of those factors depend on what MPEG version it is and if it is layer 1, 2, or 3. But once you find a good header and can get the frame length, you jump to the next position and check to see if it is a valid header, get the frame length, rinse and repeat. It is suggested to verify at least 3-5 headers but I found that totally insufficient. My collection of nearly 11,000 songs in various encodings showed me that to be reasonably certain that we were out of the ID3V2 madness I had to verify at least 10 headers, but that was often not even enough. I settled on 50 being the default value, and allow 150 verified headers to be REALLY sure. There of course is a time penalty, but it is surprisingly quick - my standard benchmark of 423 songs, some of which have 5 or more ID3V1 tags and ID3V2 tags that go over 300KB deep, only takes 2 and a half minutes verifying 50 frames. Enjoy Ian Edit 9/26/15 - updated code ID3 Clean 1.24.au3
×
×
  • Create New...