Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
API Query
#1
I make a query api via html.
I would like to do it with python.

HTML:

Result:
Output:
URL http://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/master.m3u8
My attempt with python

import json
import requests

url = 'https://mediathekviewweb.de/api/query'
headers = {'Content-Type': 'application/json'}
data = ("""{
          queries:[  
            {  
              fields:[  
                'title',
                'topic'
              ],
              query:'Livestream'
            },
            {  
              fields:[  
                'channel'
              ],
              query:'ndr'
            }

          ]
    };
""")


response = requests.post(url, headers=headers)

if response.status_code == 200:
    print(json.loads(response.content.decode('utf-8')))
else:
    print(response.status_code, response.text)
The Error Message:

Output:
400 {"result":null,"err":["Unexpected token o in JSON at position 1"]}
Reply
#2
You don't pass datain the request
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#3
(Jan-10-2020, 03:25 AM)buran Wrote: You don't pass datain the request
I guess he forget and have tried that.

It will not work the way you have it now.
Most change header data content-type from the default text/html to text/plain.
import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0',
    'Accept': '*/*',
    'Accept-Language': 'en-US,en;q=0.5',
    'Content-Type': 'text/plain;charset=UTF-8',
    'Connection': 'keep-alive',
}

data = '{"queries":[{"fields":["title","topic"],"query":"Livestream"},{"fields":["channel"],"query":"ndr"}]}'

response = requests.post('https://mediathekviewweb.de/api/query', headers=headers, data=data)
response_json = response.json()
print(response_json['result']['results'][0]['url_video'])
Output:
http://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/master.m3u8
Reply
#4
just to add that you can do also
data = {"queries":[{"fields":["title","topic"],"query":"Livestream"},{"fields":["channel"],"query":"ndr"}]}
response = requests.post('https://mediathekviewweb.de/api/query', headers=headers, json=data)
as an alternative to snippsat's example and get the same result
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#5
Thank you very much.
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020