-1

im trying to get specific data in json response from spotify. My current code is:

with requests.Session()as(c):
    url = 'https://accounts.spotify.com/en/login?continue=https:%2F%2Fwww.spotify.com%2Fint%2Faccount%2Foverview%2F'
headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
page = c.get(url, headers=headers)
CSRF = page.cookies['csrf_token']
headers = {'Accept': '*/*',  'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_1 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A403 Safari/602.1',
           'Referer': 'https://accounts.spotify.com/en/login/?continue=https:%2F%2Fwww.spotify.com%2Fus%2Fgooglehome%2Fregister%2F&_locale=en-US'}
url = 'https://accounts.spotify.com/api/login'
login_data = {
    'remember': 'true',
    'username': USER,
    'password': PASS,
    'csrf_token': CSRF
}
cookies = dict(__bon='MHwwfC0xNDAxNTMwNDkzfC01ODg2NDI4MDcwNnwxfDF8MXwx')
login = c.post(url, headers=headers, data=login_data, cookies=cookies)

if '{"displayName":"' in login.text:
    url = 'https://www.spotify.com/us/account/overview/'
    capture = c.get(url, headers=headers)
    csr = capture.headers['X-Csrf-Token']
    json_data = json.loads(login.text)
    result = json_data['displayName']
    print(result)

when I run this

{"displayName":"John Doe",
"smallImageUrl":"https://scontent.xx.fbcdn.net/v/t1.0-1/p50x50/10407982_10104564418730171_2968639978505808989_n.jpg?_nc_cat=110\u0026_nc_oc=AQmoXCg0tfbf9LuxGWAbpEv-96K57xmie4S3avDrYh3l90g8W-ParNV5mNK0oPU6ERk\u0026_nc_ht=scontent.xx\u0026oh=2fe2149364f012a3c5e43e6d999375ab\u0026oe=5DBD8940",
"largeImageUrl":"https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/10407982_10104564418730171_2968639978505808989_n.jpg?_nc_cat=110\u0026_nc_oc=AQmoXCg0tfbf9LuxGWAbpEv-96K57xmie4S3avDrYh3l90g8W-ParNV5mNK0oPU6ERk\u0026_nc_ht=scontent.xx\u0026oh=3aec23a8c56be536739ba4cca4e1cc6e\u0026oe=5DBC409D"} 

I would like to only print the value: John Doe (SOLVED). but how to get John Doe value in field for discord bot ?

embed=discord.Embed()
embed.add_field(name=undefined, value=undefined, inline=False)
await self.bot.say(embed=embed)
Arkistarvh Kltzuonstev
  • 6,824
  • 7
  • 26
  • 56
Sean
  • 1
  • 3
  • 1
    Possible duplicate of [Parse JSON in Python](https://stackoverflow.com/questions/7771011/parse-json-in-python) – Gino Mempin Jul 09 '19 at 06:41

2 Answers2

1

you can use the json method of the requests response object.

login = c.post(url, headers=headers, data=login_data, cookies=cookies)
login_json = login.json()
if "displayName" in login_json:
    print(login_json["displayName"])
haijohn
  • 59
  • 4
  • How to call displayName value on this : `embed=discord.Embed() embed.add_field(name=FullName, value=undefined, inline=True) await self.bot.say(embed=embed)` – Sean Jul 09 '19 at 07:17
0

Use json library

import json
#Your response, probably login.text
s = """{"displayName":"John Doe","smallImageUrl":"https://scontent.xx.fbcdn.net/v/t1.0-1/p50x50/10407982_10104564418730171_2968639978505808989_n.jpg?_nc_cat=110\u0026_nc_oc=AQmoXCg0tfbf9LuxGWAbpEv-96K57xmie4S3avDrYh3l90g8W-ParNV5mNK0oPU6ERk\u0026_nc_ht=scontent.xx\u0026oh=2fe2149364f012a3c5e43e6d999375ab\u0026oe=5DBD8940","largeImageUrl":"https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/10407982_10104564418730171_2968639978505808989_n.jpg?_nc_cat=110\u0026_nc_oc=AQmoXCg0tfbf9LuxGWAbpEv-96K57xmie4S3avDrYh3l90g8W-ParNV5mNK0oPU6ERk\u0026_nc_ht=scontent.xx\u0026oh=3aec23a8c56be536739ba4cca4e1cc6e\u0026oe=5DBC409D"}"""

dj = json.loads(s)

print(dj["displayName"])

OUTPUT

John Doe
Wonka
  • 1,548
  • 1
  • 13
  • 20
  • `if '{"displayName":"' in login.text: url = 'https://www.spotify.com/us/account/overview/' capture = c.get(url, headers=headers) csr = capture.headers['X-Csrf-Token'] json_data = json.loads(login.text) result = json_data['displayName'] print(result)` I can get value john doe to with this, but how to embed John doe in discord bot field `embed=discord.Embed() embed.add_field(name=FullName, value=undefined, inline=True) await self.bot.say(embed=embed)` – Sean Jul 09 '19 at 07:09