是否存在可下载GraphSidecar中指定数量帖子的Instaloader函数?
Instaloader Sidecar帖子下载问题修复方案
核心问题(SidecarNode缺失Post属性)解决方法
post.get_sidecar_nodes()返回的SidecarNode为专属命名元组,仅存储边车内容的资源地址、是否为视频等独有属性,date_utc这类通用属性和所属主Post完全一致,无需额外构造Post对象,调整下载逻辑复用主Post属性即可,不建议直接将SidecarNode传入仅适配完整Post对象的posts_download_loop方法。
修正后代码实现
def _download_post(self, post, source, sidecar_limit, filter_func=None): if post.typename == 'GraphSidecar': # 遍历指定数量的边车节点 for idx, node in enumerate(post.get_sidecar_nodes(end=sidecar_limit)): # 执行筛选逻辑,不符合条件直接跳过当前节点,不会中断下载 if filter_func and not filter_func(node): continue # 自定义文件名,区分同一帖子下的不同边车内容 filename_prefix = f"{post.date_utc.strftime('%Y-%m-%d_%H-%M-%S')}_{post.shortcode}_{idx}" if node.is_video: # 手动传入主Post的date_utc属性,补充SidecarNode缺失的字段 self.loader.download_pic(filename_prefix, node.video_url, post.date_utc) else: self.loader.download_pic(filename_prefix, node.display_url, post.date_utc) return # 非边车帖子保留原有下载逻辑 self.loader.download_post(post, source)
边车内容筛选需求实现
将你已实现的筛选函数作为filter_func参数传入即可,返回False时仅跳过当前不匹配的边车内容,会继续下载后续节点,无需依赖posts_download_loop的回调逻辑。
内容的提问来源于stack exchange,提问作者AlanCooper
相关产品推荐
相关产品推荐

