Show
Ignore:
Timestamp:
03/30/08 22:59:42 (9 months ago)
Author:
milosz@…
Branch:
trunk
Message:

* New rating graphcis
* Add .desktop file, DBus .service files
* Cleanup Python code for trackinfo

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • python/trackinfo.py

    r117 r118  
    2525                self.image = self.xml.get_widget("image") 
    2626                self.close = self.xml.get_widget("close") 
    27                 self.close.connect("clicked",self.close_clicked) 
    28                 self.window.connect("delete-event",self.delete_event) 
     27                #self.close.connect("clicked",self.close_clicked) 
     28                #self.window.connect("delete-event",self.delete_event) 
    2929 
    3030                self.buf = self.textview.get_buffer() 
     
    7070                        rels = mbtrack.getRelations() 
    7171 
     72                        relobj = [] 
     73                        for i in range(7): 
     74                                relobj.append([]) 
     75 
    7276                        # Check if it's a cover 
    7377                        for rel in rels: 
    74                                 if rel.getType() == "http://musicbrainz.org/ns/rel-1.0#Cover": 
    75                                         self.printCover(track, mbtrack, rel) 
    76                                 if rel.getType() == "http://musicbrainz.org/ns/rel-1.0#Composer": 
    77                                         self.printComposer(track, mbtrack, rel) 
    78                                 if rel.getType() == "http://musicbrainz.org/ns/rel-1.0#Instrument": 
    79                                         self.printInstrument(track, mbtrack, rel) 
    80                                 if rel.getType() == "http://musicbrainz.org/ns/rel-1.0#SamplesMaterial": 
    81                                         self.printSamplesMaterial(track, mbtrack, rel) 
    82                                 if rel.getType() == "http://musicbrainz.org/ns/rel-1.0#Remixer": 
    83                                         self.printRemixer(track, mbtrack, rel) 
    84                                 if rel.getType() == "http://musicbrainz.org/ns/rel-1.0#Lyricist": 
    85                                         self.printLyricist(track, mbtrack, rel) 
    86                                 if rel.getType() == "http://musicbrainz.org/ns/rel-1.0#Producer": 
    87                                         self.printProducer(track, mbtrack, rel) 
    88  
     78                                if rel.getDirection() != "backward": 
     79                                        if rel.getType() == "http://musicbrainz.org/ns/rel-1.0#Cover": 
     80                                                relobj[0].append(rel)    
     81                                        if rel.getType() == "http://musicbrainz.org/ns/rel-1.0#Composer": 
     82                                                relobj[1].append(rel)    
     83                                        if rel.getType() == "http://musicbrainz.org/ns/rel-1.0#Instrument": 
     84                                                relobj[2].append(rel)    
     85                                        if rel.getType() == "http://musicbrainz.org/ns/rel-1.0#SamplesMaterial": 
     86                                                relobj[3].append(rel)    
     87                                        if rel.getType() == "http://musicbrainz.org/ns/rel-1.0#Remixer": 
     88                                                relobj[4].append(rel)    
     89                                        if rel.getType() == "http://musicbrainz.org/ns/rel-1.0#Lyricist": 
     90                                                relobj[5].append(rel)    
     91                                        if rel.getType() == "http://musicbrainz.org/ns/rel-1.0#Producer": 
     92                                                relobj[6].append(rel)    
     93 
     94                        funcs = [] 
     95                        funcs.append(self.printCover) 
     96                        funcs.append(self.printComposer) 
     97                        funcs.append(self.printInstrument) 
     98                        funcs.append(self.printSamplesMaterial) 
     99                        funcs.append(self.printRemixer) 
     100                        funcs.append(self.printLyricist) 
     101                        funcs.append(self.printProducer) 
     102 
     103                        for i in range(7): 
     104                                if len(relobj[i]) > 0: 
     105                                        funcs[i](track, mbtrack, relobj[i]) 
    89106 
    90107                self.buf.insert(self.buf.get_end_iter(), "\n\n") 
     
    109126                                print "Couldn't get Last.fm artist info for '" + track.get(AttributeId.attr_artist).val().get_string()  
    110127 
    111         def printCover(self, track, mbtrack, rel): 
    112                 # Workaround for buggy pymusicbrainzl; getTarget() on this rel returns None 
    113                 url = rel.getTargetId() 
    114                 id = url[url.rindex("/")+1:] 
    115  
    116                 cover = self.q.getTrackById(id, self.tinc)       
    117                 coverartist = cover.getArtist() 
    118  
    119                 self.buf.insert_with_tags(self.buf.get_end_iter(), "...is a cover of ") 
    120                 self.buf.insert_with_tags(self.buf.get_end_iter(), cover.getTitle(), self.textTagBold) 
    121                 self.buf.insert_with_tags(self.buf.get_end_iter(), " by ") 
    122                 self.buf.insert_with_tags(self.buf.get_end_iter(), coverartist.getName(), self.textTagBold) 
    123                 self.buf.insert_with_tags(self.buf.get_end_iter(), "") 
    124                 self.buf.insert(self.buf.get_end_iter(), "\n")  
    125                 return True 
    126  
    127         def printComposer(self, track, mbtrack, rel): 
    128                 composer = rel.getTarget() 
    129                 self.buf.insert_with_tags(self.buf.get_end_iter(), "..was originally composed by ") 
    130                 self.buf.insert_with_tags(self.buf.get_end_iter(), composer.getName(), self.textTagBold)  
    131                 self.buf.insert(self.buf.get_end_iter(), "\n")  
    132                 return True 
    133  
    134         def printSamplesMaterial(self, track, mbtrack, rel): 
    135                 url = rel.getTargetId() 
    136                 id = url[url.rindex("/")+1:] 
    137                 sampled = self.q.getTrackById(id, self.tinc) 
    138                 sampledartist = sampled.getArtist() 
     128        def printCover(self, track, mbtrack, rels): 
     129 
     130                for rel in rels: 
     131 
     132                        # Workaround for buggy pymusicbrainzl; getTarget() on this rel returns None 
     133                        url = rel.getTargetId() 
     134                        id = url[url.rindex("/")+1:] 
     135 
     136                        cover = self.q.getTrackById(id, self.tinc)       
     137                        coverartist = cover.getArtist() 
     138 
     139                        self.buf.insert_with_tags(self.buf.get_end_iter(), "...is a cover of ") 
     140                        self.buf.insert_with_tags(self.buf.get_end_iter(), cover.getTitle(), self.textTagBold) 
     141                        self.buf.insert_with_tags(self.buf.get_end_iter(), " by ") 
     142                        self.buf.insert_with_tags(self.buf.get_end_iter(), coverartist.getName(), self.textTagBold) 
     143                        self.buf.insert_with_tags(self.buf.get_end_iter(), "") 
     144                        self.buf.insert(self.buf.get_end_iter(), "\n")  
     145 
     146                return True 
     147 
     148        def printComposer(self, track, mbtrack, rels): 
     149 
     150                self.buf.insert_with_tags(self.buf.get_end_iter(), "...was composed by ") 
     151 
     152                composers = [] 
     153 
     154                for rel in rels: 
     155                        composer = rel.getTarget() 
     156                        composers.append(composer.getName()) 
     157 
     158                 
     159                self.buf.insert_with_tags(self.buf.get_end_iter(), ", ".join(composers), self.textTagBold)  
     160                self.buf.insert(self.buf.get_end_iter(), "\n")  
     161                return True 
     162 
     163        def printSamplesMaterial(self, track, mbtrack, rels): 
     164 
     165                sampled = [] 
     166 
     167                for rel in rels: 
     168                        url = rel.getTargetId() 
     169                        id = url[url.rindex("/")+1:] 
     170                        sampled = self.q.getTrackById(id, self.tinc) 
     171                        sampledartist = sampled.getArtist() 
     172                        sampled.append(sampled.getTitle() + " by " + sampledartist.getName()) 
    139173 
    140174                self.buf.insert_with_tags(self.buf.get_end_iter(), "...contains samples from ") 
    141                 self.buf.insert_with_tags(self.buf.get_end_iter(), sampled.getTitle(), self.textTagBold)  
    142                 self.buf.insert_with_tags(self.buf.get_end_iter(), " by ") 
    143                 self.buf.insert_with_tags(self.buf.get_end_iter(), sampledartist.getTitle(), self.textTagBold)  
    144                 self.buf.insert(self.buf.get_end_iter(), "\n")  
    145                 return True 
    146  
    147         def printRemixer(self, track, mbtrack, rel): 
    148                 url = rel.getTargetId() 
    149                 id = url[url.rindex("/")+1:] 
    150                 remixer = self.q.getArtistById(id, self.tinc) 
     175                self.buf.insert_with_tags(self.buf.get_end_iter(), ", ".join(sampled), self.textTagBold)  
     176                self.buf.insert(self.buf.get_end_iter(), "\n")  
     177                return True 
     178 
     179        def printRemixer(self, track, mbtrack, rels): 
     180 
     181                remixers = [] 
     182 
     183                for rel in rels: 
     184                        url = rel.getTargetId() 
     185                        id = url[url.rindex("/")+1:] 
     186                        remixer = self.q.getArtistById(id, self.tinc) 
     187                        remixers.append(remixer.getName()) 
    151188 
    152189                self.buf.insert_with_tags(self.buf.get_end_iter(), "...was remixed by ") 
    153                 self.buf.insert_with_tags(self.buf.get_end_iter(), remixer.getName(), self.textTagBold)  
    154                 self.buf.insert(self.buf.get_end_iter(), "\n")  
    155                 return True 
    156  
    157         def printProducer(self, track, mbtrack, rel): 
    158                 url = rel.getTargetId() 
    159                 id = url[url.rindex("/")+1:] 
    160                 remixer = self.q.getArtistById(id, self.tinc) 
    161  
     190                self.buf.insert_with_tags(self.buf.get_end_iter(), ", ".join(remixers), self.textTagBold)  
     191                self.buf.insert(self.buf.get_end_iter(), "\n")  
     192                return True 
     193 
     194        def printProducer(self, track, mbtrack, rels): 
     195 
     196                producers = [] 
     197 
     198                for rel in rels: 
     199                        url = rel.getTargetId() 
     200                        id = url[url.rindex("/")+1:] 
     201                        producer = self.q.getArtistById(id, self.tinc) 
     202                        producers.append(producer.getName()) 
     203                         
    162204                self.buf.insert_with_tags(self.buf.get_end_iter(), "...was produced by ") 
    163                 self.buf.insert_with_tags(self.buf.get_end_iter(), remixer.getName(), self.textTagBold)  
    164                 self.buf.insert(self.buf.get_end_iter(), "\n")  
    165                 return True 
    166  
    167         def printLyricist(self, track, mbtrack, rel): 
    168                 lyricist = rel.getTarget()  
    169  
    170                 self.buf.insert_with_tags(self.buf.get_end_iter(), "...has lyrics written by ") 
    171                 self.buf.insert_with_tags(self.buf.get_end_iter(), lyricist.getName(), self.textTagBold)  
    172                 self.buf.insert(self.buf.get_end_iter(), "\n")  
    173                 return True 
    174  
    175         def printProducer(self, track, mbtrack, rel): 
    176                 producer = rel.getTarget()  
     205                self.buf.insert_with_tags(self.buf.get_end_iter(), ", ".join(producers), self.textTagBold)  
     206                self.buf.insert(self.buf.get_end_iter(), "\n")  
     207                return True 
     208 
     209        def printLyricist(self, track, mbtrack, rels): 
     210 
     211                lyricists = [] 
     212 
     213                for rel in rels: 
     214                        lyricist = rel.getTarget()  
     215                        lyricists.append(lyricist.getName()) 
     216 
     217                self.buf.insert_with_tags(self.buf.get_end_iter(), "...has lyrics by ") 
     218                self.buf.insert_with_tags(self.buf.get_end_iter(), ", ".join(lyricists), self.textTagBold)  
     219                self.buf.insert(self.buf.get_end_iter(), "\n")  
     220                return True 
     221 
     222        def printProducer(self, track, mbtrack, rels): 
     223 
     224                producers = [] 
     225 
     226                for rel in rels: 
     227                        producer = rel.getTarget()  
     228                        producers.append(producer.getName()) 
    177229 
    178230                self.buf.insert_with_tags(self.buf.get_end_iter(), "...was produced by ") 
    179                 self.buf.insert_with_tags(self.buf.get_end_iter(), producer.getName(), self.textTagBold)  
    180                 self.buf.insert(self.buf.get_end_iter(), "\n")  
    181                 return True 
    182  
    183         def printInstrument(self, track, mbtrack, rel): 
    184                 return True 
    185  
    186         def close_clicked(self, button): 
    187                 self.window.hide() 
    188                 return True 
    189  
    190         def delete_event(self, window, event): 
    191                 self.window.hide() 
    192                 return True 
    193  
    194  
    195  
     231                self.buf.insert_with_tags(self.buf.get_end_iter(), ", ".join(producers), self.textTagBold)  
     232                self.buf.insert(self.buf.get_end_iter(), "\n")  
     233                return True 
     234 
     235        def printInstrument(self, track, mbtrack, rels): 
     236                return True 
    196237 
    197238info = TrackInfo()