1
0
mirror of https://github.com/instaloader/instaloader.git synced 2024-10-02 13:27:07 +02:00

Merge branch 'master' into upcoming/v4.11

This commit is contained in:
Alexander Graf 2024-03-17 20:49:37 +01:00
commit 1875aede82
5 changed files with 18 additions and 7 deletions

View File

@ -6,4 +6,5 @@ Instaloader is written by
- Alexander Graf (@aandergr)
- André Koch-Kramer (@Thammus)
- Lars Lindqvist (@e5150)
- Eduardo M Kalinowksi (@ekalin)
- ... and many more, see https://github.com/instaloader/instaloader/graphs/contributors

View File

@ -125,7 +125,6 @@ Supporters
| Instaloader is proudly sponsored by
| `@rocketapi-io <https://github.com/rocketapi-io>`__
| `@socialmethod <https://github.com/socialmethod>`__
See `Alex' GitHub Sponsors <https://github.com/sponsors/aandergr>`__ page for
how you can sponsor the development of Instaloader!

View File

@ -19,4 +19,5 @@ from .lateststamps import LatestStamps
from .nodeiterator import NodeIterator, FrozenNodeIterator, resumable_iteration
from .structures import (Hashtag, Highlight, Post, PostSidecarNode, PostComment, PostCommentAnswer, PostLocation,
Profile, Story, StoryItem, TopSearchResults, TitlePic,
load_structure_from_file, save_structure_to_file, load_structure, get_json_structure)
load_structure_from_file, save_structure_to_file,
load_structure, get_json_structure)

View File

@ -991,7 +991,8 @@ class Instaloader:
max_count: Optional[int] = None,
total_count: Optional[int] = None,
owner_profile: Optional[Profile] = None,
takewhile: Optional[Callable[[Post], bool]] = None) -> None:
takewhile: Optional[Callable[[Post], bool]] = None,
possibly_pinned: int = 0) -> None:
"""
Download the Posts returned by given Post Iterator.
@ -1003,6 +1004,9 @@ class Instaloader:
.. versionchanged:: 4.8
Add `takewhile` parameter.
.. versionchanged:: 4.10.3
Add `possibly_pinned` parameter.
:param posts: Post Iterator to loop through.
:param target: Target name.
:param fast_update: :option:`--fast-update`.
@ -1011,6 +1015,8 @@ class Instaloader:
:param total_count: Total number of posts returned by given iterator.
:param owner_profile: Associated profile, if any.
:param takewhile: Expression evaluated for each post. Once it returns false, downloading stops.
:param possibly_pinned: Number of posts that might be pinned. These posts do not cause download
to stop even if they've already been downloaded.
"""
displayed_count = (max_count if total_count is None or max_count is not None and max_count < total_count
else total_count)
@ -1032,7 +1038,7 @@ class Instaloader:
) as (is_resuming, start_index):
for number, post in enumerate(posts, start=start_index + 1):
should_stop = not takewhile(post)
if should_stop and post.is_pinned:
if should_stop and number <= possibly_pinned:
continue
if (max_count is not None and number > max_count) or should_stop:
break
@ -1066,7 +1072,7 @@ class Instaloader:
except PostChangedException:
post_changed = True
continue
if fast_update and not downloaded and not post_changed and not post.is_pinned:
if fast_update and not downloaded and not post_changed and number > possibly_pinned:
# disengage fast_update for first post when resuming
if not is_resuming or number > 0:
break
@ -1488,7 +1494,7 @@ class Instaloader:
posts_to_download = profile.get_posts()
self.posts_download_loop(posts_to_download, profile_name, fast_update, post_filter,
total_count=profile.mediacount, owner_profile=profile,
takewhile=posts_takewhile)
takewhile=posts_takewhile, possibly_pinned=3)
if latest_stamps is not None and posts_to_download.first_item is not None:
latest_stamps.set_last_post_timestamp(profile_name,
posts_to_download.first_item.date_local)

View File

@ -814,7 +814,11 @@ class Post:
@property
def is_pinned(self) -> bool:
"""True if this Post has been pinned by at least one user.
"""
.. deprecated: 4.10.3
This information is not returned by IG anymore
Used to return True if this Post has been pinned by at least one user, now likely returns always false.
.. versionadded: 4.9.2"""
return 'pinned_for_users' in self._node and bool(self._node['pinned_for_users'])