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

Error when uploading video - "AttributeError: 'NoneType' object has no attribute 'extension'" #46

Open LAMike310 opened 5 years ago

LAMike310 commented 5 years ago

I cloned the repo and tried to run the example "upload-a-video.py":

from instapy_cli import client

username = 'xxxxx'
password = 'xxxxx'
video = '../docs/video-sample-upload.mp4'
text = 'This will be the caption of your video.' + '\r\n' + 'You can also use hashtags! #hash #tag #now'

with client(username, password) as cli:
    cli.upload(video, text)

But I got an error in the console that said:

Reusing settings: ig.json
Traceback (most recent call last):
  File "upload-a-video.py", line 9, in <module>
    cli.upload(video, text)
  File "/Library/Python/2.7/site-packages/instapy_cli/cli.py", line 105, in upload
    media = Media(file)
  File "/Library/Python/2.7/site-packages/instapy_cli/media.py", line 29, in __init__
    self.check_type()
  File "/Library/Python/2.7/site-packages/instapy_cli/media.py", line 32, in check_type
    self.media_ext = filetype.guess(self.media_path).extension
AttributeError: 'NoneType' object has no attribute 'extension'

Any idea what I'm doing wrong?

b3nab commented 5 years ago

please, add relevant informations such as python and instapy-cli version Also, I suggest you to update to latest release of instapy-cli 0.0.10 and re-try.

KuHuKD2 commented 5 years ago

Hello. I've got the same sort of error on .mp4 file in ubuntu. Pictures are send successfully without errors.

instapy-cli 0.0.10 | python 3.5.2 Reusing settings: User_ig.json

Traceback (most recent call last): File "/usr/local/bin/instapy", line 10, in sys.exit(main()) File "/home/digital/.local/lib/python3.5/site-packages/instapy_cli/main.py", line 44, in main cli.upload(options.file, text, story) File "/home/digital/.local/lib/python3.5/site-packages/instapy_cli/cli.py", line 109, in upload media = Media(file) File "/home/digital/.local/lib/python3.5/site-packages/instapy_cli/media.py", line 29, in init self.check_type() File "/home/digital/.local/lib/python3.5/site-packages/instapy_cli/media.py", line 32, in check_type self.media_ext = filetype.guess(self.mediapath).extension AttributeError: 'NoneType' object has no attribute 'extension'

oce-290480 commented 5 years ago

Hi, I dont know if this issues is resolved or not. I just got the same issues

python ver : 3.6.8 | instapy-cli 0.0.12

Traceback (most recent call last): File "c:\users\oce\anaconda3\envs\insta\lib\runpy.py", line 193, in _run_module_as_main "main", mod_spec) File "c:\users\oce\anaconda3\envs\insta\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "C:\Users\oce\Anaconda3\envs\insta\Scripts\instapy.exe__main__.py", line 9, in File "c:\users\oce\anaconda3\envs\insta\lib\site-packages\instapy_cli__main.py", line 44, in main cli.upload(options.file, text, story) File "c:\users\oce\anaconda3\envs\insta\lib\site-packages\instapy_cli\cli.py", line 116, in upload media = Media(file) File "c:\users\oce\anaconda3\envs\insta\lib\site-packages\instapy_cli\media.py", line 29, in init__ self.check_type() File "c:\users\oce\anaconda3\envs\insta\lib\site-packages\instapy_cli\media.py", line 32, in check_type self.media_ext = filetype.guess(self.media_path).extension AttributeError: 'NoneType' object has no attribute 'extension'

Help would greatly appreciated

Thanks

tomaaron commented 5 years ago

This is duo to the missing sanity check for the filetype. Somehow the lib filetype is having problems with some mp4 and can't guess the right type.

b3nab commented 5 years ago

Can you provide a mp4 video example that filetype failed to identify?

KuHuKD2 commented 5 years ago

Of course, this one, for example: File.mp4

salahar9 commented 5 years ago

@b3nab i have the solution, the issue's origin is actually the filetype library and specifically this line at media.py self.media_ext = filetype.guess(self.media_path).extension filetype is returning None on some videos so to fix it you can use Magic instead of filetype PyPi: https://pypi.org/project/python-magic-bin/0.4.14/ or Pip: pip install python-magic-bin so now in the media.py first : import magic
then change the check_type function to this: `def check_type(self):

    self.media_ext = magic.from_file(self.media_path,mime=True)
    self.media_ext=  self.media_ext.split('/')[1]` 
formazione commented 5 years ago

image Thanks it worked really fine.

Kaszanas commented 5 years ago

@b3nab Please review the changes if possible. This is an issue which is also happening in my use case of this library.

keenan14 commented 4 years ago

Hey guys I have been having the same issue my code was: from instapy_cli import client

username = 'testing211714' password = '****' image = 'posts/keenan.png' text = 'This will be the caption of your photo.' + '\r\n' + 'You can also use hashtags! #hash #tag #now'

with client(username, password) as cli: cli.upload(image, text)`

But recieved the error: (env) Ryans-MacBook-Pro:InstaAutomaterFirstTry ryankeenan$ python app.py [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 "app.py", line 9, in cli.upload(image, text) File "/Users/ryankeenan/Desktop/git/InstaAutomaterFirstTry/env/lib/python3.7/site-packages/instapy_cli/cli.py", line 153, in upload raise IOError("Unable to upload.") OSError: Unable to upload.

I followed @salahar9 advice and imported magic at media.py but the error just changed to: (env) Ryans-MacBook-Pro:InstaAutomaterFirstTry ryankeenan$ python app.py [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 "app.py", line 10, in cli.upload(image, text) File "/Users/ryankeenan/Desktop/git/InstaAutomaterFirstTry/env/lib/python3.7/site-packages/instapy_cli/cli.py", line 153, in upload raise IOError("Unable to upload.") OSError: Unable to upload. Does anyone see where I went wrong??