我有错误 TypeError: Object of type method is not JSON serializable

问题描述

所以,我正在制作这个脚本,它使用 Last.FM API 检查一周内播放次数最多的歌曲。我用 Python 编写了这个脚本:

import discord
import datetime
from discord import member
from discord.ext import commands,tasks
from discord.utils import get
from datetime import datetime
import threading
import requests
import json
from requests.api import request

class MostPlayer(commands.Cog):
    def __init__(self,bot):
        self.bot = bot
        self.lastfmmostplayed.start()

    @tasks.loop(seconds=1)
    async def lastfmmostplayed(self):
        await self.bot.wait_until_ready()
        Now = datetime.Now()
        dt_string = Now.strftime("%a %H:%M:%s")
        if(dt_string == 'Sat 17:47:00'):
            print("Time for a new song suggestion!")
            tokens = open('./hidden/tokens.json')
            tokenimport = json.load(tokens)
            lastfmtoken = tokenimport['lastfmtoken']
            # Album Chart - No. 1
            requesturl_no1album = requests.get('http://ws.audioscrobbler.com/2.0/?method=user.getweeklyalbumchart&user=QuinnTT&api_key=' + lastfmtoken + '&format=json')
            parsed = requesturl_no1album.json()
            album = parsed['weeklyalbumchart']['album']
            sorted_album = sorted(album,key = lambda song:song["playcount"])
            most_listened_song = sorted_album[-1] # last element is the one with the biggest playcount
            album_chart_artist = most_listened_song['artist']['#text']
            album_chart_name = most_listened_song['name']
            album_chart_playcount = most_listened_song['playcount']
            album_chart_url = most_listened_song['url']
            *_,album_chart_artist_url,album_chart_name_url = album_chart_url.split("/")
            no1_info_url = ('http://ws.audioscrobbler.com/2.0/?method=album.getinfo&api_key=' + lastfmtoken + '&artist=' + album_chart_artist_url + '&album=' + album_chart_name_url + '&format=json')
            request_no_info = (requests.get(no1_info_url)).json
            album_data = json.dumps(request_no_info)
            images = album_data['album']['image']
            mega_images = [i for i in images if i['size'] == 'mega']
            try:
                mega_image_url = mega_images[0]['#text']
            except IndexError:
                mega_image_url = ""
            embed_album=discord.Embed(title="Quinn's Album of the Week:",description=f"{album_chart_name} by {album_chart_artist}",color=0x9d30ab)
            embed_album.set_footer(text=f"Quinn listened {album_chart_playcount}x to this album last week!")
            embed_album.set_image(url=mega_image_url)
            await self.bot.get_channel(850308124493086730).send(embed=embed_album)

        else:
            return

def setup(bot):
    bot.add_cog(MostPlayer(bot))

但是,当我运行它时,出现以下错误

TypeError: 类型方法的对象不是 JSON 可序列化的

我不知道错误是什么,所以这就是我在这里问的原因。以防万一,这里是从 Last.FM 中获取的 JSON(第 38 行)。代码应该获取专辑图像的链接,以便我稍后在 discord.py 嵌入中使用它。

