def view_lyrics(self, count): song = [] for i in range(int(count / 10)): ms = self.session.query(pysql.Music163).filter( pysql.Music163.has_lyric == "N").limit(10) for m in ms: print("正在抓取歌词 ID {} 歌曲 {}".format( m.song_id, pylog.Blue(tools.encode(m.song_name)))) self.view_lyric(m.song_id) song.append({ "name": m.song_name, "author": m.author, "comment": m.comment }) ms = self.session.query(pysql.Music163).filter( pysql.Music163.has_lyric == "N").limit(count % 10) for m in ms: print("正在抓取歌词 ID {} 歌曲 {}".format( m.song_id, pylog.Blue(tools.encode(m.song_name)))) self.view_lyric(m.song_id) song.append({ "name": m.song_name, "author": m.author, "comment": m.comment }) return song
def auto_view(self, count=1): try: if count < 10: msc = self.session.query(pysql.Music163).filter( pysql.Music163.over == "N").limit(count) for m in msc: print("抓取热评 ID {} 歌曲 {}".format( m.song_id, pylog.Blue(m.song_name.encode('utf-8')))) self.views_capture(m.song_id, 1, 1) else: for i in range(count / 10): msc = self.session.query(pysql.Music163).filter( pysql.Music163.over == "N").limit(10) for m in msc: print("抓取热评 ID {} 歌曲 {}".format( m.song_id, pylog.Blue(m.song_name.encode('utf-8')))) self.views_capture(m.song_id, 1, 1) msc = self.session.query(pysql.Music163).filter( pysql.Music163.over == "N").limit(count % 10) for m in msc: print("抓取热评 ID {} 歌曲 {}".format( m.song_id, pylog.Blue(m.song_name.encode('utf-8')))) self.views_capture(m.song_id, 1, 1) except: self.session.rollback() pylog.log.error("自动抓取热评出现异常,歌曲ID:" + str(m.song_id)) raise
def auto_view(self, count=1): song = [] if count < 10: msc = self.session.query( pysql.Music163).filter(pysql.Music163.done == "N").order_by( pysql.Music163.id).limit(count) for m in msc: try: print("抓取热评 ID {} 歌曲 {}".format( m.song_id, pylog.Blue(tools.encode(m.song_name)))) self.views_capture(m.song_id, 1, 1) song.append({ "name": m.song_name, "author": m.author, "song_id": m.song_id }) except Exception as e: self.session.rollback() pylog.log.error("自动抓取热评出现异常:{} 歌曲ID:{}".format( e, m.song_id)) else: for i in range(int(count / 10)): msc = self.session.query(pysql.Music163).filter( pysql.Music163.done == "N").limit(10) for m in msc: try: print("抓取热评 ID {} 歌曲 {}".format( m.song_id, pylog.Blue(tools.encode(m.song_name)))) self.views_capture(m.song_id, 1, 1) song.append({ "name": m.song_name, "author": m.author, "song_id": m.song_id }) except Exception as e: self.session.rollback() pylog.log.error("自动抓取热评出现异常:{} 歌曲ID:{}".format( e, m.song_id)) msc = self.session.query( pysql.Music163).filter(pysql.Music163.done == "N").order_by( pysql.Music163.id).limit(count % 10) for m in msc: try: print("抓取热评 ID {} 歌曲 {}".format( m.song_id, pylog.Blue(tools.encode(m.song_name)))) self.views_capture(m.song_id, 1, 1) song.append({ "name": m.song_name, "author": m.author, "song_id": m.song_id }) except Exception as e: self.session.rollback() pylog.log.error("自动抓取热评出现异常:{} 歌曲ID:{}".format( e, m.song_id)) return song
def view_lyrics(self, count): for i in range(count / 10): ms = self.session.query(pysql.Music163).filter( pysql.Music163.has_lyric == "N").limit(10) for m in ms: print("正在抓取歌词 ID {} 歌曲 {}".format( m.song_id, pylog.Blue(m.song_name.encode("utf-8")))) self.view_lyric(m.song_id) ms = self.session.query(pysql.Music163).filter( pysql.Music163.has_lyric == "N").limit(count % 10) for m in ms: print("正在抓取歌词 ID {} 歌曲 {}".format( m.song_id, pylog.Blue(m.song_name.encode("utf-8")))) self.view_lyric(m.song_id)
def auto_view(self, count=1): song = [] if self.music_type == self.Common: msc = self.session.query( pysql.Music163).filter(pysql.Music163.done == "N").order_by( pysql.Music163.id).limit(count) for m in msc: try: print("抓取热评 ID {} 歌曲 {}".format( m.song_id, pylog.Blue(tools.encode(m.song_name)))) self.views_capture(m.song_id, 1, 1) song.append({ "name": m.song_name, "author": m.author, "song_id": m.song_id }) except Exception as e: pylog.log.error("自动抓取热评出现异常:{} 歌曲ID:{}".format( e, m.song_id)) elif self.music_type == self.Official: msc = self.session.query(pysql.Toplist163).filter( pysql.Toplist163.done == "N").order_by( pysql.Toplist163.id).limit(count) for m in msc: try: print("抓取官方榜单歌曲热评 ID {} 歌曲 {}".format( m.song_id, pylog.Blue(tools.encode(m.song_name)))) self.views_capture(m.song_id, 1, 2) # 意味着每一页的评论都抓取 song.append({ "name": m.song_name, "author": m.author, "song_id": m.song_id }) except Exception as e: pylog.log.error("自动抓取官方榜单热评出现异常:{} 歌曲ID:{}".format( e, m.song_id)) return song
def searchSong(key): url = default.search_api data = {'s': key, 'offset': 0, 'limit': 20, 'type': "1"} req = requests.post(url, headers=default.header, data=data, timeout=10) songs = req.json()["result"]['songs'] song_table = AsciiTable([["ID", "歌曲", "专辑", "演唱"]]) for item in songs: id = item['id'] name = (item['name']).encode("utf-8") album = (item['album']['name']).encode("utf-8") artist = [] for a in item['artists']: artist.append(a['name'].encode("utf-8")) song_table.table_data.append([str(id), name, album, ",".join(artist)]) print(pylog.Blue("与 \"{}\" 有关的歌曲".format(key))) print(song_table.table)
def searchSinger(key): url = uapi.search_api data = {'s': key, 'offset': 0, 'limit': 10, 'type': "100"} req = requests.post(url, headers=uapi.header, data=data, timeout=10) if req.json()["result"]['artistCount'] == 0: pylog.log.warn("关键词 {} 没有可搜索艺术家".format(key)) return artists = req.json()["result"]['artists'] song_table = AsciiTable([["ID", "姓名", "专辑数量", "MV数量"]]) for item in artists: id = str(item['id']) name = item['name'].encode("utf-8") acount = str(item['albumSize']) mcount = str(item['mvSize']) song_table.table_data.append([id, name, acount, mcount]) print(pylog.Blue("与 \"{}\" 有关的歌手".format(key))) print(song_table.table)
def searchAlbum(key): url = default.search_api data = {'s': key, 'offset': 0, 'limit': 20, 'type': "10"} req = requests.post(url, headers=default.header, data=data, timeout=10) albums = req.json()["result"]['albums'] song_table = AsciiTable([["ID", "专辑", "演唱","发行方"]]) for item in albums: id = item['id'] name = item['name'].encode("utf-8") company = "" if item['company'] != None: company = item['company'].encode("utf-8") artist = [] for a in item['artists']: artist.append(a['name'].encode("utf-8")) song_table.table_data.append([str(id), name, ",".join(artist), company]) print(pylog.Blue("与 \"{}\" 有关的专辑".format(key))) print(song_table.table)
def searchPlaylist(key): url = uapi.search_api data = {'s': key, 'offset': 0, 'limit': 5, 'type': "1000"} req = requests.post(url, headers=uapi.header, data=data, timeout=10) if req.json()["result"]['playlistCount'] == 0: pylog.log.warn("关键词 {} 没有可搜索歌单".format(key)) return playlists = req.json()["result"]['playlists'] song_table = AsciiTable([["ID", "歌单", "维护者", "播放数量", "收藏数量"]]) for item in playlists: id = str(item['id']) name = item['name'].encode("utf-8") creator = item['creator']['nickname'].encode("utf-8") pcount = str(item['playCount']) bcount = str(item['bookCount']) song_table.table_data.append([id, name, creator, pcount, bcount]) print(pylog.Blue("与 \"{}\" 有关的歌单".format(key))) print(song_table.table)
def searchSong(key): url = uapi.search_api data = {'s': key, 'offset': 0, 'limit': 20, 'type': "1"} req = requests.post(url, headers=uapi.header, data=data, timeout=10) if req.json()["result"]['songCount'] == 0: pylog.log.warn("关键词 {} 没有可搜索歌曲".format(key)) return songs = req.json()["result"]['songs'] song_table = AsciiTable([["ID", "歌曲", "专辑", "演唱"]]) for item in songs: id = item['id'] name = tools.encode(item['name']) album = tools.encode(item['album']['name']) artist = [] for a in item['artists']: artist.append(tools.encode(a['name'])) song_table.table_data.append([str(id), name, album, ",".join(artist)]) print(pylog.Blue("与 \"{}\" 有关的歌曲".format(key))) print(song_table.table)
def searchAlbum(key): url = uapi.search_api data = {'s': key, 'offset': 0, 'limit': 20, 'type': "10"} req = requests.post(url, headers=uapi.header, data=data, timeout=10) if req.json()["result"]['albumCount'] == 0: pylog.log.warn("关键词 {} 没有可搜索专辑".format(key)) return albums = req.json()["result"]['albums'] song_table = AsciiTable([["ID", "专辑", "演唱", "发行方"]]) for item in albums: id = item['id'] name = tools.encode(item['name']) company = "" if item['company'] != None: company = tools.encode(item['company']) artist = [] for a in item['artists']: artist.append(tools.encode(a['name'])) song_table.table_data.append( [str(id), name, ",".join(artist), company]) print(pylog.Blue("与 \"{}\" 有关的专辑".format(key))) print(song_table.table)