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

问题描述 投票:0回答:1

我“编写”了这段代码,该代码基本上是从个人资料中扫描所有帖子,然后下载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. 我想知道此脚本的代码是否“干净”,因为我是从另一个代码改编过来的。
  2. 如何添加个人资料列表?现在,我必须一一写下。我知道可以使用profile_list = ['profile1', 'profile2', 'profile3', ...],但我不知道如何在代码中实现它。

如果问题太简单了,请问我,我对Python还是陌生的。

python instagram
1个回答
0
投票

响应数字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)
© www.soinside.com 2019 - 2024. All rights reserved.