Пример #1
0
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)
Пример #2
0
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')
Пример #3
0
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
Пример #4
0
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.')
Пример #6
0
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, ''
Пример #7
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