Trax
Trax

Reputation: 1538

Search multiple pages for match

I'm trying to solve an exercise, basically, I have to parse a JSON page and search for an object. If the object is not found then I have to search the next page for it. If the person I'm looking for is on the first page then I pass the test but I fail if it's on another page. I checked and each page is parsed correctly but the return is always undefined if it's not on the first page.

This is my code:

import urllib.request
import json

class Solution:

    def __new__(self, character):
        url = 'https://challenges.hackajob.co/swapi/api/people/'
        numberOfFilms = 0
        #
        # Some work here; return type and arguments should be according to the problem's requirements
        #
        numberOfFilms = self.search(self,character,url) 
        return numberOfFilms

    def search(self, character,url):
        numberOfFilms = 0
        found = False
        with urllib.request.urlopen(url) as response:
            data = response.read()
            jsonData =  json.loads(data.decode('utf-8'))

        for r in jsonData['results']:
            if r['name'] == character:
                return len(r['films'])
        if (jsonData['next']):
            nextPage = jsonData['next']
            self.search(self,character,nextPage)

Upvotes: 0

Views: 54

Answers (1)

Carlos Gonzalez
Carlos Gonzalez

Reputation: 878

change the last line to return self.search(self,character,nextPage)

Upvotes: 3

Related Questions