GFWMA/GFWMAmod.bas

Attribute VB_Name = "GFWMAmod"
Option Explicit
'(c)2005 by Louis. Requires a reference to WMP.dll (Windows Media Player).
'NOTE: for attributes (ItemNames) see http://msdn.microsoft.com/library/default.asp?url=/library/en‑us/wmplay10/mmp_sdk/audioitemattributes.asp.
'NOTE: the copyright seems not be to changeable without 'permission'.
Dim WMPObject As Object
Dim WMPMediaObject As Object

Public Function WMAAudioTag_Read(ByVal WMAName As StringByRef SongName As StringByRef ArtistName As StringByRef AlbumName As StringByRef YearName As StringByRef Comment As StringByRef GenreName As StringByRef TrackNumberName As StringByRef Composer As StringByRef Publisher As StringByRef Copyright As StringByRef Conductor As StringByRef Writer As String) As Boolean
    On Error GoTo Error:
    If WMPObject Is Nothing Then Set WMPObject = New WindowsMediaPlayer
    Set WMPMediaObject = WMPObject.newMedia(WMAName)
    SongName = WMPMediaObject.getItemInfo("Title")
    ArtistName = WMPMediaObject.getItemInfo("Author")
    AlbumName = WMPMediaObject.getItemInfo("WM/AlbumTitle")
    Comment = WMPMediaObject.getItemInfo("MoreInfo")
    YearName = WMPMediaObject.getItemInfo("WM/Year")
    GenreName = WMPMediaObject.getItemInfo("Genre")
    TrackNumberName = WMPMediaObject.getItemInfo("WM/TrackNumber")
    Composer = WMPMediaObject.getItemInfo("WM/Composer")
    Publisher = WMPMediaObject.getItemInfo("WM/Publisher")
    Copyright = WMPMediaObject.getItemInfo("Copyright")
    Conductor = WMPMediaObject.getItemInfo("WM/Conductor")
    Writer = WMPMediaObject.getItemInfo("WM/Writer") 'WM/Writer did not work