{
    "album": {
        "name": "Significant Other","artist": "Limp Bizkit","mbid": "be3e00aa-368a-3f09-ac96-cd094e9a7151","url": "https://www.last.fm/music/Limp+Bizkit/Significant+Other","image": [{
            "#text": "https://lastfm.freetls.fastly.net/i/u/34s/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png","size": "small"
        },{
            "#text": "https://lastfm.freetls.fastly.net/i/u/64s/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png","size": "medium"
        },{
            "#text": "https://lastfm.freetls.fastly.net/i/u/174s/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png","size": "large"
        },{
            "#text": "https://lastfm.freetls.fastly.net/i/u/300x300/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png","size": "extralarge"
        },"size": "mega"
        },"size": ""
        }],"listeners": "774409","playcount": "10274552","tracks": {
            "track": [{
                "name": "Intro","url": "https://www.last.fm/music/Limp+Bizkit/_/Intro","duration": "78","@attr": {
                    "rank": "1"
                },"streamable": {
                    "#text": "0","fulltrack": "0"
                },"artist": {
                    "name": "Limp Bizkit","mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c","url": "https://www.last.fm/music/Limp+Bizkit"
                }
            },{
                "name": "Just Like This","url": "https://www.last.fm/music/Limp+Bizkit/_/Just+Like+This","duration": "215","@attr": {
                    "rank": "2"
                },{
                "name": "Nookie","url": "https://www.last.fm/music/Limp+Bizkit/_/Nookie","duration": "289","@attr": {
                    "rank": "3"
                },{
                "name": "Break Stuff","url": "https://www.last.fm/music/Limp+Bizkit/_/Break+Stuff","duration": "166","@attr": {
                    "rank": "4"
                },{
                "name": "Re-Arranged","url": "https://www.last.fm/music/Limp+Bizkit/_/Re-Arranged","duration": "354","@attr": {
                    "rank": "5"
                },{
                "name": "I'm broke","url": "https://www.last.fm/music/Limp+Bizkit/_/I%27m+broke","duration": "239","@attr": {
                    "rank": "6"
                },{
                "name": "Nobody Like You","url": "https://www.last.fm/music/Limp+Bizkit/_/Nobody+Like+You","duration": "260","@attr": {
                    "rank": "7"
                },{
                "name": "Don't Go Off Wandering","url": "https://www.last.fm/music/Limp+Bizkit/_/Don%27t+Go+Off+Wandering","@attr": {
                    "rank": "8"
                },{
                "name": "9 Teen 90 Nine","url": "https://www.last.fm/music/Limp+Bizkit/_/9+Teen+90+Nine","duration": "276","@attr": {
                    "rank": "9"
                },{
                "name": "N 2 Gether Now","url": "https://www.last.fm/music/Limp+Bizkit/_/N+2+Gether+Now","@attr": {
                    "rank": "10"
                },{
                "name": "Trust?","url": "https://www.last.fm/music/Limp+Bizkit/_/Trust%3F","duration": "299","@attr": {
                    "rank": "11"
                },{
                "name": "No Sex","url": "https://www.last.fm/music/Limp+Bizkit/_/No+Sex","duration": "234","@attr": {
                    "rank": "12"
                },{
                "name": "Show Me What You Got","url": "https://www.last.fm/music/Limp+Bizkit/_/Show+Me+What+You+Got","duration": "266","@attr": {
                    "rank": "13"
                },{
                "name": "A Lesson Learned","url": "https://www.last.fm/music/Limp+Bizkit/_/A+Lesson+Learned","duration": "160","@attr": {
                    "rank": "14"
                },{
                "name": "Outro / Radio Sucks / The Mind of Les","url": "https://www.last.fm/music/Limp+Bizkit/_/Outro+%2F+Radio+Sucks+%2F+The+Mind+of+Les","duration": "438","@attr": {
                    "rank": "15"
                },{
                "name": "[silence]","url": "https://www.last.fm/music/Limp+Bizkit/_/%5Bsilence%5D","duration": "4","@attr": {
                    "rank": "16"
                },"url": "https://www.last.fm/music/Limp+Bizkit"
                }
            }]
        },"tags": {
            "tag": [{
                "name": "albums I own","url": "https://www.last.fm/tag/albums+I+own"
            },{
                "name": "Nu Metal","url": "https://www.last.fm/tag/Nu+Metal"
            },{
                "name": "rapcore","url": "https://www.last.fm/tag/rapcore"
            },{
                "name": "rock","url": "https://www.last.fm/tag/rock"
            },{
                "name": "limp bizkit","url": "https://www.last.fm/tag/limp+bizkit"
            }]
        },"wiki": {
            "published": "11 Jul 2016,20:19","summary": "Significant Other is the second album by American rap rock/nu Metal band Limp Bizkit. Released in 1999 by Flip/Interscope Records,the album saw the band expanding its sound from that of its debut album Three Dollar Bill,Yall,to incorporate further Metal and hip hop influences. Significant Other was co-produced by Terry Date and Limp Bizkit. The album has sold at least 16 million copies worldwide. <a href=\"http://www.last.fm/music/Limp+Bizkit/Significant+Other\">Read more on Last.fm</a>.","content": "Significant Other is the second album by American rap rock/nu Metal band Limp Bizkit. Released in 1999 by Flip/Interscope Records,to incorporate further Metal and hip hop influences. Significant Other was co-produced by Terry Date and Limp Bizkit. The album has sold at least 16 million copies worldwide. <a href=\"http://www.last.fm/music/Limp+Bizkit/Significant+Other\">Read more on Last.fm</a>. User-contributed text is available under the Creative Commons By-SA License; additional terms may apply."
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)