1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
--- src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs.orig 2008-12-10 16:03:27.913232707 -0700
+++ src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs 2008-12-10 16:16:00.617267829 -0700
@@ -29,6 +29,7 @@
using System;
using Mono.Unix;
+using Banshee.Base;
using Banshee.Collection;
using Banshee.Configuration.Schema;
@@ -86,24 +87,26 @@
file.Tag.DiscCount = (uint)track.DiscCount;
file.Tag.Year = (uint)track.Year;
file.Tag.BeatsPerMinute = (uint)track.Bpm;
-
- SaveIsCompilation (file.Tag, track.IsCompilation);
+
+ SaveIsCompilation (file, track.IsCompilation);
file.Save ();
}
- private static void SaveIsCompilation (TagLib.Tag tag, bool is_compilation)
+ private static void SaveIsCompilation (TagLib.File file, bool is_compilation)
{
- TagLib.Id3v2.Tag id3v2_tag = tag as TagLib.Id3v2.Tag;
- if (id3v2_tag != null) {
- id3v2_tag.IsCompilation = is_compilation;
- return;
- }
+ try {
+ TagLib.Id3v2.Tag id3v2_tag = file.GetTag(TagLib.TagTypes.Id3v2, true) as TagLib.Id3v2.Tag;
+ if (id3v2_tag != null) {
+ id3v2_tag.IsCompilation = is_compilation;
+ }
+ } catch {}
- TagLib.Mpeg4.AppleTag apple_tag = tag as TagLib.Mpeg4.AppleTag;
- if (apple_tag != null) {
- apple_tag.IsCompilation = is_compilation;
- return;
- }
+ try {
+ TagLib.Mpeg4.AppleTag apple_tag = file.GetTag(TagLib.TagTypes.Apple,true) as TagLib.Mpeg4.AppleTag;
+ if (apple_tag != null) {
+ apple_tag.IsCompilation = is_compilation;
+ }
+ } catch {}
}
}
}
--- src/Core/Banshee.Core/Banshee.Streaming/StreamTagger.cs.orig 2008-10-06 10:27:31.000000000 -0600
+++ src/Core/Banshee.Core/Banshee.Streaming/StreamTagger.cs 2008-12-10 16:17:49.355233640 -0700
@@ -130,7 +130,7 @@
track.ArtistName = Choose (file.Tag.JoinedPerformers, track.ArtistName, preferTrackInfo);
track.AlbumTitle = Choose (file.Tag.Album, track.AlbumTitle, preferTrackInfo);
track.AlbumArtist = Choose (file.Tag.FirstAlbumArtist, track.AlbumArtist, preferTrackInfo);
- track.IsCompilation = IsCompilation (file.Tag);
+ track.IsCompilation = IsCompilation (file);
track.TrackTitle = Choose (file.Tag.Title, track.TrackTitle, preferTrackInfo);
track.Genre = Choose (file.Tag.FirstGenre, track.Genre, preferTrackInfo);
@@ -171,18 +171,22 @@
// TODO these ideas could also be done in an extension that collects such hacks
}
- private static bool IsCompilation (TagLib.Tag tag)
+ private static bool IsCompilation (TagLib.File file)
{
- TagLib.Id3v2.Tag id3v2_tag = tag as TagLib.Id3v2.Tag;
- if (id3v2_tag != null && id3v2_tag.IsCompilation)
- return true;
-
- TagLib.Mpeg4.AppleTag apple_tag = tag as TagLib.Mpeg4.AppleTag;
- if (apple_tag != null && apple_tag.IsCompilation)
- return true;
+ try {
+ TagLib.Id3v2.Tag id3v2_tag = file.GetTag(TagLib.TagTypes.Id3v2, true) as TagLib.Id3v2.Tag;
+ if (id3v2_tag != null && id3v2_tag.IsCompilation)
+ return true;
+ } catch {}
+
+ try {
+ TagLib.Mpeg4.AppleTag apple_tag = file.GetTag(TagLib.TagTypes.Apple,true) as TagLib.Mpeg4.AppleTag;
+ if (apple_tag != null && apple_tag.IsCompilation)
+ return true;
+ } catch {}
- if (tag.Performers.Length > 0 && tag.AlbumArtists.Length > 0 &&
- (tag.Performers.Length != tag.AlbumArtists.Length || tag.FirstAlbumArtist != tag.FirstPerformer)) {
+ if (file.Tag.Performers.Length > 0 && file.Tag.AlbumArtists.Length > 0 &&
+ (file.Tag.Performers.Length != file.Tag.AlbumArtists.Length || file.Tag.FirstAlbumArtist != file.Tag.FirstPerformer)) {
return true;
}
return false;
|