'    '
'    Debug.Print WMPMediaObject.getItemInfo("AcquisitionTime")
'    Debug.Print WMPMediaObject.getItemInfo("AlbumID")
'    Debug.Print WMPMediaObject.getItemInfo("AlbumIDAlbumArtist")
'    Debug.Print WMPMediaObject.getItemInfo("Author")
'    Debug.Print WMPMediaObject.getItemInfo("AverageLevel")
'    Debug.Print WMPMediaObject.getItemInfo("Bitrate")
'    Debug.Print WMPMediaObject.getItemInfo("BuyNow")
'    Debug.Print WMPMediaObject.getItemInfo("BuyTickets")
'    Debug.Print WMPMediaObject.getItemInfo("Copyright")
'    Debug.Print WMPMediaObject.getItemInfo("CurrentBitrate")
'    Debug.Print WMPMediaObject.getItemInfo("Duration")
'    Debug.Print WMPMediaObject.getItemInfo("FileSize")
'    Debug.Print WMPMediaObject.getItemInfo("FileType")
'    Debug.Print WMPMediaObject.getItemInfo("Is_Protected")
'    Debug.Print WMPMediaObject.getItemInfo("IsVBR")
'    Debug.Print WMPMediaObject.getItemInfo("MediaType")
'    Debug.Print WMPMediaObject.getItemInfo("MoreInfo")
'    Debug.Print WMPMediaObject.getItemInfo("PeakValue")
'    Debug.Print WMPMediaObject.getItemInfo("ProviderLogoURL")
'    Debug.Print WMPMediaObject.getItemInfo("ProviderURL")
'    Debug.Print WMPMediaObject.getItemInfo("RecordingTime")
'    Debug.Print WMPMediaObject.getItemInfo("Writer")
'    Debug.Print WMPMediaObject.getItemInfo("RequestState")
'    Debug.Print WMPMediaObject.getItemInfo("SourceURL")
'    Debug.Print WMPMediaObject.getItemInfo("SyncState")
'    Debug.Print WMPMediaObject.getItemInfo("Title")
'    Debug.Print WMPMediaObject.getItemInfo("TrackingID")
'    Debug.Print WMPMediaObject.getItemInfo("UserCustom1")
'    Debug.Print WMPMediaObject.getItemInfo("UserCustom2")
'    Debug.Print WMPMediaObject.getItemInfo("UserEffectiveRating")
'    Debug.Print WMPMediaObject.getItemInfo("UserLastPlayedTime")
'    Debug.Print WMPMediaObject.getItemInfo("UserPlayCount")
'    Debug.Print WMPMediaObject.getItemInfo("UserPlaycountAfternoon")
'    Debug.Print WMPMediaObject.getItemInfo("UserPlaycountEvening")
'    Debug.Print WMPMediaObject.getItemInfo("UserPlaycountMorning")
'    Debug.Print WMPMediaObject.getItemInfo("UserPlaycountNight")
'    Debug.Print WMPMediaObject.getItemInfo("UserPlaycountWeekday")
'    Debug.Print WMPMediaObject.getItemInfo("UserPlaycountWeekend")
'    Debug.Print WMPMediaObject.getItemInfo("UserRating")
'    Debug.Print WMPMediaObject.getItemInfo("UserServiceRating")
'    Debug.Print WMPMediaObject.getItemInfo("WM/AlbumArtist")
'    Debug.Print WMPMediaObject.getItemInfo("WM/AlbumTitle")
'    Debug.Print WMPMediaObject.getItemInfo("WM/Category")
'    Debug.Print WMPMediaObject.getItemInfo("WM/Composer")
'    Debug.Print WMPMediaObject.getItemInfo("WM/Conductor")
'    Debug.Print WMPMediaObject.getItemInfo("WM/ContentDistributor")
'    Debug.Print WMPMediaObject.getItemInfo("WM/ContentGroupDescription")
'    Debug.Print WMPMediaObject.getItemInfo("WM/Writer")
'    Debug.Print WMPMediaObject.getItemInfo("WM/Genre")
'    Debug.Print WMPMediaObject.getItemInfo("WM/GenreID")
'    Debug.Print WMPMediaObject.getItemInfo("WM/InitialKey")
'    Debug.Print WMPMediaObject.getItemInfo("WM/Language")
'    Debug.Print WMPMediaObject.getItemInfo("WM/Lyrics")
'    Debug.Print WMPMediaObject.getItemInfo("WM/MCDI")
'    Debug.Print WMPMediaObject.getItemInfo("WM/MediaClassPrimaryID")
'    Debug.Print WMPMediaObject.getItemInfo("WM/MediaClassSecondaryID")
'    Debug.Print WMPMediaObject.getItemInfo("WM/Mood")
'    Debug.Print WMPMediaObject.getItemInfo("WM/ParentalRating")
'    Debug.Print WMPMediaObject.getItemInfo("WM/Period")
'    Debug.Print WMPMediaObject.getItemInfo("WM/ProtectionType")
'    Debug.Print WMPMediaObject.getItemInfo("WM/Provider")
'    Debug.Print WMPMediaObject.getItemInfo("WM/ProviderRating")
'    Debug.Print WMPMediaObject.getItemInfo("WM/ProviderStyle")
'    Debug.Print WMPMediaObject.getItemInfo("WM/Publisher")
'    Debug.Print WMPMediaObject.getItemInfo("WM/SubscriptionContentID")
'    Debug.Print WMPMediaObject.getItemInfo("WM/SubTitle")
'    Debug.Print WMPMediaObject.getItemInfo("WM/TrackNumber")
'    Debug.Print WMPMediaObject.getItemInfo("WM/UniqueFileIdentifier")
'    Debug.Print WMPMediaObject.getItemInfo("WM/WMCollectionGroupID")
'    Debug.Print WMPMediaObject.getItemInfo("WM/WMCollectionID")
'    Debug.Print WMPMediaObject.getItemInfo("WM/WMContentID")
'    Debug.Print WMPMediaObject.getItemInfo("WM/Writer")
'    Debug.Print WMPMediaObject.getItemInfo("WM/Year")
'    '
    WMAAudioTag_Read = True
    Exit Function
Error:
    WMAAudioTag_Read = False
    Exit Function
End Function

Public Function WMAAudioTag_ReadByte(ByVal WMAName As StringByRef SongName() As ByteByRef ArtistName() As ByteByRef AlbumName() As ByteByRef YearName() As ByteByRef Comment() As ByteByRef GenreName() As ByteByRef TrackNumberName() As ByteByRef Composer() As ByteByRef Publisher() As ByteByRef Copyright() As ByteByRef Conductor() As ByteByRef Writer() As ByteByVal BSLengthMax As Long) As Boolean
    Dim Song As String, Artist As String, Album As String, Year As String, CommentLocal As String, Genre As String, TrackNumber As String
    Dim ComposerLocal As String, PublisherLocal As String, CopyrightLocal As String, ConductorLocal As String, WriterLocal As String
    'begin
    Call WMAAudioTag_Read(WMAName, Song, Artist, Album, Year, CommentLocal, Genre, TrackNumber, ComposerLocal, PublisherLocal, CopyrightLocal, ConductorLocal, WriterLocal)
    Call GETFIXEDBYTESTRINGFROMSTRING(BSLengthMax, SongName(), Song)
    Call GETFIXEDBYTESTRINGFROMSTRING(BSLengthMax, ArtistName(), Artist)
    Call GETFIXEDBYTESTRINGFROMSTRING(BSLengthMax, AlbumName(), Album)
    Call GETFIXEDBYTESTRINGFROMSTRING(BSLengthMax, YearName(), Year)
    Call GETFIXEDBYTESTRINGFROMSTRING(BSLengthMax, Comment(), CommentLocal)
    Call GETFIXEDBYTESTRINGFROMSTRING(BSLengthMax, GenreName(), Genre)
    Call GETFIXEDBYTESTRINGFROMSTRING(BSLengthMax, TrackNumberName(), TrackNumber)
    Call GETFIXEDBYTESTRINGFROMSTRING(BSLengthMax, Composer(), ComposerLocal)
    Call GETFIXEDBYTESTRINGFROMSTRING(BSLengthMax, Publisher(), PublisherLocal)
    Call GETFIXEDBYTESTRINGFROMSTRING(BSLengthMax, Copyright(), CopyrightLocal)
    Call GETFIXEDBYTESTRINGFROMSTRING(BSLengthMax, Conductor(), ConductorLocal)
    Call GETFIXEDBYTESTRINGFROMSTRING(BSLengthMax, Writer(), WriterLocal)
