<アルバム アートを表示する>
Windows Media Player では、可能であれば大きなバージョンと小さなバージョンの両方のアルバム アートがダウンロードされます。
これらの画像ファイルは、アルバム トラックと同じフォルダに格納されますが、既定では非表示になります。
これらの画像は、ブラウザでアクセスできるように Web サイトの子フォルダにコピーする必要があります。
この処理は、最初に適切な画像を検索してから、Web サイトのサブフォルダにそのファイルをコピーし、次に必要になったときに簡単に取得できるように一意の名前を付けることで行います。
アルバム アートが見つからない場合は、小さな透明の画像が代わりに使用されます。
Public Function GetAlbumArtUrl(ByVal size As AlbumArtSize) As String
Dim albumArtFileName As String = GetCustomAlbumArtFileName(size)
Dim albumArtFullFilename As String = _ Path.Combine(_albumArtDirectory, albumArtFileName)
Dim fileExists As Boolean = File.Exists(albumArtFullFilename)
If Not fileExists Then
Dim dir As String = Path.GetDirectoryName(Tracks(0).Location)
Dim filename As String
If Directory.Exists(dir) Then
filename = GetRealAlbumArtFileName(dir, size)
If Not filename Is Nothing Then
File.Copy(filename, albumArtFullFilename)
File.SetAttributes(albumArtFullFilename, FileAttributes.Normal)
fileExists = True
End If
End If
End If
Dim url As String
If fileExists Then
url = "/coding4fun/images/coolapps/musiclib/AlbumArt/" & _ albumArtFileName
Else
url = "/coding4fun/images/coolapps/musiclib/dot.gif"
End If
Return url
End Function
GetCustomAlbumArtFileName メソッドでは、画像のコピーを保存し、それ以後の要求で簡単に取得できるようにするために使用する一貫性のある名前が作成されます。
Private Function GetCustomAlbumArtFileName(ByVal size As AlbumArtSize) As String
Return String.Format("{0}-{1}-{2}.jpg", _ GetAlphanumericString(_artist.Name), _ GetAlphanumericString(Name), size.ToString)
End Function
Private Function GetAlphanumericString(ByVal s As String) As String
Dim sb As StringBuilder = New StringBuilder
For Each c As Char In s
If Char.IsLetterOrDigit(c) Then
sb.Append(c)
End If
Next
Return sb.ToString()
End Function
さらに興味深いものにするために、アルバム アートのファイル名を次のいずれかのパターンと一致させることができます。
大 |
小 |
AlbumArt_{FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF}_Large.jpg |
AlbumArt_{FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF}_Small.jpg |
AlbumArt__Large.jpg |
AlbumArt__Small.jpg |
Folder.jpg |
AlbumArtSmall.jpg |
GetRealAlbumArtFileName は、アルバム アートが存在する場合に、前述のパターンを検索することでそのファイル名を取得します。
Private Function GetRealAlbumArtFileName(ByVal dir As String, _ ByVal size As AlbumArtSize) As String
Dim filename As String = Nothing
Dim filenames() As String = Directory.GetFiles(dir, "AlbumArt*" & _ size.ToString() & ".jpg")
If (filenames.Length > 0) Then
filename = filenames(0)
ElseIf (size = AlbumArtSize.Large) Then
Dim file As FileInfo = New FileInfo(Path.Combine(dir, "Folder.jpg"))
If file.Exists Then
filename = file.FullName
End If
End If
Return filename
End Function
最終更新:2014年01月05日 15:37