Esempio n. 1
0
    def register_tracks(self):
        """Retrieves json metadata, including filenames, from
        archive.org for a concert (one which is already registered
        with our database) and inserts the concert's tracks (files)
        with our db.

        >>> from api.music import Concert
        >>> a = Artist.get(tag="ExplosionsintheSky")
        >>> [c.register_tracks() for c in a.concerts]
        """
        for track in Crawler.tracks(self.tag):
            print(track['name'])
            try:
                t = Track(
                    artist_id=self.artist_id,
                    concert_id=self.id,
                    item_id=self.tag,
                    file_id=track['name'],
                    number=track['track'],
                    name=track['title'],
                    length=time2sec(track['length'])
                    )
                t.create()
                self.tracks.append(t)
                self.save()
            except (IntegrityError, InvalidRequestError) as e:
                print(e)
Esempio n. 2
0
    def register(cls, artist=None, concerts=False, tracks=False, start=0):
        """Retrieves a json list of all artists from the Live Music
        collection from Internet Archive (archive.org) and then
        creates an Artist entry within the databse for each artist. If
        specified within params, additionally registers their concerts
        (items) and the concert's tracks (files).

        params:
        artist - register a single artist (by [collection] name)
        concerts - register artists' concerts?
        tracks - register concerts tracks? Requires concerts=True

        usage:
        >>> from api.music import Artist
        >>> Artist.register()
        """
        artists = [artist] if artist else Crawler.artists()
        for a in artists[start:]:
            tag = a['identifier']
            name = a['title']
            try:
                cls(tag=tag, name=name).create()
            except:
                pass
            if concerts:
                cls.register_concerts(artist=a, tracks=tracks)
Esempio n. 3
0
    def register_concerts(self, tracks=False):
        """Retrieves a json list of concerts from archive.org for a
        given Artist (one which is already registered with our
        database) and registers the artist's concerts with our
        db. Additionally registers the tracks of each of these
        concerts if tracks=True.

        usage:
        >>> from api.music import Artist
        >>> a = Artist.get(tag="ExplosionsintheSky")
        >>> a.register_concerts()
        """
        concerts = Crawler.concerts(self.tag)
        for concert in concerts:
            name = concert['title']
            tag = concert['identifier']
            print(concert)
            try:
                c = Concert(tag=tag, name=name, artist_id=self.id)
                c.create()
                self.concerts.append(c)
                self.save()
            except:
                pass

            if tracks:
                c.register_tracks()
Esempio n. 4
0
 def dict(self, metadata=False):
     concert = super(Concert, self).dict()
     concert['artist'] = self.artist.name
     concert['tracks'] = sorted([track.dict() for track in self.tracks],
                                key=lambda x: x['number'])
     if metadata:
         try:
             concert['metadata'] = Crawler.metadata(artist=self.artist.name)
         except Exception as e:
             concert['metadata'] = {"error": str(e)}
     return concert