Herkese merhaba arkadaşlar ben kruvazör.
Bugün sizlerle kısaca mp3 dosyalarındaki ID3 taglarını ne işe yaradıklarını konuşacağız ve ardından bu tagları görüntülemek ve değiştirmek için basit bir
c# uygulaması yapacağız.
mp3 tagları
buradan tüm taglara ulaşabilirsiniz.
MP3 ID3 tagleri, MP3 dosyalarındaki içerik hakkında bilgi barındırmak için kullanılan yapılardır. Bu yapı, şarkının adı, sanatçı, albüm ismi, çıkış yılı, bpm ve daha birçok bilgi içerebilir.
Kısaca müzik için detay bilgileri içeren tagler diyebiliriz.
Örneğimize geçelim.
13 textbox
12 label
2 button
1 groupbox
Üst menüden nuget paketlerine gelelim
Bu paketi indirdikten sonra kodlarımızı yazmaya başlayabiliriz.
dosya seç buttonuna gelelim ve kodlarımızı ekleyelim
Bugün sizlerle kısaca mp3 dosyalarındaki ID3 taglarını ne işe yaradıklarını konuşacağız ve ardından bu tagları görüntülemek ve değiştirmek için basit bir
c# uygulaması yapacağız.
mp3 tagları
buradan tüm taglara ulaşabilirsiniz.
MP3 ID3 tagleri, MP3 dosyalarındaki içerik hakkında bilgi barındırmak için kullanılan yapılardır. Bu yapı, şarkının adı, sanatçı, albüm ismi, çıkış yılı, bpm ve daha birçok bilgi içerebilir.
Kısaca müzik için detay bilgileri içeren tagler diyebiliriz.
Örneğimize geçelim.
13 textbox
12 label
2 button
1 groupbox
Üst menüden nuget paketlerine gelelim
Bu paketi indirdikten sonra kodlarımızı yazmaya başlayabiliriz.
dosya seç buttonuna gelelim ve kodlarımızı ekleyelim
C#:
private void button1_Click(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog = new OpenFileDialog()) //kullanıcıya filedialog göstererek müzik dosyasını seçmesini sağlıyoruz.
{
openFileDialog.Filter = "MP3 Files|*.mp3";
openFileDialog.Title = "MP3 harici dosya valla kabul etmem";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
textBox1.Text = openFileDialog.FileName;
LoadMP3Tags();
}
}
}
LoadMP3Tags isimli bir fonksiyon oluşturalım ve kodlarımızı yazalım
C#:
private void LoadMP3Tags()
{
string mp3FilePath = textBox1.Text;
// Dosya yolu boş ise işlemi sonlandır
if (string.IsNullOrEmpty(mp3FilePath))
return;
try
{
var file = TagLib.File.Create(mp3FilePath);
// Tagleri textboxlara atıyorum
textBox2.Text = file.Tag.Title;
textBox3.Text = file.Tag.Album;
textBox4.Text = file.Tag.Performers.Length > 0 ? file.Tag.Performers[0] : "";
textBox5.Text = file.Tag.AlbumArtists.Length > 0 ? file.Tag.AlbumArtists[0] : "";
textBox6.Text = file.Tag.Composers.Length > 0 ? file.Tag.Composers[0] : "";
textBox7.Text = file.Tag.Genres.Length > 0 ? file.Tag.Genres[0] : "";
textBox8.Text = file.Tag.Year.ToString();
textBox9.Text = file.Tag.Comment;
textBox10.Text= file.Tag.BeatsPerMinute.ToString();
textBox13.Text = file.Tag.Lyrics;
}
catch (Exception ex)
{
MessageBox.Show($"Hata: {ex.Message}", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Uygula isimli buttona gelelim ve son kez buraya da kodlarımızı yazalım
C#:
private void button2_Click(object sender, EventArgs e)
{
// MP3 dosyasının yolunu al
string mp3FilePath = textBox1.Text;
if (string.IsNullOrEmpty(mp3FilePath))
{
MessageBox.Show("Lütfen bir MP3 dosyası seçin.", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
try
{
// TagLib# kullanarak MP3 dosyasının tag şeysilerine bakma
var file = TagLib.File.Create(mp3FilePath);
file.RemoveTags(TagTypes.AllTags);
//yukardai gibi aldım verdim yabıyoz işte yormayın beni yorum satırı felan
var tag = file.GetTag(TagTypes.Id3v2, true);
tag.Title = textBox2.Text;
tag.Album = textBox3.Text;
tag.Performers = new[] { textBox4.Text };
tag.AlbumArtists = new[] { textBox5.Text };
tag.Composers = new[] { textBox6.Text };
tag.Genres = new[] { textBox7.Text };
tag.Year = (uint)int.Parse(textBox8.Text);
tag.Comment = textBox9.Text;
tag.BeatsPerMinute = ((uint) int.Parse(textBox10.Text));
tag.Lyrics = textBox13.Text;
// Değişiklikleri kaydet
file.Save();
MessageBox.Show("Tag'ler başarıyla güncellendi.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show($"Hata: {ex.Message}", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
TEST
Gördüğümüz üzere verileri güzel bir biçimde yazıyor ve okuyor.
KODLARIN TAMAMI:
Gördüğümüz üzere verileri güzel bir biçimde yazıyor ve okuyor.
KODLARIN TAMAMI:
C#:
using System;
[COLOR=rgb(255, 255, 255)][SIZE=5]using System.Windows.Forms;
using TagLib;
namespace Mp3_MetaMaker
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.Filter = "MP3 Files|*.mp3";
openFileDialog.Title = "MP3 harici dosya valla kabul etmem";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
textBox1.Text = openFileDialog.FileName;
LoadMP3Tags();
}
}
}
private void LoadMP3Tags()
{
string mp3FilePath = textBox1.Text;
if (string.IsNullOrEmpty(mp3FilePath))
return;
try
{
var file = TagLib.File.Create(mp3FilePath);
textBox2.Text = file.Tag.Title;
textBox3.Text = file.Tag.Album;
textBox4.Text = file.Tag.Performers.Length > 0 ? file.Tag.Performers[0] : "";
textBox5.Text = file.Tag.AlbumArtists.Length > 0 ? file.Tag.AlbumArtists[0] : "";
textBox6.Text = file.Tag.Composers.Length > 0 ? file.Tag.Composers[0] : "";
textBox7.Text = file.Tag.Genres.Length > 0 ? file.Tag.Genres[0] : "";
textBox8.Text = file.Tag.Year.ToString();
textBox9.Text = file.Tag.Comment;
textBox10.Text= file.Tag.BeatsPerMinute.ToString();
textBox13.Text = file.Tag.Lyrics;
}
catch (Exception ex)
{
MessageBox.Show($"Hata: {ex.Message}", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void button2_Click(object sender, EventArgs e)
{
string mp3FilePath = textBox1.Text;
if (string.IsNullOrEmpty(mp3FilePath))
{
MessageBox.Show("Lütfen bir MP3 dosyası seçin.", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
try
{
var file = TagLib.File.Create(mp3FilePath);
file.RemoveTags(TagTypes.AllTags);
//yukardai gibi aldım verdim yabıyoz işte yormayın beni yorum satırı felan
var tag = file.GetTag(TagTypes.Id3v2, true);
tag.Title = textBox2.Text;
tag.Album = textBox3.Text;
tag.Performers = new[] { textBox4.Text };
tag.AlbumArtists = new[] { textBox5.Text };
tag.Composers = new[] { textBox6.Text };
tag.Genres = new[] { textBox7.Text };
tag.Year = (uint)int.Parse(textBox8.Text);
tag.Comment = textBox9.Text;
tag.BeatsPerMinute = ((uint) int.Parse(textBox10.Text));
tag.Lyrics = textBox13.Text;
// Değişiklikleri kaydet
file.Save();
MessageBox.Show("Tag'ler başarıyla güncellendi.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show($"Hata: {ex.Message}", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
Okuduğunuz için teşekkürler.