doc: "Troubleshooting" section + minor changes
This commit is contained in:
parent
c54342bb98
commit
bb25f03c7d
@ -82,6 +82,15 @@ See also :class:`Post`, :meth:`Instaloader.download_post`,
|
|||||||
|
|
||||||
Discussed in :issue:`113`.
|
Discussed in :issue:`113`.
|
||||||
|
|
||||||
|
Top X Posts of User
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
With Instaloader, it is easy to download the few most-liked pictres of a user.
|
||||||
|
|
||||||
|
.. literalinclude:: codesnippets/194_top_x_of_user.py
|
||||||
|
|
||||||
|
Discussed in :issue:`194`.
|
||||||
|
|
||||||
Upgrade Images by Local Copies
|
Upgrade Images by Local Copies
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
|
15
docs/codesnippets/194_top_x_of_user.py
Normal file
15
docs/codesnippets/194_top_x_of_user.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
from itertools import islice
|
||||||
|
from math import ceil
|
||||||
|
|
||||||
|
from instaloader import Instaloader, Profile
|
||||||
|
|
||||||
|
PROFILE = ... # profile to download from
|
||||||
|
X_percentage = 10 # percentage of posts that should be downloaded
|
||||||
|
|
||||||
|
L = Instaloader()
|
||||||
|
|
||||||
|
profile = Profile.from_username(L.context, PROFILE)
|
||||||
|
posts_sorted_by_likes = sorted(profile.get_posts(), key = lambda p: p.likes + p.comments)
|
||||||
|
|
||||||
|
for post in islice(posts_sorted_by_likes, ceil(profile.mediacount * X_percentage / 100)):
|
||||||
|
L.download_post(post, PROFILE)
|
23
docs/codesnippets/92_import_firefox_session.py
Normal file
23
docs/codesnippets/92_import_firefox_session.py
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
from glob import glob
|
||||||
|
from os.path import expanduser
|
||||||
|
from sqlite3 import connect
|
||||||
|
|
||||||
|
from instaloader import ConnectionException, Instaloader
|
||||||
|
|
||||||
|
# FIREFOXCOOKIEFILE = "/home/alex/.mozilla/firefox/l96w6b90.default/cookies.sqlite"
|
||||||
|
FIREFOXCOOKIEFILE = glob(expanduser("~/.mozilla/firefox/*.default/cookies.sqlite"))[0]
|
||||||
|
|
||||||
|
instaloader = Instaloader(max_connection_attempts=1)
|
||||||
|
instaloader.context._session.cookies.update(connect(FIREFOXCOOKIEFILE)
|
||||||
|
.execute("SELECT name, value FROM moz_cookies "
|
||||||
|
"WHERE baseDomain='instagram.com'"))
|
||||||
|
|
||||||
|
try:
|
||||||
|
username = instaloader.test_login()
|
||||||
|
if not username:
|
||||||
|
raise ConnectionException()
|
||||||
|
except ConnectionException:
|
||||||
|
raise SystemExit("Cookie import failed. Are you logged in successfully in Firefox?")
|
||||||
|
|
||||||
|
instaloader.context.username = username
|
||||||
|
instaloader.save_session_to_file()
|
@ -17,12 +17,14 @@ Reporting Bugs
|
|||||||
If you encounter a bug, do not hesitate to report it in our
|
If you encounter a bug, do not hesitate to report it in our
|
||||||
`Issue Tracker <https://github.com/instaloader/instaloader/issues>`__. Since
|
`Issue Tracker <https://github.com/instaloader/instaloader/issues>`__. Since
|
||||||
Instaloader is actively developed, the majority of bugs is fixed within only
|
Instaloader is actively developed, the majority of bugs is fixed within only
|
||||||
**3 days** after being reported. When reporting a problem, please keep the
|
**4 days** after being reported. When reporting a problem, please keep the
|
||||||
following in mind:
|
following in mind:
|
||||||
|
|
||||||
- Ensure you **use the latest version** of Instaloader. The currently-installed
|
- Ensure you **use the latest version** of Instaloader. The currently-installed
|
||||||
version can be found out with ``instaloader --version``.
|
version can be found out with ``instaloader --version``.
|
||||||
|
|
||||||
|
- Check whether there is a valid solution in our :ref:`troubleshooting` section.
|
||||||
|
|
||||||
- Briefly **check whether the bug has already been reported**. If you find an
|
- Briefly **check whether the bug has already been reported**. If you find an
|
||||||
issue reporting the same bug you encountered, comment there rather than
|
issue reporting the same bug you encountered, comment there rather than
|
||||||
opening a new issue. However, if unsure, please create a new issue.
|
opening a new issue. However, if unsure, please create a new issue.
|
||||||
|
@ -60,6 +60,7 @@ Instaloader Documentation
|
|||||||
cli-options
|
cli-options
|
||||||
as-module
|
as-module
|
||||||
codesnippets
|
codesnippets
|
||||||
|
troubleshooting
|
||||||
contributing
|
contributing
|
||||||
|
|
||||||
Useful Links
|
Useful Links
|
||||||
|
60
docs/troubleshooting.rst
Normal file
60
docs/troubleshooting.rst
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
.. _troubleshooting:
|
||||||
|
|
||||||
|
Troubleshooting
|
||||||
|
===============
|
||||||
|
|
||||||
|
.. highlight:: python
|
||||||
|
|
||||||
|
429 - Too Many Requests
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Instaloader has a logic to keep track of its requests to Instagram and to obey
|
||||||
|
their rate limits. Since they are nowhere documented, we try them out
|
||||||
|
experimentally. We have a daily cron job running to confirm that Instaloader
|
||||||
|
still stays within the rate limits. Nevertheless, the rate control logic assumes
|
||||||
|
that
|
||||||
|
|
||||||
|
- at one time, Instaloader is the only application that consumes requests. I.e.
|
||||||
|
neither the Instagram browser interface, nor a mobile app, nor another
|
||||||
|
Instaloader instance is running in parallel,
|
||||||
|
|
||||||
|
- no requests had been consumed when Instaloader starts.
|
||||||
|
|
||||||
|
The latter one implies that restarting or reinstantiating Instaloader often
|
||||||
|
within short time is prone to cause a 429. When a request is denied with a 429,
|
||||||
|
Instaloader retries the request as soon as the temporary ban is assumed to be
|
||||||
|
expired. In case the retry continuously fails for some reason, which should not
|
||||||
|
happen in normal conditions, consider adjusting the
|
||||||
|
:option:`--max-connection-attempts` option.
|
||||||
|
|
||||||
|
**"Too many queries in the last time"** is not an error. It is a notice that the
|
||||||
|
rate limit has almost been reached, according to Instaloader's own rate
|
||||||
|
accounting mechanism. We regularly adjust this mechanism to match Instagram's
|
||||||
|
current rate limiting.
|
||||||
|
|
||||||
|
Login error
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Instaloader's login *should* work fine, both with and without
|
||||||
|
Two-Factor-Authentication. It also supports handling the *checkpoint challenge*,
|
||||||
|
issued when Instagram suspects authentication activity on your account, by
|
||||||
|
pointing the user to an URL to be opened in a browser.
|
||||||
|
|
||||||
|
Nevertheless, in :issue:`92` users report problems with logging in. To still use
|
||||||
|
Instaloader's logged-in functionality, you may use the following script to
|
||||||
|
workaround login problems by importing the session cookies from Firefox and
|
||||||
|
bypassing Instaloader's login.
|
||||||
|
|
||||||
|
.. literalinclude:: codesnippets/92_import_firefox_session.py
|
||||||
|
|
||||||
|
To use this,
|
||||||
|
|
||||||
|
#. login to Instagram in Firefox,
|
||||||
|
|
||||||
|
#. execute the snippet,
|
||||||
|
|
||||||
|
#. then, ``instaloader -l USERNAME`` should work fine.
|
||||||
|
|
||||||
|
If you do not use your default firefox profile, or your operating system has the
|
||||||
|
paths differently set up, you may have to alter the ``FIREFOXCOOKIEFILE``
|
||||||
|
variable first.
|
Loading…
x
Reference in New Issue
Block a user