JoMingyu/google-play-scraper

[BUG] When run app() multiple times, categories list in output is wrong.

GuanHenan opened this issue · 3 comments

I find a bug in constants/element.py, line 42

def extract_categories(s, categories=None):
if categories == None:
categories = []

if s == None or len(s) == 0:
return categories
if len(s) >= 4 and type(s[0]) is str:
categories.append({"name": s[0], "id": s[2]})
else:
for sub in s:
extract_categories(sub, categories)
return categories

The problem is using list as the default parameter. It does not work as expected. It's recommended to use None as the default value and initialize the list inside the function if it's None.

Modify the function extract_categories in google_play_scraper/constants/element.py as following:

def extract_categories(s, categories=None):
    if categories == None:
        categories = []
    if s == None or len(s) == 0:
        return categories

    if len(s) >= 4 and type(s[0]) is str:
        categories.append({"name": s[0], "id": s[2]})
    else:
        for sub in s:
            extract_categories(sub, categories)

    return categories

Oops. I'll fix it in the next release.