def show(): tags = Tag.select(Tag.value).distinct().order_by(Tag.value.asc()) #pylint: disable=E1111 if request.method == "POST": # Filter the track list based on selected tags # Evaluate selected tags, modify tag object with selection sel_tags = request.form.getlist('tag-select') for tag in tags: for sel_tag in sel_tags: if tag.value == sel_tag: tag.selected = True # Query database all_tracks = Track.select().order_by(Track.date.asc()) # pylint: disable=E1111 tracks = [] for track in all_tracks: tag_elems_for_track = Tag.select().where(Tag.track == track) # pylint: disable=E1111 tags_for_track = [] for elem in tag_elems_for_track: tags_for_track.append(elem.value) if set(sel_tags).issubset(tags_for_track): tracks.append(track) # Pass information about selected map if len(tracks) == 0: # No available tracks - give warning track_id = None elif request.form.get("track-select") == None or request.form.get( "track-select") == "": # No track selected - return latest map track_id = len(tracks) - 1 else: # Return selected map track_id = int(request.form.get("track-select")) else: # List all tracks tracks = Track.select().order_by(Track.date.asc()) #pylint: disable=E1111 # show latest map if len(tracks) == 0: track_id = None else: track_id = len(tracks) - 1 if track_id: tags_for_track = Tag.select(Tag.value).where( Tag.track == tracks[track_id]) #pylint: disable=E1111 else: tags_for_track = "" overall_statistics = calc_statistics(tracks) return render_template("show.html", tracks=tracks, tags=tags, tags_for_track=tags_for_track, track_id=track_id, overall_statistics=overall_statistics)
def db_cleanup(): # Movie cleanup aprint('Cleaning up movies...', 'NOTIFICATOR') movies = Movie.select().order_by(Movie.title) n_movies = len(movies) for movie in movies: deletion = Movie.delete().where(Movie.imdb == movie.imdb, Movie.quality == movie.quality) deletion.execute() aprint('Deleted {} movies.'.format(n_movies), 'NOTIFICATOR') # TV cleanup aprint('Cleaning up tv shows...', 'NOTIFICATOR') episodes = Show.select().order_by(Show.series).order_by( Show.season).order_by(Show.episode) n_episodes = len(episodes) for episode in episodes: deletion = Show.delete().where(Show.series == episode.series, Show.season == episode.season, Show.episode == episode.episode) deletion.execute() aprint('Deleted {} episodes.'.format(n_episodes), 'NOTIFICATOR') # Tracks cleanup aprint('Cleaning up tracks...', 'NOTIFICATOR') tracks = Track.select().order_by(Track.artist).order_by(Track.tracknumber) n_tracks = len(tracks) for track in tracks: deletion = Track.delete().where(Track.artist == track.artist, Track.title == track.title, Track.tracknumber == track.tracknumber, Track.quality == track.quality) deletion.execute() aprint('Deleted {} tracks.'.format(n_tracks), 'NOTIFICATOR')
def get_all_tracks(): list_Track = Track.select() dicts_Track = [] for x in range(len(list_Track)): try: _track = { 'id':list_Track[x].id, 'number':list_Track[x].number, 'title':list_Track[x].title, 'artist':list_Track[x].artist, 'album':list_Track[x].album, 'duration':list_Track[x].duration } dicts_Track.append(_track) except: _track = { 'id':0, 'number':'not found', 'title':'not found', 'artist':'not found', 'album':'not found', 'duration':'not found' } dicts_Track.append(_track) return dicts_Track
def get_tracks_by_album_title(title:str): query = Track.select().where(Track.album == title) my_tracks = [] for x in range(len(query)): try: _track = { 'id':query[x].id, 'number':query[x].number, 'title':query[x].title, 'artist':query[x].artist, 'album':query[x].album, 'duration':query[x].duration } my_tracks.append(_track) except: _track = { 'id':0, 'number':'not found', 'title':'not found', 'artist':'not found', 'album':'not found', 'duration':'not found' } my_tracks.append(_track) return my_tracks
def updateMissingTrackPaths(): logger.info('Ensuring that all of the tracks that Headphones is tracking are all still in the Music Library.') tracks = Track.select().where('location IS NOT NULL') for track in tracks: if not os.path.isfile(track.location): logger.info('Track ID ' + str(track['id']) + ' is no longer in the music library, clearing location.') track.location = None track.bitrate = None track.state = 'wanted' track.save() logger.info('Done ensuring all of the tracks are still in the Music Library.')
def create_tracks_msg(): msg = '*Tracks*\n\n{TRACKS}\n\n\n' tracks = Track.select().order_by(Track.artist).order_by(Track.tracknumber) if len(tracks) > 0: tks = [] for track in tracks: timestamp = get_datetime(track.timestamp) tks.append(CONFIG['custom_track_entry'].format( ARTIST=track.artist, TITLE=track.title, TRACK_NUMBER=track.tracknumber, QUALITY=track.quality, TIME=get_hours_min(timestamp))) tks_full_text = '\n'.join(tks) msg = msg.format(TRACKS=tks_full_text) return len(tks), msg return 0, ''
def get_track_by_id(_id:int): query = Track.select().where(Track.id == _id) try: _track = { 'id':query[0].id, 'number':query[0].number, 'title':query[0].title, 'artist':query[0].artist, 'album':query[0].album, 'duration':query[0].duration } return _track except: _track = { 'id':0, 'number':'not found', 'title':'not found', 'artist':'not found', 'album':'not found', 'duration':'not found' } return _track