Python Get Request All Pages Movie list

Viewed 38

While using below snippet it is not returning values of Page, Total page and data. Also not returning the value of function "getMovieTitles".

import request     
import json


def getMovieTitles(substr):
    titles = []
    url = "https://jsonmock.hackerrank.com/api/movies/search/?Title={}'.format(substr)"
    data = requests.get(url)
    print(data)
    response = json.loads(data.content.decode('utf-8'))
    print(data.content)
    for page in range(0, response['total_pages']):
        page_response = requests.get("https://jsonmock.hackerrank.com/api/movies/search/?Title={}}&page={}".format(substr, page + 1))
        page_content = json.loads(page_response.content.decode('utf-8'))

        print ('page_content', page_content, 'type(page_content)', type(page_content))

        for item in range(0, len(page_content['data'])):
            titles.append(str(page_content['data'][item]['Title']))
    titles.sort()  
    return titles

print(getMovieTitles('Superman'))
2 Answers

First, import

import requests

The problem is in your string formatting

' instead of "

url = "https://jsonmock.hackerrank.com/api/movies/search/?Title={}".format(substr)

and one } too much

page_response = requests.get("https://jsonmock.hackerrank.com/api/movies/search/?Title={}&page={}".format(substr, page + 1))

You're not formatting the url string correctly.


url = "https://jsonmock.hackerrank.com/api/movies/search/?Title={}'.format(substr)"

format() is a method of string and you've put it inside of the url string, instead do:

url = "https://jsonmock.hackerrank.com/api/movies/search/?Title={}".format(substr)

Related