~njh-aelius/maxosx/submit-discid

« back to all changes in this revision

Viewing changes to CompactDisc/CompactDisc.m

  • Committer: Nicholas J Humfrey
  • Date: 2009-04-17 20:46:49 UTC
  • Revision ID: njh@flophtaf.local-20090417204649-9ayyo03yjmbf2e1a
Added support for submitting disc ids

Show diffs side-by-side

added added

removed removed

Lines of Context:
128
128
 
129
129
- (NSString *)          ISRCForTrack:(unsigned)track                    { return [[self objectInTracksAtIndex:track] objectForKey:@"ISRC"]; }
130
130
 
 
131
 
 
132
- (DiscId *) discIdObj
 
133
{
 
134
        DiscId *discID = discid_new();
 
135
        if(NULL == discID)
 
136
                return NULL;
 
137
        
 
138
        // zero is lead out
 
139
        int offsets[100];
 
140
        offsets[0] = [self leadOut] + 150;
 
141
        
 
142
        unsigned i;
 
143
        for(i = 0; i < [self countOfTracks]; ++i)
 
144
                offsets[1 + i] = [self firstSectorForTrack:i] + 150;
 
145
        
 
146
        int result = discid_put(discID, 1, [self countOfTracks], offsets);
 
147
        if(result) {
 
148
                return discID;
 
149
        } else {
 
150
                discid_free(discID);
 
151
                return NULL;
 
152
        }
 
153
        
 
154
}
 
155
 
131
156
- (NSString *) discID
132
157
{
133
158
        NSString *musicBrainzDiscID = nil;
134
159
        
135
 
        DiscId *discID = discid_new();
 
160
        DiscId *discID = [self discIdObj];
136
161
        if(NULL == discID)
137
162
                return nil;
138
163
        
139
 
        // zero is lead out
140
 
        int offsets[100];
141
 
        offsets[0] = [self leadOut] + 150;
142
 
        
143
 
        unsigned i;
144
 
        for(i = 0; i < [self countOfTracks]; ++i)
145
 
                offsets[1 + i] = [self firstSectorForTrack:i] + 150;
146
 
 
147
 
        int result = discid_put(discID, 1, [self countOfTracks], offsets);
148
 
        if(result)
149
 
                musicBrainzDiscID = [NSString stringWithCString:discid_get_id(discID) encoding:NSASCIIStringEncoding];
 
164
        musicBrainzDiscID = [NSString stringWithCString:discid_get_id(discID) encoding:NSASCIIStringEncoding];
150
165
                
151
166
        discid_free(discID);
152
167
        
157
172
{
158
173
        NSString *freeDBDiscID = nil;
159
174
        
160
 
        DiscId *discID = discid_new();
 
175
        DiscId *discID = [self discIdObj];
161
176
        if(NULL == discID)
162
177
                return nil;
163
178
        
164
 
        // zero is lead out
165
 
        int offsets[100];
166
 
        offsets[0] = [self leadOut] + 150;
167
 
        
168
 
        unsigned i;
169
 
        for(i = 0; i < [self countOfTracks]; ++i)
170
 
                offsets[1 + i] = [self firstSectorForTrack:i] + 150;
171
 
        
172
 
        int result = discid_put(discID, 1, [self countOfTracks], offsets);
173
 
        if(result)
174
 
                freeDBDiscID = [NSString stringWithCString:discid_get_freedb_id(discID) encoding:NSASCIIStringEncoding];
 
179
        freeDBDiscID = [NSString stringWithCString:discid_get_freedb_id(discID) encoding:NSASCIIStringEncoding];
175
180
        
176
181
        discid_free(discID);
177
182
        
178
183
        return [[freeDBDiscID retain] autorelease];
179
184
}
180
185
 
 
186
- (NSURL *) submissionURL
 
187
{
 
188
        NSURL *submissionURL = nil;
 
189
        
 
190
        DiscId *discID = [self discIdObj];
 
191
        if(NULL == discID)
 
192
                return nil;
 
193
        
 
194
        submissionURL = [NSURL URLWithString:[NSString stringWithCString:discid_get_submission_url(discID) encoding:NSASCIIStringEncoding]];
 
195
        
 
196
        discid_free(discID);
 
197
        
 
198
        return [[submissionURL retain] autorelease];
 
199
}
 
200
 
181
201
- (unsigned)            length                                                                  { return _length; }
182
202
 
183
203
// KVC