def main(): with open_mpd_client() as client: music_dir = Path(client.config()) data = client.currentsong() audiofile = TaggedAudioFile(music_dir / Path(data['file'])) tag_lyrics = audiofile.lyrics if tag_lyrics: print(alfred_json('\n'.join([frame for frame in tag_lyrics]))) elif os.environ.get('GENIUS_ACCESS_TOKEN', '').strip(): genius = lyricsgenius.Genius(os.environ['GENIUS_ACCESS_TOKEN'], verbose=False) song = genius.search_song(data['title'], data['albumartist'] or data['artist']) if song: audiofile.lyrics = song.lyrics audiofile.save() print(alfred_json(song.lyrics, variables={'error': False})) else: print( alfred_json(f'''Couldn't find lyrics for "{data['title']}" by {data['albumartist']}''', variables={'error': True}), ) else: print( alfred_json(f"No lyrics in song file or Genius access token", variables={'error': True}), )
def main(): with open_mpd_client() as client: print(json.dumps({ 'items': [ make_artist_item(item['albumartist']) for item in client.list('albumartist') ] }))
def albums_shorter_than(seconds_limit): with open_mpd_client() as client: album_counts = client.count('group', 'album') return islice( sorted((AlbumInfo(album_name, album_playtime, client) for album_name, album_playtime in zip( album_counts['album'], album_counts['playtime']) if int(album_playtime) < seconds_limit), key=lambda album_info: seconds_limit - album_info. length_in_seconds), 50)
def main(): with open_mpd_client() as client: state = play_state(client) if state == 'play': client.pause() print(alfred_json('pause')) elif state == 'pause': client.play() print(alfred_json('play')) else: print(alfred_json('stop'))
def main(): # volume, album, songid, repeat, consume, song, track, random, pos, # elapsed, playlistlength, date, single, albumartist, file, duration, # bitrate, nextsongid, nextsong, mixrampdb, playlist, artist, title, id, # state, disc, time, lastmodified, audio, genre with open_mpd_client() as client: data = client.currentsong() data.update(client.status()) data.update({ 'duration': format_time(data['duration']) if data.get('duration') else 'N/A', 'elapsed': format_time(data['elapsed']) if data.get('elapsed') else 'N/A', 'lastmodified': data.get('last-modified', 'N/A'), }) print(alfred_json(data.get('title', ''), variables=data))
def main(): parser = argparse.ArgumentParser() parser.add_argument('query', nargs='+') args = parser.parse_args() query_args = args.query with open_mpd_client() as client: album = os.environ.get('ALFRED_MPD_ALBUM') if album: query_args = ['album', album] artist = os.environ.get('ALFRED_MPD_ARTIST') if artist: query_args += ['albumartist', artist] print( json.dumps({ 'items': [ make_song_item(item['title'], int(item['time'])) for item in client.find(*query_args) ] }))
def main(): with open_mpd_client() as client: action = 'Queued' # state is play, pause or stop state = play_state(client) if (state == 'pause' or state == 'stop') and not os.environ.get('ALFRED_MPD_QUEUE'): action = 'Playing' client.clear() variables = {} album = os.environ['ALFRED_MPD_ALBUM'] query_args = ['album', album] artist = os.environ.get('ALFRED_MPD_ARTIST') if artist: query_args += ['albumartist', artist] variables['artist'] = artist track = os.environ.get('ALFRED_MPD_TRACK') if track: query_args += ['title', track] variables['track'] = track client.findadd(*[normalize('NFC', arg) for arg in query_args]) if os.environ.get('ALFRED_MPD_SHUFFLE'): client.shuffle() if not os.environ.get('ALFRED_MPD_QUEUE'): client.play() print( alfred_json(' '.join([action, track or album]), variables=variables))
def main(): with open_mpd_client() as client: client.previous()
def main(): with open_mpd_client() as client: client.next()
def main(): with open_mpd_client() as client: print(json.dumps({'items': all_albums(client)}))