End Function

Public Function WMAAudioTag_Write(ByVal WMAName As StringByRef SongName As StringByRef ArtistName As StringByRef AlbumName As StringByRef YearName As StringByRef Comment As StringByRef GenreName As StringByRef TrackNumberName As StringByRef Composer As StringByRef Publisher As StringByRef Copyright As StringByRef Conductor As StringByRef Writer As String) As Boolean
    On Error GoTo Error:
    If WMPObject Is Nothing Then Set WMPObject = New WindowsMediaPlayer
    Set WMPMediaObject = WMPObject.newMedia(WMAName)
    Call WMPMediaObject.setItemInfo("Title", SongName)
    Call WMPMediaObject.setItemInfo("Author", ArtistName)
    Call WMPMediaObject.setItemInfo("WM/AlbumTitle", AlbumName)
    Call WMPMediaObject.setItemInfo("MoreInfo", AlbumName)
    Call WMPMediaObject.setItemInfo("WM/Year", YearName)
    Call WMPMediaObject.setItemInfo("Genre", GenreName)
    Call WMPMediaObject.setItemInfo("WM/TrackNumber", TrackNumberName)
    Call WMPMediaObject.setItemInfo("WM/Composer", Composer)
    Call WMPMediaObject.setItemInfo("WM/Publisher", Publisher)
    'Call WMPMediaObject.setItemInfo("Copyright", Copyright) 'forbidden
    Call WMPMediaObject.setItemInfo("WM/Conductor", Conductor)
    Call WMPMediaObject.setItemInfo("WM/Writer", Writer)
    WMAAudioTag_Write = True
    Exit Function
Error:
    WMAAudioTag_Write = False
    Exit Function
End Function

'***ITEM NAMES***

'    * AcquisitionTime Attribute
'    * AlbumID Attribute
'    * AlbumIDAlbumArtist Attribute
'    * Author Attribute
'    * AverageLevel Attribute
'    * Bitrate Attribute
'    * BuyNow Attribute
'    * BuyTickets Attribute
'    * Copyright Attribute
'    * CurrentBitrate Attribute
'    * Duration Attribute
'    * FileSize Attribute
'    * FileType Attribute
'    * Is_Protected
'    * IsVBR Attribute
'    * MediaType Attribute
'    * MoreInfo Attribute
'    * PeakValue Attribute
'    * ProviderLogoURL Attribute
'    * ProviderURL Attribute
'    * RecordingTime Attribute
'    * Writer Attribute
'    * RequestState Attribute
'    * SourceURL Attribute
'    * SyncState Attribute
'    * Title Attribute
'    * TrackingID Attribute
'    * UserCustom1 Attribute
'    * UserCustom2 Attribute
'    * UserEffectiveRating Attribute
'    * UserLastPlayedTime Attribute
'    * UserPlayCount Attribute
'    * UserPlaycountAfternoon Attribute
'    * UserPlaycountEvening Attribute
'    * UserPlaycountMorning Attribute
'    * UserPlaycountNight Attribute
'    * UserPlaycountWeekday Attribute
'    * UserPlaycountWeekend Attribute
'    * UserRating Attribute
'    * UserServiceRating Attribute
'    * WM/AlbumArtist Attribute
'    * WM/AlbumTitle Attribute
'    * WM/Category Attribute
'    * WM/Composer Attribute
'    * WM/Conductor Attribute
'    * WM/ContentDistributor Attribute
'    * WM/ContentGroupDescription Attribute
'    * WM/Writer Attribute
'    * WM/Genre Attribute
'    * WM/GenreID Attribute
'    * WM/InitialKey Attribute
'    * WM/Language Attribute
'    * WM/Lyrics Attribute
'    * WM/MCDI Attribute
'    * WM/MediaClassPrimaryID Attribute
'    * WM/MediaClassSecondaryID Attribute
'    * WM/Mood Attribute
'    * WM/ParentalRating Attribute
'    * WM/Period Attribute
'    * WM/ProtectionType Attribute
'    * WM/Provider Attribute
'    * WM/ProviderRating Attribute
'    * WM/ProviderStyle Attribute
'    * WM/Publisher Attribute
'    * WM/SubscriptionContentID Attribute
'    * WM/SubTitle Attribute
'    * WM/TrackNumber Attribute
'    * WM/UniqueFileIdentifier Attribute
'    * WM/WMCollectionGroupID Attribute
'    * WM/WMCollectionID Attribute
'    * WM/WMContentID Attribute
'    * WM/Writer Attribute
'    * WM/Year Attribute

'***END OF ITEM NAMES***


[END OF FILE]