Loading lib/mlm/file-tags.vala +147 −78 Original line number Diff line number Diff line Loading @@ -99,6 +99,8 @@ namespace MLM { private Gee.HashMap<string, int?> int_frames; /* Data frames. */ private Gee.HashMap<int, GLib.Bytes> data_frames; /* Invalid frames. */ private Gee.ArrayList<Id3Tag.Frame> invalid_frames; /** * The artist. Loading Loading @@ -273,24 +275,76 @@ namespace MLM { if (tag.frames.length == 0) return; var invalid_frames = new Gee.ArrayList<Id3Tag.Frame>(); for (int i = 0; i < tag.frames.length; i++) { var frame = tag.frames[i]; invalid_frames = new Gee.ArrayList<Id3Tag.Frame>(); for (int i = 0; i < tag.frames.length; i++) set_frame(tag.frames[i]); foreach (Id3Tag.Frame frame in invalid_frames) { tag.detachframe(frame); } invalid_frames = null; } /* Sets a frame. */ private void set_frame(Id3Tag.Frame frame) { if (frame.id == FrameId.ARTIST) { string_frames[FrameId.ARTIST] = _artist = frame.get_text(); set_artist_frame(frame); } else if (frame.id == FrameId.TITLE) { string_frames[FrameId.TITLE] = _title = frame.get_text(); set_title_frame(frame); } else if (frame.id == FrameId.ALBUM) { string_frames[FrameId.ALBUM] = _album = frame.get_text(); set_album_frame(frame); } else if (frame.id == FrameId.BAND) { string_frames[FrameId.BAND] = _band = frame.get_text(); set_band_frame(frame); } else if (frame.id == FrameId.YEAR) { int_frames[FrameId.YEAR] = _year = int.parse(frame.get_text()); set_year_frame(frame); } else if (frame.id == FrameId.TRACK) { set_track_frame(frame); } else if (frame.id == FrameId.DISC) { set_disc_frame(frame); } else if (frame.id == FrameId.GENRE) { set_genre_frame(frame); } else if (frame.id == FrameId.COMMENT) { set_comment_frame(frame); } else if (frame.id == FrameId.COMPOSER) { set_composer_frame(frame); } else if (frame.id == FrameId.ORIGINAL) { set_original_frame(frame); } else if (frame.id == FrameId.PICTURE) { set_picture_frame(frame); } else { set_invalid_frame(frame); } } /* Sets the artist frame. */ private void set_artist_frame(Id3Tag.Frame frame) { string_frames[FrameId.ARTIST] = _artist = frame.get_text(); } /* Sets the artist frame. */ private void set_title_frame(Id3Tag.Frame frame) { string_frames[FrameId.TITLE] = _title = frame.get_text(); } /* Sets the album frame. */ private void set_album_frame(Id3Tag.Frame frame) { string_frames[FrameId.ALBUM] = _album = frame.get_text(); } /* Sets the band frame. */ private void set_band_frame(Id3Tag.Frame frame) { string_frames[FrameId.BAND] = _band = frame.get_text(); } /* Sets the year frame. */ private void set_year_frame(Id3Tag.Frame frame) { int_frames[FrameId.YEAR] = _year = int.parse(frame.get_text()); } /* Sets the track frame. */ private void set_track_frame(Id3Tag.Frame frame) { string track = frame.get_text(); if (track == null) continue; return; string_frames[FrameId.TRACK] = track; if (track.index_of("/") != -1) { string[] t = track.split("/"); Loading @@ -300,16 +354,22 @@ namespace MLM { _track = int.parse(track); _total = -1; } } else if (frame.id == FrameId.DISC) { _disc = int.parse(frame.get_text()); } else if (frame.id == FrameId.GENRE) { } /* Sets the disc frame. */ private void set_disc_frame(Id3Tag.Frame frame) { int_frames[FrameId.DISC] = _disc = int.parse(frame.get_text()); } /* Sets the genre frame. */ private void set_genre_frame(Id3Tag.Frame frame) { var g = frame.get_text(); if (g == null) continue; return; _genre = Genre.index_of(g); if (_genre != -1) { int_frames[FrameId.GENRE] = _genre; continue; return; } int n = int.parse(g); if (0 <= n && n < Genre.total()) { Loading @@ -318,16 +378,28 @@ namespace MLM { } else { invalid_frames.add(frame); } } else if (frame.id == FrameId.COMMENT) { string_frames[FrameId.COMMENT] = _comment = frame.get_comment_text(); } else if (frame.id == FrameId.COMPOSER) { string_frames[FrameId.COMPOSER] = _composer = frame.get_text(); } else if (frame.id == FrameId.ORIGINAL) { string_frames[FrameId.ORIGINAL] = _original = frame.get_text(); } else if (frame.id == FrameId.PICTURE) { } /* Sets the comment frame. */ private void set_comment_frame(Id3Tag.Frame frame) { _comment = frame.get_comment_text(); string_frames[FrameId.COMMENT] = _comment; } /* Sets the composer frame. */ private void set_composer_frame(Id3Tag.Frame frame) { _composer = frame.get_text(); string_frames[FrameId.COMPOSER] = _composer; } /* Sets the original frame. */ private void set_original_frame(Id3Tag.Frame frame) { _original = frame.get_text(); string_frames[FrameId.ORIGINAL] = _original; } /* Sets the picture frame. */ private void set_picture_frame(Id3Tag.Frame frame) { var fc_data = frame.get_picture(Id3Tag.PictureType.COVERFRONT); if (fc_data != null) { Loading @@ -345,15 +417,12 @@ namespace MLM { artist_description = frame.get_picture_description(); } } else { GLib.warning("Invalid frame ‘%s’ will be deleted.\n", frame.id); invalid_frames.add(frame); } } foreach (Id3Tag.Frame frame in invalid_frames) { tag.detachframe(frame); } /* Sets an invalid frame. */ private void set_invalid_frame(Id3Tag.Frame frame) { GLib.warning("Invalid frame ‘%s’ will be deleted.\n", frame.id); invalid_frames.add(frame); } /** Loading Loading
lib/mlm/file-tags.vala +147 −78 Original line number Diff line number Diff line Loading @@ -99,6 +99,8 @@ namespace MLM { private Gee.HashMap<string, int?> int_frames; /* Data frames. */ private Gee.HashMap<int, GLib.Bytes> data_frames; /* Invalid frames. */ private Gee.ArrayList<Id3Tag.Frame> invalid_frames; /** * The artist. Loading Loading @@ -273,24 +275,76 @@ namespace MLM { if (tag.frames.length == 0) return; var invalid_frames = new Gee.ArrayList<Id3Tag.Frame>(); for (int i = 0; i < tag.frames.length; i++) { var frame = tag.frames[i]; invalid_frames = new Gee.ArrayList<Id3Tag.Frame>(); for (int i = 0; i < tag.frames.length; i++) set_frame(tag.frames[i]); foreach (Id3Tag.Frame frame in invalid_frames) { tag.detachframe(frame); } invalid_frames = null; } /* Sets a frame. */ private void set_frame(Id3Tag.Frame frame) { if (frame.id == FrameId.ARTIST) { string_frames[FrameId.ARTIST] = _artist = frame.get_text(); set_artist_frame(frame); } else if (frame.id == FrameId.TITLE) { string_frames[FrameId.TITLE] = _title = frame.get_text(); set_title_frame(frame); } else if (frame.id == FrameId.ALBUM) { string_frames[FrameId.ALBUM] = _album = frame.get_text(); set_album_frame(frame); } else if (frame.id == FrameId.BAND) { string_frames[FrameId.BAND] = _band = frame.get_text(); set_band_frame(frame); } else if (frame.id == FrameId.YEAR) { int_frames[FrameId.YEAR] = _year = int.parse(frame.get_text()); set_year_frame(frame); } else if (frame.id == FrameId.TRACK) { set_track_frame(frame); } else if (frame.id == FrameId.DISC) { set_disc_frame(frame); } else if (frame.id == FrameId.GENRE) { set_genre_frame(frame); } else if (frame.id == FrameId.COMMENT) { set_comment_frame(frame); } else if (frame.id == FrameId.COMPOSER) { set_composer_frame(frame); } else if (frame.id == FrameId.ORIGINAL) { set_original_frame(frame); } else if (frame.id == FrameId.PICTURE) { set_picture_frame(frame); } else { set_invalid_frame(frame); } } /* Sets the artist frame. */ private void set_artist_frame(Id3Tag.Frame frame) { string_frames[FrameId.ARTIST] = _artist = frame.get_text(); } /* Sets the artist frame. */ private void set_title_frame(Id3Tag.Frame frame) { string_frames[FrameId.TITLE] = _title = frame.get_text(); } /* Sets the album frame. */ private void set_album_frame(Id3Tag.Frame frame) { string_frames[FrameId.ALBUM] = _album = frame.get_text(); } /* Sets the band frame. */ private void set_band_frame(Id3Tag.Frame frame) { string_frames[FrameId.BAND] = _band = frame.get_text(); } /* Sets the year frame. */ private void set_year_frame(Id3Tag.Frame frame) { int_frames[FrameId.YEAR] = _year = int.parse(frame.get_text()); } /* Sets the track frame. */ private void set_track_frame(Id3Tag.Frame frame) { string track = frame.get_text(); if (track == null) continue; return; string_frames[FrameId.TRACK] = track; if (track.index_of("/") != -1) { string[] t = track.split("/"); Loading @@ -300,16 +354,22 @@ namespace MLM { _track = int.parse(track); _total = -1; } } else if (frame.id == FrameId.DISC) { _disc = int.parse(frame.get_text()); } else if (frame.id == FrameId.GENRE) { } /* Sets the disc frame. */ private void set_disc_frame(Id3Tag.Frame frame) { int_frames[FrameId.DISC] = _disc = int.parse(frame.get_text()); } /* Sets the genre frame. */ private void set_genre_frame(Id3Tag.Frame frame) { var g = frame.get_text(); if (g == null) continue; return; _genre = Genre.index_of(g); if (_genre != -1) { int_frames[FrameId.GENRE] = _genre; continue; return; } int n = int.parse(g); if (0 <= n && n < Genre.total()) { Loading @@ -318,16 +378,28 @@ namespace MLM { } else { invalid_frames.add(frame); } } else if (frame.id == FrameId.COMMENT) { string_frames[FrameId.COMMENT] = _comment = frame.get_comment_text(); } else if (frame.id == FrameId.COMPOSER) { string_frames[FrameId.COMPOSER] = _composer = frame.get_text(); } else if (frame.id == FrameId.ORIGINAL) { string_frames[FrameId.ORIGINAL] = _original = frame.get_text(); } else if (frame.id == FrameId.PICTURE) { } /* Sets the comment frame. */ private void set_comment_frame(Id3Tag.Frame frame) { _comment = frame.get_comment_text(); string_frames[FrameId.COMMENT] = _comment; } /* Sets the composer frame. */ private void set_composer_frame(Id3Tag.Frame frame) { _composer = frame.get_text(); string_frames[FrameId.COMPOSER] = _composer; } /* Sets the original frame. */ private void set_original_frame(Id3Tag.Frame frame) { _original = frame.get_text(); string_frames[FrameId.ORIGINAL] = _original; } /* Sets the picture frame. */ private void set_picture_frame(Id3Tag.Frame frame) { var fc_data = frame.get_picture(Id3Tag.PictureType.COVERFRONT); if (fc_data != null) { Loading @@ -345,15 +417,12 @@ namespace MLM { artist_description = frame.get_picture_description(); } } else { GLib.warning("Invalid frame ‘%s’ will be deleted.\n", frame.id); invalid_frames.add(frame); } } foreach (Id3Tag.Frame frame in invalid_frames) { tag.detachframe(frame); } /* Sets an invalid frame. */ private void set_invalid_frame(Id3Tag.Frame frame) { GLib.warning("Invalid frame ‘%s’ will be deleted.\n", frame.id); invalid_frames.add(frame); } /** Loading