使用 Instaloader 扫描帐户中的所有帖子并下载 (x) 个最喜欢的帖子

Using Instaloader to scan all posts from an account and download (x) most liked

我 "wrote" 这个代码基本上扫描个人资料中的所有帖子,然后下载 5 个最喜欢的帖子。

from itertools import islice
from math import ceil

from instaloader import Instaloader, Profile

PROFILE = "profile_name"

L = Instaloader(save_metadata=True, compress_json=False, download_video_thumbnails=False, download_comments=False, post_metadata_txt_pattern="{likes}")

profile = Profile.from_username(L.context, PROFILE)

posts_sorted_by_likes = sorted(profile.get_posts(), key=lambda post: post.likes, reverse=True)

for post in islice(posts_sorted_by_likes, ceil(5)):
    L.download_post(post, PROFILE)
  1. 我想知道这个脚本的代码是不是"clean"因为我是从另一个脚本改编的
  2. 如何添加配置文件列表?现在我必须一一写下来。我知道可以使用 profile_list = ['profile1', 'profile2', 'profile3', ...] 但我不知道如何在代码中实现它。

对不起,如果问题太基础了,我对 Python 很陌生。

回复数字 2:

如果您已经知道要从哪些配置文件下载(即,如您所述,您有一个 profile_list = ['profile1', 'profile2', 'profile3', ...]),您可以创建一个 Profile 对象列表。您可以使用 for 循环或使用列表理解以更紧凑的方式执行此操作:

For循环方法:

profile_objects = []
for p in profile_list:
    profile_objects.append(Profile.from_username(L.context, p))

列表理解:

profile_objects = [Profile.from_username(L.context, p) for p in profile_list]

之后,您应该在遍历他们的帖子之前遍历 Profile 对象列表:

for profile in profile_objects:
    for post in islice(posts_sorted_by_likes, 5):
        L.download_post(post, PROFILE)