def build_menu(self, datatype, title, datalist, offset, index, step, start): # keep playing info in line 1 curses.noecho() self.screen.move(5, 1) self.screen.clrtobot() self.screen.addstr(5, self.startcol, title, curses.color_pair(1)) if len(datalist) == 0: self.screen.addstr(8, self.startcol, '这里什么都没有 -,-') else: if datatype == 'main': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i], curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. ' + datalist[i]) elif datatype == 'songs' or datatype == 'fmsongs': iter_range = min(len(datalist), offset + step) for i in range(offset, iter_range): # this item is focus if i == index: self.screen.addstr(i - offset + 8, 0, ' ' * self.startcol) lead = '-> ' + str(i) + '. ' self.screen.addstr(i - offset + 8, self.indented_startcol, lead, curses.color_pair(2)) name = str(datalist[i]['song_name'] + self.space + datalist[i][ 'artist'] + ' < ' + datalist[i]['album_name'] + ' >') # the length decides whether to scoll if truelen(name) < self.x - self.startcol - 1: self.screen.addstr(i - offset + 8, self.indented_startcol + len(lead), name, curses.color_pair(2)) else: name = scrollstring(name + ' ', start) self.screen.addstr(i - offset + 8, self.indented_startcol + len(lead), str(name), curses.color_pair(2)) else: self.screen.addstr(i - offset + 8, 0, ' ' * self.startcol) self.screen.addstr(i - offset + 8, self.startcol, str(str(i) + '. ' + datalist[i]['song_name'] + self.space + datalist[i][ 'artist'] + ' < ' + datalist[i]['album_name'] + ' >')[:int(self.x * 2)]) self.screen.addstr(iter_range - offset + 9, 0, ' ' * self.x) elif datatype == 'artists': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i]['artists_name'] + self.space + str( datalist[i]['alias']), curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. ' + datalist[i]['artists_name'] + self.space + datalist[i][ 'alias']) elif datatype == 'albums': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i]['albums_name'] + self.space + datalist[i][ 'artists_name'], curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. ' + datalist[i]['albums_name'] + self.space + datalist[i][ 'artists_name']) elif datatype == 'playlists': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i]['title'], curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. ' + datalist[i]['title']) elif datatype == 'top_playlists': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i]['playlists_name'] + self.space + datalist[i]['creator_name'], curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. ' + datalist[i]['playlists_name'] + self.space + datalist[i][ 'creator_name']) elif datatype == 'toplists': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i], curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. ' + datalist[i]) elif datatype == 'playlist_classes' or datatype == 'playlist_class_detail': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i], curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. ' + datalist[i]) elif datatype == 'djchannels': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 8, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i]['song_name'], curses.color_pair(2)) else: self.screen.addstr(i - offset + 8, self.startcol, str(i) + '. ' + datalist[i]['song_name']) elif datatype == 'search': self.screen.move(6, 1) self.screen.clrtobot() self.screen.timeout(-1) self.screen.addstr(8, self.startcol, '选择搜索类型:', curses.color_pair(1)) for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 10, self.indented_startcol, '-> ' + str(i) + '.' + datalist[i - 1], curses.color_pair(2)) else: self.screen.addstr(i - offset + 10, self.startcol, str(i) + '.' + datalist[i - 1]) self.screen.timeout(100) elif datatype == 'help': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. \'' + (datalist[i][0].upper() + '\'').ljust(11) + datalist[i][ 1] + ' ' + datalist[i][2], curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. \'' + (datalist[i][0].upper() + '\'').ljust(11) + datalist[i][ 1] + ' ' + datalist[i][2]) self.screen.addstr(20, 6, 'NetEase-MusicBox 基于Python,所有版权音乐来源于网易,本地不做任何保存') self.screen.addstr(21, 10, '按 [G] 到 Github 了解更多信息,帮助改进,或者Star表示支持~~') self.screen.addstr(22, self.startcol, 'Build with love to music by omi') self.screen.refresh()
def build_menu(self, datatype, title, datalist, offset, index, step, start): # keep playing info in line 1 curses.noecho() self.screen.move(5, 1) self.screen.clrtobot() self.screen.addstr(5, self.startcol, title, curses.color_pair(1)) if len(datalist) == 0: self.screen.addstr(8, self.startcol, '这里什么都没有 -,-') else: if datatype == 'main': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i], curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. ' + datalist[i]) elif datatype == 'songs' or datatype == 'fmsongs': iter_range = min(len(datalist), offset + step) for i in range(offset, iter_range): # this item is focus if i == index: self.screen.addstr(i - offset + 8, 0, ' ' * self.startcol) lead = '-> ' + str(i) + '. ' self.screen.addstr(i - offset + 8, self.indented_startcol, lead, curses.color_pair(2)) name = str(datalist[i]['song_name'] + self.space + datalist[i][ 'artist'] + ' < ' + datalist[i]['album_name'] + ' >') # the length decides whether to scoll if truelen(name) < self.x - self.startcol - 1: self.screen.addstr(i - offset + 8, self.indented_startcol + len(lead), name, curses.color_pair(2)) else: name = scrollstring(name + ' ', start) self.screen.addstr(i - offset + 8, self.indented_startcol + len(lead), str(name), curses.color_pair(2)) else: self.screen.addstr(i - offset + 8, 0, ' ' * self.startcol) self.screen.addstr(i - offset + 8, self.startcol, str(str(i) + '. ' + datalist[i]['song_name'] + self.space + datalist[i][ 'artist'] + ' < ' + datalist[i]['album_name'] + ' >')[:int(self.x * 2)]) self.screen.addstr(iter_range - offset + 9, 0, ' ' * self.x) elif datatype == 'artists': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i]['artists_name'] + self.space + str( datalist[i]['alias']), curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. ' + datalist[i]['artists_name'] + self.space + datalist[i][ 'alias']) elif datatype == 'albums': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i]['albums_name'] + self.space + datalist[i][ 'artists_name'], curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. ' + datalist[i]['albums_name'] + self.space + datalist[i][ 'artists_name']) elif datatype == 'playlists': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i]['title'], curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. ' + datalist[i]['title']) elif datatype == 'top_playlists': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i]['playlists_name'] + self.space + datalist[i]['creator_name'], curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. ' + datalist[i]['playlists_name'] + self.space + datalist[i][ 'creator_name']) elif datatype == 'toplists': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i], curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. ' + datalist[i]) elif datatype == 'playlist_classes' or datatype == 'playlist_class_detail': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i], curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. ' + datalist[i]) elif datatype == 'djchannels': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 8, self.indented_startcol, '-> ' + str(i) + '. ' + datalist[i]['song_name'], curses.color_pair(2)) else: self.screen.addstr(i - offset + 8, self.startcol, str(i) + '. ' + datalist[i]['song_name']) elif datatype == 'search': self.screen.move(4, 1) self.screen.clrtobot() self.screen.timeout(-1) self.screen.addstr(8, self.startcol, '选择搜索类型:', curses.color_pair(1)) for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 10, self.indented_startcol, '-> ' + str(i) + '.' + datalist[i - 1], curses.color_pair(2)) else: self.screen.addstr(i - offset + 10, self.startcol, str(i) + '.' + datalist[i - 1]) self.screen.timeout(100) elif datatype == 'help': for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr(i - offset + 9, self.indented_startcol, '-> ' + str(i) + '. \'' + (datalist[i][0].upper() + '\'').ljust(11) + datalist[i][ 1] + ' ' + datalist[i][2], curses.color_pair(2)) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + '. \'' + (datalist[i][0].upper() + '\'').ljust(11) + datalist[i][ 1] + ' ' + datalist[i][2]) self.screen.addstr(20, 6, 'NetEase-MusicBox 基于Python,所有版权音乐来源于网易,本地不做任何保存') self.screen.addstr(21, 10, '按 [G] 到 Github 了解更多信息,帮助改进,或者Star表示支持~~') self.screen.addstr(22, self.startcol, 'Build with love to music by omi') self.screen.refresh()
def build_menu(self, datatype, title, datalist, offset, index, step, start): # keep playing info in line 1 curses.noecho() self.screen.move(5, 1) self.screen.clrtobot() self.screen.addstr(5, self.startcol, title, curses.color_pair(1)) if len(datalist) == 0: self.screen.addstr(8, self.startcol, "这里什么都没有 -,-") else: if datatype == "main": for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr( i - offset + 9, self.indented_startcol, "-> " + str(i) + ". " + datalist[i], curses.color_pair(2), ) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + ". " + datalist[i]) elif datatype == "songs" or datatype == "fmsongs": iter_range = min(len(datalist), offset + step) for i in range(offset, iter_range): # this item is focus if i == index: self.screen.addstr(i - offset + 8, 0, " " * self.startcol) lead = "-> " + str(i) + ". " self.screen.addstr(i - offset + 8, self.indented_startcol, lead, curses.color_pair(2)) name = str( datalist[i]["song_name"] + self.space + datalist[i]["artist"] + " < " + datalist[i]["album_name"] + " >" ) # the length decides whether to scoll if truelen(name) < self.x - self.startcol - 1: self.screen.addstr( i - offset + 8, self.indented_startcol + len(lead), name, curses.color_pair(2) ) else: name = scrollstring(name + " ", start) self.screen.addstr( i - offset + 8, self.indented_startcol + len(lead), str(name), curses.color_pair(2) ) else: self.screen.addstr(i - offset + 8, 0, " " * self.startcol) self.screen.addstr( i - offset + 8, self.startcol, str( str(i) + ". " + datalist[i]["song_name"] + self.space + datalist[i]["artist"] + " < " + datalist[i]["album_name"] + " >" )[: int(self.x * 2)], ) self.screen.addstr(iter_range - offset + 9, 0, " " * self.x) elif datatype == "artists": for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr( i - offset + 9, self.indented_startcol, "-> " + str(i) + ". " + datalist[i]["artists_name"] + self.space + str(datalist[i]["alias"]), curses.color_pair(2), ) else: self.screen.addstr( i - offset + 9, self.startcol, str(i) + ". " + datalist[i]["artists_name"] + self.space + datalist[i]["alias"], ) elif datatype == "albums": for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr( i - offset + 9, self.indented_startcol, "-> " + str(i) + ". " + datalist[i]["albums_name"] + self.space + datalist[i]["artists_name"], curses.color_pair(2), ) else: self.screen.addstr( i - offset + 9, self.startcol, str(i) + ". " + datalist[i]["albums_name"] + self.space + datalist[i]["artists_name"], ) elif datatype == "playlists": for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr( i - offset + 9, self.indented_startcol, "-> " + str(i) + ". " + datalist[i]["title"], curses.color_pair(2), ) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + ". " + datalist[i]["title"]) elif datatype == "top_playlists": for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr( i - offset + 9, self.indented_startcol, "-> " + str(i) + ". " + datalist[i]["playlists_name"] + self.space + datalist[i]["creator_name"], curses.color_pair(2), ) else: self.screen.addstr( i - offset + 9, self.startcol, str(i) + ". " + datalist[i]["playlists_name"] + self.space + datalist[i]["creator_name"], ) elif datatype == "toplists": for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr( i - offset + 9, self.indented_startcol, "-> " + str(i) + ". " + datalist[i], curses.color_pair(2), ) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + ". " + datalist[i]) elif datatype == "playlist_classes" or datatype == "playlist_class_detail": for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr( i - offset + 9, self.indented_startcol, "-> " + str(i) + ". " + datalist[i], curses.color_pair(2), ) else: self.screen.addstr(i - offset + 9, self.startcol, str(i) + ". " + datalist[i]) elif datatype == "djchannels": for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr( i - offset + 8, self.indented_startcol, "-> " + str(i) + ". " + datalist[i]["song_name"], curses.color_pair(2), ) else: self.screen.addstr(i - offset + 8, self.startcol, str(i) + ". " + datalist[i]["song_name"]) elif datatype == "search": self.screen.move(4, 1) self.screen.clrtobot() self.screen.timeout(-1) self.screen.addstr(8, self.startcol, "选择搜索类型:", curses.color_pair(1)) for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr( i - offset + 10, self.indented_startcol, "-> " + str(i) + "." + datalist[i - 1], curses.color_pair(2), ) else: self.screen.addstr(i - offset + 10, self.startcol, str(i) + "." + datalist[i - 1]) self.screen.timeout(100) elif datatype == "help": for i in range(offset, min(len(datalist), offset + step)): if i == index: self.screen.addstr( i - offset + 9, self.indented_startcol, "-> " + str(i) + ". '" + (datalist[i][0].upper() + "'").ljust(11) + datalist[i][1] + " " + datalist[i][2], curses.color_pair(2), ) else: self.screen.addstr( i - offset + 9, self.startcol, str(i) + ". '" + (datalist[i][0].upper() + "'").ljust(11) + datalist[i][1] + " " + datalist[i][2], ) self.screen.addstr(20, 6, "NetEase-MusicBox 基于Python,所有版权音乐来源于网易,本地不做任何保存") self.screen.addstr(21, 10, "按 [G] 到 Github 了解更多信息,帮助改进,或者Star表示支持~~") self.screen.addstr(22, self.startcol, "Build with love to music by omi") self.screen.refresh()