def save_audio_post(request): """ Saves a Track """ form = TrackForm(request.POST, request.FILES) if form.is_valid(): the_track_file = request.FILES["file"] meta = metadata_for_filelike(the_track_file) newdoc = Track(docfile = request.FILES["file"]) try: newdoc.title = meta['title'] except: newdoc.title = request.FILES['file'].name try: newdoc.album = meta['album'] except: newdoc.album = 'unspecified' try: newdoc.author = meta['author'] except: newdoc.author = 'unspecified' try: newdoc.duration = meta['duration'] except: newdoc.duration = 'unspecified' try: newdoc.music_genre = meta['music_genre'] except: newdoc.music_genre = 'unspecified' newdoc.meta_data = meta if meta['mime_type'] == 'audio/mpeg': newdoc.body = "Audio track: "+newdoc.title+" was uploaded." if request.POST["body"] != "": newdoc.body = newdoc.body+ request.POST["body"] newdoc.save() else: print form.errors
def _parse_track(self, json_obj): track = Track(**json_obj) if 'artist' in json_obj: track.artist = self._parse_artist(json_obj['artist']) elif 'artists' in json_obj: track.artist = self._parse_artist(json_obj['artists'][0]) if 'artists' in json_obj: track.artists, track._ftArtists = self._parse_all_artists( track.artist.id, json_obj['artists']) else: track.artists = [track.artist] track._ftArtists = [] track.album = self._parse_album(json_obj['album'], artist=track.artist) if self.is_logged_in and self.user.favorites: track._isFavorite = self.user.favorites.isFavoriteTrack(track.id) return track
def get_track(self, track_id): track = self.db.session.query(Track).get(track_id) if track: return track else: response = self.client.track(track_id) track = Track() track.track_id = track_id track.track_data = response # Album track.album = self.get_album(response['album']['id']) # Artists for artist_response in response['artists']: track.artists.append(self.get_artist(artist_response['id'])) # Audio feature audio_feature_response = self.client.audio_features(track_id)[0] if audio_feature_response: # Some tracks do not have audio features track.audio_feature_data = audio_feature_response print("> Track {} was not in database.".format( track.track_data['name'])) self.db.save_instance(track) return self.db.session.query(Track).get(track_id)