b3nab / instapy-cli

:sparkles: Python library and CLI to upload photo and video on Instagram. W/o a phone!
MIT License
601 stars 98 forks source link

[BUG] OSError: Unable to Upload #75

Open dylan736 opened 5 years ago

dylan736 commented 5 years ago

I cannot upload to Instagram with InstaPy-CLI using unchanged python scripts which used to work just 2 days ago.

I have two files (master.py and exec.py). I run exec.py to carry out the functions in master.py.

Master.py:

import urllib.request
from PIL import Image, ImageOps
from instapy_cli import client
from datetime import date

def get_item_shop():
    url = "http://api2.nitestats.com/v1/shop/image?footer=USE%20CODE:%20%22DISTURBED%22"
    urllib.request.urlretrieve(url, "itemshop.jpg")

def resize():
    desired_size = 1728
    im_pth = "itemshop.jpg"

    im = Image.open(im_pth)
    old_size = im.size  # old_size[0] is in (width, height) format

    ratio = float(desired_size)/max(old_size)
    new_size = tuple([int(x*ratio) for x in old_size])
    # use thumbnail() or resize() method to resize the input image

    # thumbnail is a in-place operation

    # im.thumbnail(new_size, Image.ANTIALIAS)

    im = im.resize(new_size, Image.ANTIALIAS)
    # create a new image and paste the resized on it

    new_im = Image.new("RGB", (desired_size, desired_size), (30,30,30))
    new_im.paste(im, ((desired_size-new_size[0])//2,
                        (desired_size-new_size[1])//2))

    output_path = 'itemshop2.jpg'
    new_im.save(output_path)

def post():
    today = date.today()
    d2 = today.strftime("%B %d, %Y")

    heart = "\U00002764"

    username = 'fbr.itemshop'
    password = 'Albion0411'
    cookie_file = 'cookie.json'

    image = 'itemshop2.jpg'
    text = 'Daily item shop for ' + d2 +'.' + '\r\n' + '\r\n' + 'Rate this item shop from 1-10!' + '\r\n' + '\r\n' + 'Use code: "Disturbed" to support me! ' + heart + '\r\n' + '#fortnite #itemshop #dailyitemshop #fortniteitemshop'

    with client(username, password, cookie_file=cookie_file, write_cookie_file=True) as cli:

        cookies = cli.get_cookie()

        cli.upload(image, text)

Exec.py:

import master
import time

master.get_item_shop()
print("Item shop saved.")
time.sleep(5)
master.resize()
print("Image resized.")
time.sleep(5)
master.post()
print("Image posted.")

These scripts fetch the Fortnite Item Shop image from nitestats.com API, resizes it to 1:1 for IG, and uploads it. Saving the image and resizing still works, but posting to IG doesn't. As the item shop refreshes every day at 00:00 for me, I use crontab on my RPi to schedule the running of these python scripts. It has worked in the past, so I know crontab has no errors. However, I set crontab to write to a log so that I could see if anything went wrong. Below is what I got.

Logs

This is what is outputted to a log when the scripts are functioning:

Item shop saved.
Image resized.
[IG] not found cookie/cookie_file >> login as default
SAVED: COOKIE_FOR_USER.json
Done.
Image posted.

And, when they're not working:

Item shop saved.
Image resized.
[IG] re-use cookie from COOKIE_FOR_USER.json
Error is >>
    Bad Request

Something went bad.
Please retry or send an issue on https://github.com/b3nab/instapy-cli

Traceback (most recent call last):
  File "/home/pi/Downloads/ItemShopBot/exec.py", line 10, in <module>
    master.post()
  File "/home/pi/Downloads/ItemShopBot/master.py", line 57, in post
    cli.upload(image, text)
  File "/home/pi/.local/lib/python3.8/site-packages/instapy_cli/cli.py", line 153, in upload
    raise IOError("Unable to upload.")
OSError: Unable to upload.

Env (please complete the following information):

I have searched Google for this issue, and the only thing I could find was saying that Instagram have declined my request to upload. I have attempted to run the code on Windows, which gave the same issue, with and without a VPN, with different Instagram accounts, reset the passwords, and tried to use the scripts with and without the cookie file. I am fairly new to Python and would appreciate any help possible.

Karltroid commented 5 years ago

Go into instapy_cli/media.py and make sure that def check_type(self) is this:

    def check_type(self):
        ext = filetype.guess(self.media_path)
        if None is self.media_ext:
            absolute_path = os.path.abspath(self.media_path)
            self.media_ext = os.path.splitext(absolute_path)[-1].replace(".", "")
        else:
            self.media_ext = ext.extension
ghost commented 5 years ago

I'm facing the same issue as well. I've wrote a very simple code to upload an image called 't.png' that's in the same directory as my source code.

Source Code:

from instapy_cli import client

username = '' #Username Goes Here
password = '' #Password Goes Here

content = './t.png'
with client (username, password) as cli:
    cli.upload(content)

Error Obtained:

[IG] not found cookie/cookie_file >> login as default
Error parsing error response: Expecting value: line 1 column 1 (char 0)
Error is >>
    Bad Request

Something went bad.
Please retry or send an issue on https://github.com/b3nab/instapy-cli

Traceback (most recent call last):
  File "pg.py", line 8, in <module>
    cli.upload(content)
  File "C:\Users\RJ\Desktop\NewTest\lib\site-packages\instapy_cli\cli.py", line 153, in upload
    raise IOError("Unable to upload.")
OSError: Unable to upload.

Environment:

I'd also like to note that I've done the modifications to media.py as @Karltroid recommended and I'm still facing the same issue. I've also tried to modify media.py as per #46 and that still didn't help.

FruechteBini commented 5 years ago

facing the same issue, tried the same as @THConer :( any help appreciated!

dylan736 commented 5 years ago

@Karltroid your fix did not work. Still getting the same error. :(

HoshenKadosh commented 5 years ago

Same here.... Not working anymore...

RK-GEEKSDOBYTE commented 5 years ago

ig changed the api

ghost commented 5 years ago

Update: It seems to me that as of now (November 2nd 2019 7:00am GMT) uploading works perfectly fine for myself.

rgomunita commented 5 years ago

I solved the problem by uninstalling and then installing: (Ubuntu 18.04.3 with Python3)

pip uninstall instapy-cli pip install instapy-cli

(for python3 replace pip to pip3)

islandwonderer commented 4 years ago

It had been working fine for me until today. Then I got the dreaded "Bad Request" message. Will try to reinstall.

jafarzzz commented 4 years ago

@islandwonderer i tried reinstalling...its not working ...any other solution....?

roycebank commented 4 years ago

suddenly gived error before today bot was running anyway. i know alles ok for upload, probably instagram did something. whatever happened it happened today

pydemo commented 4 years ago

same issue on my side. Reinstall did not help

roycebank commented 4 years ago

will you upload just photos? you should look, maybe helpful https://paste.ubuntu.com/p/mxyYmBpryK/

esTse commented 4 years ago

Same problem here since the 17/11/2019, probably Instagram made changes in the API.

pydemo commented 4 years ago

will you upload just photos? you should look, maybe helpful https://paste.ubuntu.com/p/mxyYmBpryK/

this is fantastic! thank you

Lucasmiguelmac commented 4 years ago

Has anyone been able to work this out?

pydemo commented 4 years ago

Has anyone been able to work this out?

gave up on it and wrote new script using gist posted by @roycebank https://paste.ubuntu.com/p/mxyYmBpryK/

pydemo commented 4 years ago

Has anyone been able to work this out?

gave up on it and wrote new script using gist posted by @roycebank https://paste.ubuntu.com/p/mxyYmBpryK/

I'm new to this... could you be so kind as to explain how to use this code?

i needed to create a post so that was easy change - your hack depends on ur needs

jafarzzz commented 4 years ago

@roycebank not able to upload videos with your code

roycebank commented 4 years ago

@roycebank not able to upload videos with your code

i was say "will you upload just photos" but if instagram give access to upload video format you can upload with my code.

pydemo commented 4 years ago

@roycebank not able to upload videos with your code

his script is only a guideline. you have to hack it to make it work for you

jafarzzz commented 4 years ago

@pydemo guide me to hack it then

pydemo commented 4 years ago

@pydemo guide me to hack it then

@roycebank's solution will require chromedriver and portable chrome or carary browser. This hack also depends on the platform - where do u run it on Windows, Linux or MacOS?

OlaSeye commented 4 years ago

@pydemo kindly help with the lines needed to hack. what is expected here: driverpth = ""

pydemo commented 4 years ago

@pydemo kindly help with the lines needed to hack. what is expected here: driverpth = ""

it's a path to chromedriver (which you have to download for your platform/Chrome/Canary browser version)

OlaSeye commented 4 years ago

Thanks @pydemo

I am getting the below after "pip install autoit". what am i missing.

File "c:/Users/user/Desktop/py codes/new_insta.py", line 4, in import autoit ModuleNotFoundError: No module named 'autoit'

pydemo commented 4 years ago

Thanks @pydemo

I am getting the below after "pip install autoit". what am i missing.

File "c:/Users/user/Desktop/py codes/new_insta.py", line 4, in import autoit ModuleNotFoundError: No module named 'autoit'

autoit will work only on Windows OS

OlaSeye commented 4 years ago

I am using windows OS 7

OlaSeye commented 4 years ago

Already installed successfully as below:

PS C:\Users\user> pip install autoit Requirement already satisfied: autoit in c:\users\user\appdata\local\programs\python\python37-32\lib\site-packages (0.1)

pydemo commented 4 years ago

Already installed successfully as below:

PS C:\Users\user> pip install autoit Requirement already satisfied: autoit in c:\users\user\appdata\local\programs\python\python37-32\lib\site-packages (0.1)

simple googling will give u solution: "python -m pip install pyautoit"

OlaSeye commented 4 years ago

Thanks @pydemo . I have been able to get it to login. However its not posting the picture nor the text. I observe there are two pops after it logged in. example is the one below. How to handle it.

image

OlaSeye commented 4 years ago

Hello All, I need your help to hack the code posted by @roycebank . Can login but no post. What am I to hack.

roycebank commented 4 years ago

try to change driver.find_element_by_xpath value in whiles/loops.

mcpeixoto commented 4 years ago

Does anyone have a solution to this yet?

roycebank commented 4 years ago

guys i've tried a different method its working for upload videos but i couldnt upgrade method codes bcause i dont have time. you must connect your ig account with any facebook account then fill mail,passwd with fb account info. https://paste.ubuntu.com/p/gfnjZ397k7/

OlaSeye commented 4 years ago

I will give it a try

dikshu-py commented 4 years ago

I'm facing the same issue as well. I've wrote a very simple code to upload an image called 't.png' that's in the same directory as my source code.

Source Code:

from instapy_cli import client

username = '' #Username Goes Here
password = '' #Password Goes Here

content = './t.png'
with client (username, password) as cli:
    cli.upload(content)

Error Obtained:

[IG] not found cookie/cookie_file >> login as default
Error parsing error response: Expecting value: line 1 column 1 (char 0)
Error is >>
    Bad Request

Something went bad.
Please retry or send an issue on https://github.com/b3nab/instapy-cli

Traceback (most recent call last):
  File "pg.py", line 8, in <module>
    cli.upload(content)
  File "C:\Users\RJ\Desktop\NewTest\lib\site-packages\instapy_cli\cli.py", line 153, in upload
    raise IOError("Unable to upload.")
OSError: Unable to upload.

Environment:

* Python version 3.7.3

* Instapy-CLI version 0.0.12

* Windows 10 machine

I'd also like to note that I've done the modifications to media.py as @Karltroid recommended and I'm still facing the same issue. I've also tried to modify media.py as per #46 and that still didn't help.

facing the same problem and not find any helpful result about this one

dikshu-py commented 4 years ago

same reaction here facing same..Here

pydemo commented 4 years ago

As requested here's image upload workaround using @roycebank code: https://github.com/pydemo/final_upload

OlaSeye commented 4 years ago

Not working @pydemo

pydemo commented 4 years ago

Not working @pydemo

leave error details on a project page

ram-sh commented 4 years ago

having the same error, tried to reinstall instapy-cli, no joy :(

Error is >> Bad Request

Something went bad. Please retry or send an issue on https://github.com/b3nab/instapy-cli File "C:\Users\Antec\AppData\Roaming\Python\Python37\site-packages\instapy_cli\cli.py", line 153, in upload raise IOError("Unable to upload.") OSError: Unable to upload.

any steps to fix it? many thanks in advance!!

pydemo commented 4 years ago

Not working @pydemo

updated, try now

jasonyunjoonpark commented 4 years ago

Has anyone been able to work this out?

gave up on it and wrote new script using gist posted by @roycebank https://paste.ubuntu.com/p/mxyYmBpryK/

autoit.control_send("Open", "Edit1", photopath)
time.sleep(1.5)
autoit.control_send("Open", "Edit1", "{ENTER}")

The second control_send doesn't upload the picture for me. It just reopens the "Open" file window, a new one.

The strange thing is the same code is working on a different machine. Not sure why it doesn't work on the current machine. Any help appreciated.

pydemo commented 4 years ago

fyi, "autoit" Python module will work only on Windows OS

On Mon, Mar 16, 2020 at 3:09 PM Jason Park notifications@github.com wrote:

Has anyone been able to work this out?

gave up on it and wrote new script using gist posted by @roycebank https://github.com/roycebank https://paste.ubuntu.com/p/mxyYmBpryK/

autoit.control_send("Open", "Edit1", photopath) time.sleep(1.5) autoit.control_send("Open", "Edit1", "{ENTER}")

The second control_send doesn't upload the picture for me. It just reopens the "Open" file window, a new one.

The strange thing is the same code is working on a different machine. Not sure why it doesn't work on the current machine. Any help appreciated.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/instagrambot/instapy-cli/issues/75#issuecomment-599712061, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIYJ32PCQE3LYZ4SU3LXJ5LRHZ2M7ANCNFSM4JHCLD4Q .

-- Alex Buzunov 1 (212) 518-3000

jasonyunjoonpark commented 4 years ago

fyi, "autoit" Python module will work only on Windows OS On Mon, Mar 16, 2020 at 3:09 PM Jason Park @.***> wrote: Has anyone been able to work this out? gave up on it and wrote new script using gist posted by @roycebank https://github.com/roycebank https://paste.ubuntu.com/p/mxyYmBpryK/ autoit.control_send("Open", "Edit1", photopath) time.sleep(1.5) autoit.control_send("Open", "Edit1", "{ENTER}") The second control_send doesn't upload the picture for me. It just reopens the "Open" file window, a new one. The strange thing is the same code is working on a different machine. Not sure why it doesn't work on the current machine. Any help appreciated. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#75 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIYJ32PCQE3LYZ4SU3LXJ5LRHZ2M7ANCNFSM4JHCLD4Q . -- Alex Buzunov 1 (212) 518-3000

Yes i understand that. The issue is that the code is opening 2 "Open windows" for some reason. It was working on another windows machine fine. The same code is not working on a different windows machine.

pydemo commented 4 years ago

which code?

On Mon, Mar 16, 2020 at 3:18 PM Jason Park notifications@github.com wrote:

fyi, "autoit" Python module will work only on Windows OS … <#m-5745052845703630099> On Mon, Mar 16, 2020 at 3:09 PM Jason Park @.***> wrote: Has anyone been able to work this out? gave up on it and wrote new script using gist posted by @roycebank https://github.com/roycebank https://github.com/roycebank https://paste.ubuntu.com/p/mxyYmBpryK/ autoit.control_send("Open", "Edit1", photopath) time.sleep(1.5) autoit.control_send("Open", "Edit1", "{ENTER}") The second control_send doesn't upload the picture for me. It just reopens the "Open" file window, a new one. The strange thing is the same code is working on a different machine. Not sure why it doesn't work on the current machine. Any help appreciated. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#75 (comment) https://github.com/instagrambot/instapy-cli/issues/75#issuecomment-599712061>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIYJ32PCQE3LYZ4SU3LXJ5LRHZ2M7ANCNFSM4JHCLD4Q . -- Alex Buzunov 1 (212) 518-3000

Yes i understand that. The issue is that the code is opening 2 "Open windows" for some reason. It was working on another windows machine fine. The same code is not working on a different windows machine.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/instagrambot/instapy-cli/issues/75#issuecomment-599715787, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIYJ32MSU3KY6B6RVZNV2XDRHZ3PTANCNFSM4JHCLD4Q .

-- Alex Buzunov 1 (212) 518-3000

jasonyunjoonpark commented 4 years ago

which code? On Mon, Mar 16, 2020 at 3:18 PM Jason Park @.> wrote: fyi, "autoit" Python module will work only on Windows OS … <#m-5745052845703630099> On Mon, Mar 16, 2020 at 3:09 PM Jason Park @.> wrote: Has anyone been able to work this out? gave up on it and wrote new script using gist posted by @roycebank https://github.com/roycebank https://github.com/roycebank https://paste.ubuntu.com/p/mxyYmBpryK/ autoit.control_send("Open", "Edit1", photopath) time.sleep(1.5) autoit.control_send("Open", "Edit1", "{ENTER}") The second control_send doesn't upload the picture for me. It just reopens the "Open" file window, a new one. The strange thing is the same code is working on a different machine. Not sure why it doesn't work on the current machine. Any help appreciated. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#75 (comment) <#75 (comment)>>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIYJ32PCQE3LYZ4SU3LXJ5LRHZ2M7ANCNFSM4JHCLD4Q . -- Alex Buzunov 1 (212) 518-3000 Yes i understand that. The issue is that the code is opening 2 "Open windows" for some reason. It was working on another windows machine fine. The same code is not working on a different windows machine. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#75 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIYJ32MSU3KY6B6RVZNV2XDRHZ3PTANCNFSM4JHCLD4Q . -- Alex Buzunov 1 (212) 518-3000

https://paste.ubuntu.com/p/mxyYmBpryK/

autoit.control_send("Open", "Edit1", photopath)
time.sleep(1.5)
autoit.control_send("Open", "Edit1", "{ENTER}")

The above code does not work. When it does control_send, it just opens the window again. I did a work around fix for it by literally duplicating the lines:

autoit.control_send("Open", "Edit1", photopath)
time.sleep(1.5)
autoit.control_send("Open", "Edit1", "{ENTER}")

time.sleep(1.5)
autoit.control_send("Open", "Edit1", photopath)
time.sleep(1.5)
autoit.control_send("Open", "Edit1", "{ENTER}")
pydemo commented 4 years ago

it didn't work for me either. i had to hack it: https://github.com/pydemo/final_upload

On Mon, Mar 16, 2020 at 3:22 PM Jason Park notifications@github.com wrote:

which code? … <#m4743969176246689758> On Mon, Mar 16, 2020 at 3:18 PM Jason Park @.> wrote: fyi, "autoit" Python module will work only on Windows OS … <#m-5745052845703630099> On Mon, Mar 16, 2020 at 3:09 PM Jason Park @.> wrote: Has anyone been able to work this out? gave up on it and wrote new script using gist posted by @roycebank https://github.com/roycebank https://github.com/roycebank https://github.com/roycebank https://paste.ubuntu.com/p/mxyYmBpryK/ autoit.control_send("Open", "Edit1", photopath) time.sleep(1.5) autoit.control_send("Open", "Edit1", "{ENTER}") The second control_send doesn't upload the picture for me. It just reopens the "Open" file window, a new one. The strange thing is the same code is working on a different machine. Not sure why it doesn't work on the current machine. Any help appreciated. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#75 https://github.com/instagrambot/instapy-cli/issues/75 (comment) <#75 (comment) https://github.com/instagrambot/instapy-cli/issues/75#issuecomment-599712061>>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIYJ32PCQE3LYZ4SU3LXJ5LRHZ2M7ANCNFSM4JHCLD4Q . -- Alex Buzunov 1 (212) 518-3000 Yes i understand that. The issue is that the code is opening 2 "Open windows" for some reason. It was working on another windows machine fine. The same code is not working on a different windows machine. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#75 (comment) https://github.com/instagrambot/instapy-cli/issues/75#issuecomment-599715787>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIYJ32MSU3KY6B6RVZNV2XDRHZ3PTANCNFSM4JHCLD4Q . -- Alex Buzunov 1 (212) 518-3000

https://paste.ubuntu.com/p/mxyYmBpryK/

autoit.control_send("Open", "Edit1", photopath)

time.sleep(1.5)

autoit.control_send("Open", "Edit1", "{ENTER}")

The above code does not work. When it does control_send, it just opens the window again. I did a work around fix for it by literally duplicating the lines:

autoit.control_send("Open", "Edit1", photopath)

time.sleep(1.5)

autoit.control_send("Open", "Edit1", "{ENTER}")

time.sleep(1.5)

autoit.control_send("Open", "Edit1", photopath)

time.sleep(1.5)

autoit.control_send("Open", "Edit1", "{ENTER}")

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/instagrambot/instapy-cli/issues/75#issuecomment-599717644, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIYJ32NE6LLUXGEQLF4G2BLRHZ4A3ANCNFSM4JHCLD4Q .

-- Alex Buzunov 1 (212) 518-3000

RomjanHossain commented 3 years ago

what? nobody has solved this issue in 2021? xD