Předmět Autor Datum
Nájdeš si nejakú knižnicu na čítanie tagov a použiješ ju. Napr. čo som pogooglil, tak TagLib# by mal…
los 03.12.2012 18:19
los
jak na to ?
Citron 06.12.2012 20:58
Citron
https://github.com/mono/taglib-sharp/blob/master/e xamples/ReadFromUri.cs
Wikan 06.12.2012 21:30
Wikan
tohle není vb.net
Citron 09.12.2012 13:14
Citron
Imports TagLib Imports Gnome.Vfs Public Class ReadFromUri Public Shared Sub Write(name As String, va…
Wikan 09.12.2012 13:15
Wikan
kam mám hodit ten soubor abych ho mohl importovat ?
Citron 09.12.2012 13:20
Citron
To nemáš nikam hodit. To je příklad použití.
Wikan 09.12.2012 13:21
Wikan
jasně, ale jak mám importovat tu knihovnu "taglib" a "gnome"
Citron 09.12.2012 13:23
Citron
Důležitý je ten taglib a ten máš hned v prvním odkazu.
Wikan 09.12.2012 13:29
Wikan
já to chápu ale jak ! stáhnu si ten ten zip ( poslední verzi) rozbalím to a co s tím dál ?? to nevím…
Citron 09.12.2012 13:32
Citron
Přidáš referenci na tu knihovnu.
Wikan 09.12.2012 13:49
Wikan
ok moc díky, ještě kde seženu ten gnome ? prosím
Citron 09.12.2012 13:54
Citron
Není potřeba, stačí to přepsat na standardní .net funkce. poslední
Wikan 09.12.2012 14:01
Wikan
Imports TagLib
Imports Gnome.Vfs

Public Class ReadFromUri
	Public Shared Sub Write(name As String, value As Object)
		Console.WriteLine("{0,20}: {1}", name, If(value Is Nothing, "", value))
	End Sub

	Public Shared Sub Write(name As String, values As String())
		Console.WriteLine("{0,20}: {1}", name, If(values Is Nothing, "", [String].Join(vbLf & "            ", values)))
	End Sub

	Public Shared Sub Main(args As String())
		If args.Length = 0 Then
			Console.[Error].WriteLine("USAGE: mono ReadFromUri.exe PATH [...]")
			Return
		End If

		Gnome.Vfs.Vfs.Initialize()

		Dim start As DateTime = DateTime.Now
		Dim songs_read As Integer = 0
		Try
			For Each path As String In args
				Dim uri As String = path
				Console.WriteLine(uri)
				Dim file As TagLib.File = Nothing

				Try
					Dim file_info As New System.IO.FileInfo(uri)
					uri = Gnome.Vfs.Uri.GetUriFromLocalPath(file_info.FullName)
				Catch
				End Try

				Try
					file = TagLib.File.Create(New VfsFileAbstraction(uri))
				Catch generatedExceptionName As TagLib.UnsupportedFormatException
					Console.WriteLine("UNSUPPORTED FILE: " & uri)
					Console.WriteLine([String].Empty)
					Console.WriteLine("---------------------------------------")
					Console.WriteLine([String].Empty)
					Continue Try
				End Try

				Console.WriteLine("Tags on disk:   " + file.TagTypesOnDisk)
				Console.WriteLine("Tags in object: " + file.TagTypes)
				Console.WriteLine([String].Empty)

				Write("Grouping", file.Tag.Grouping)
				Write("Title", file.Tag.Title)
				Write("TitleSort", file.Tag.TitleSort)
				Write("Album Artists", file.Tag.AlbumArtists)
				Write("Album Artists Sort", file.Tag.AlbumArtistsSort)
				Write("Performers", file.Tag.Performers)
				Write("Performers Sort", file.Tag.PerformersSort)
				Write("Composers", file.Tag.Composers)
				Write("Composers Sort", file.Tag.ComposersSort)
				Write("Conductor", file.Tag.Conductor)
				Write("Album", file.Tag.Album)
				Write("Album Sort", file.Tag.AlbumSort)
				Write("Comment", file.Tag.Comment)
				Write("Copyright", file.Tag.Copyright)
				Write("Genres", file.Tag.Genres)
				Write("BPM", file.Tag.BeatsPerMinute)
				Write("Year", file.Tag.Year)
				Write("Track", file.Tag.Track)
				Write("TrackCount", file.Tag.TrackCount)
				Write("Disc", file.Tag.Disc)
				Write("DiscCount", file.Tag.DiscCount)

				Console.WriteLine("Lyrics:" & vbLf + file.Tag.Lyrics & vbLf)

				Console.WriteLine("Media Types:     " + file.Properties.MediaTypes & vbLf)

				For Each codec As TagLib.ICodec In file.Properties.Codecs
					Dim acodec As TagLib.IAudioCodec = TryCast(codec, TagLib.IAudioCodec)
					Dim vcodec As TagLib.IVideoCodec = TryCast(codec, TagLib.IVideoCodec)

					If acodec IsNot Nothing AndAlso (acodec.MediaTypes And TagLib.MediaTypes.Audio) <> TagLib.MediaTypes.None Then
						Console.WriteLine("Audio Properties : " + acodec.Description)
						Console.WriteLine("Bitrate:    " + acodec.AudioBitrate)
						Console.WriteLine("SampleRate: " + acodec.AudioSampleRate)
						Console.WriteLine("Channels:   " + acodec.AudioChannels & vbLf)
					End If

					If vcodec IsNot Nothing AndAlso (vcodec.MediaTypes And TagLib.MediaTypes.Video) <> TagLib.MediaTypes.None Then
						Console.WriteLine("Video Properties : " + vcodec.Description)
						Console.WriteLine("Width:      " + vcodec.VideoWidth)
						Console.WriteLine("Height:     " + vcodec.VideoHeight & vbLf)
					End If
				Next

				If file.Properties.MediaTypes <> TagLib.MediaTypes.None Then
					Console.WriteLine("Length:     " + file.Properties.Duration & vbLf)
				End If

				Dim pictures As IPicture() = file.Tag.Pictures

				Console.WriteLine("Embedded Pictures: " + pictures.Length)

				For Each picture As IPicture In pictures
					Console.WriteLine(picture.Description)
					Console.WriteLine("   MimeType: " + picture.MimeType)
					Console.WriteLine("   Size:     " + picture.Data.Count)
					Console.WriteLine("   Type:     " + picture.Type)
				Next

				Console.WriteLine([String].Empty)
				Console.WriteLine("---------------------------------------")
				Console.WriteLine([String].Empty)

				songs_read += 1
			Next
		Finally
			Gnome.Vfs.Vfs.Shutdown()
		End Try

		Dim [end] As DateTime = DateTime.Now

		Console.WriteLine("Total running time:    " & ([end] - start))
		Console.WriteLine("Total files read:      " & songs_read)

		If songs_read > 0 Then
			Console.WriteLine("Average time per file: " & Convert.ToString(New TimeSpan(([end] - start).Ticks \ songs_read)))
		End If
	End Sub
End Class

Public Class VfsFileAbstraction
	Implements TagLib.File.IFileAbstraction
	Private m_name As String

	Public Sub New(file As String)
		m_name = file
	End Sub

	Public ReadOnly Property Name() As String
		Get
			Return m_name
		End Get
	End Property

	Public ReadOnly Property ReadStream() As System.IO.Stream
		Get
			Return New VfsStream(Name, System.IO.FileMode.Open)
		End Get
	End Property

	Public ReadOnly Property WriteStream() As System.IO.Stream
		Get
			Return New VfsStream(Name, System.IO.FileMode.Open)
		End Get
	End Property

	Public Sub CloseStream(stream As System.IO.Stream)
		stream.Close()
	End Sub
End Class

Zpět do poradny Odpovědět na původní otázku Nahoru