Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JSON output of Google API changed again I think #31

Open
eamonnkenny opened this issue Dec 14, 2022 · 22 comments
Open

JSON output of Google API changed again I think #31

eamonnkenny opened this issue Dec 14, 2022 · 22 comments

Comments

@eamonnkenny
Copy link

Hi Joe,

I think they changed the google API again. Getting None errors returned from any attempted download. I presume we've to dig into their output again to find a fix.

@eamonnkenny
Copy link
Author

the error is arising inside the format_object function because the try except returns an exception which is None. Might be a good idea to not just print(e) but instead do something like print( "Error in format_object:", e )

@eamonnkenny
Copy link
Author

eamonnkenny commented Dec 14, 2022

Found the fix Joe, turns out that if you change info = data[11] to info = data[22] it will all start working again.

@greg-oz
Copy link

greg-oz commented Dec 14, 2022

Works for me as well - Thanks

@Charlweed
Copy link

Charlweed commented Dec 27, 2022

Future readers, for branch "patch-1" commit e91e6a3, the line to edit is
file: google_images_download/google_images_download.py
method: format_object
line: 407
And works on Google Image Search for Tuesday, December 27, 2022 11:31:19 AM
I changed "info = data[11]" to "info = data[22]" and had success :)

@websonder
Copy link

its stop again, is there any solution so i can run it again?

@DenimPauel
Copy link

on Jan. 9, 2023
I changed "info = data[11]" to "info = data[23]" and had success.

@websonder
Copy link

Thanks Its working

@gwonhong
Copy link

January 17, 2023 03:03:44 AM

"info = data[11]" to "info = data[22]"

doesn't work. It worked until last week as I remember.

Error message starts with
'bool' object is not subscriptable

And just read the answer from @DenimPauel
"info = data[11]" to "info = data[23]"
works!
Thanks to @DenimPauel

@gipinze
Copy link

gipinze commented Jan 16, 2023

January 17, 2023 03:03:44 AM

"info = data[11]" to "info = data[22]"

doesn't work. It worked until last week as I remember.

Error message starts with 'bool' object is not subscriptable

And just read the answer from @DenimPauel "info = data[11]" to "info = data[23]" works! Thanks to @DenimPauel

Yes, info = data[23] works

16th January 2023

@eamonnkenny
Copy link
Author

Is the command line now superslow?
I ran the following and its taking an age to run:

googleimagesdownload -l 10 -r labeled-for-reuse -k pepper -f jpg

@Mr-Philo
Copy link

Thanks all for sharing this solution!

Until now (2023/02/11), changing info = data[11] to info = data[23] still works for me 👍

@spacewalkingninja
Copy link

Works here too! This should be updated to the main git tho :(

@trevorgribble
Copy link

Bumping again today (March 22), anyone else affected?

@DenimPauel
Copy link

DenimPauel commented Mar 23, 2023

change
from "info = data[9]"
to "info = data[25]"
on line 405 or 407 in google_images_download.py.

or ... How about this?
bb22871
this could search data[xx] maybe in the feature too.

Mar. 23, 2023.

@eamonnkenny
Copy link
Author

eamonnkenny commented Mar 23, 2023

So, we are at the previous bug again... 3rd time fixing it. This now is a better fix, and would have fixed the code 3 times without having to definte which item gives the correct value of info:

    if info is None:
        # EK
        #info = data[11]
        for item in data:
           if type( item ) == dict:
               info = item

basically what I'm doing is looking at all values of data and seeing which one is the dictionary. When we find it this is what info is set to. It works. And it would have worked for data[22] which occurred about 6 months ago. This then changed to data[23] and now the issue is that info = data[25]. We should just use my new fix. At least if there is one available directory the code can find the value of info itself.

@trevorgribble
Copy link

@eamonnkenny great call, working smooth again, thank you very much.

bulatnv added a commit to bulatnv/google-images-download-bugfix that referenced this issue Apr 21, 2023
Once again fixed bug related to info change:
More info: Joeclinton1#31 (comment)
@eamonnkenny
Copy link
Author

eamonnkenny commented Nov 16, 2023 via email

@mrclean789
Copy link

mrclean789 commented Nov 16, 2023

Thank you Eamonn, yes it works now. I'm actually running this again on a new machine and found out I had to install certificates :D

@websonder
Copy link

hi this is my config

Format the object in readable format

def format_object(self, object):
    data = object[1]
    main = data[3]
    info = data[25]
    if info is None:
        info = data[11]
    formatted_object = {}
    try:

i am getting error, could you please help me to solve this
Item no.: 575 --> Item name = Anyk Napja 2023
Evaluating...
-1
Image objects data unpacking failed. Please leave a comment with the above error at #26
Traceback (most recent call last):
File "/home/usethis/script1.py", line 1380, in
main()
File "/home/usethis/script1.py", line 1367, in main
paths, errors = response.download(arguments) # wrapping response in a variable just for consistency
File "/home/usethis/script1.py", line 1007, in download
paths, errors = self.download_executor(arguments)
File "/home/usethis/script1.py", line 1143, in download_executor
images, tabs = self.download_page(url) # download page
TypeError: cannot unpack non-iterable NoneType object

@rotaugenlaubfrosch
Copy link

I have

 def format_object(self, object):
        data = object[1]
        main = data[3]
        info = data[25]
        if info is None:
            for item in data:
                if type( item ) == dict:
                    info = item
        formatted_object = {}
...

And sadly I get:
Image objects data unpacking failed. Please leave a comment with the above error at ....

@trevorgribble
Copy link

I have

 def format_object(self, object):
        data = object[1]
        main = data[3]
        info = data[25]
        if info is None:
            for item in data:
                if type( item ) == dict:
                    info = item
        formatted_object = {}
...

And sadly I get: Image objects data unpacking failed. Please leave a comment with the above error at ....

Receiving same output, did some digging and it appears the issue is upstream from this format_object function.

Specifically, in the _extract_data_pack function:

def _extract_data_pack(self, page) function, 
           start_line = page.find("AF_initDataCallback({key: \\'ds:1\\'") - 10

is returning -11 (meaning that page.find is returning -1, so we are not finding the desired term. Everything from then on is basically coming up with no data.

So it's seems that the respData returned from:


                req = urllib.request.Request(url, headers=headers)
                resp = urllib.request.urlopen(req)
                respData = str(resp.read())

Has changed quite a bit that the _extract_data_pack function is no longer functional.

@websonder
Copy link

please let me know if someone found any solution for this, i really need this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests