toMedia
进阶用法

自动化与定时任务

定期自动备份 Instagram 内容

🤖 自动化与定时任务

增量备份脚本

#!/bin/bash
# ig-backup.sh - Instagram 增量备份脚本

USERNAME="YOUR_USERNAME"
TARGETS=("user1" "user2" "user3")
DOWNLOAD_DIR="/path/to/instagram-backup"

cd "$DOWNLOAD_DIR"

for target in "${TARGETS[@]}"; do
  echo "正在下载: $target"
  instaloader --login "$USERNAME" \
    --fast-update \
    --no-metadata-json \
    "$target"
  sleep 30  # 每个用户间隔 30 秒
done

echo "备份完成: $(date)"
# 添加到 crontab(每天早上 6 点执行)
0 6 * * * /path/to/ig-backup.sh >> /var/log/ig-backup.log 2>&1
# ig-backup.ps1 - Instagram 增量备份脚本

$Username = "YOUR_USERNAME"
$Targets = @("user1", "user2", "user3")
$DownloadDir = "C:\Instagram-Backup"

Set-Location $DownloadDir

foreach ($target in $Targets) {
    Write-Host "正在下载: $target"
    instaloader --login $Username `
        --fast-update `
        --no-metadata-json `
        $target
    Start-Sleep -Seconds 30
}

Write-Host "备份完成: $(Get-Date)"
# 添加到任务计划程序
$action = New-ScheduledTaskAction -Execute "powershell" `
    -Argument "-File C:\scripts\ig-backup.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At "6:00AM"
Register-ScheduledTask -TaskName "ig-backup" `
    -Action $action -Trigger $trigger

Stories 定时保存

Stories 只存在 24 小时,需要更频繁地检查:

#!/bin/bash
# ig-stories.sh - 每 6 小时保存 Stories

USERNAME="YOUR_USERNAME"
cd /path/to/stories-backup

instaloader --login "$USERNAME" \
  --stories \
  --no-posts \
  user1 user2 user3
# 每 6 小时执行一次
0 */6 * * * /path/to/ig-stories.sh

Python 自动化脚本

import instaloader
import time
import logging
from itertools import islice

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(message)s',
    handlers=[
        logging.FileHandler('ig-backup.log'),
        logging.StreamHandler()
    ]
)

def backup_profiles(username: str, targets: list[str], max_per_user: int = 50):
    L = instaloader.Instaloader(
        download_video_thumbnails=False,
        compress_json=False,
        save_metadata=False,
    )
    L.load_session_from_file(username)

    for target in targets:
        logging.info(f"开始下载: {target}")
        try:
            profile = instaloader.Profile.from_username(L.context, target)

            count = 0
            for post in islice(profile.get_posts(), max_per_user):
                if not L.download_post(post, target=profile.username):
                    logging.info(f"  {target}: 遇到已下载帖子,跳过")
                    break
                count += 1
                time.sleep(2)

            logging.info(f"  {target}: 下载了 {count} 个帖子")
        except Exception as e:
            logging.error(f"  {target}: 下载失败 - {e}")

        time.sleep(30)  # 用户间隔

if __name__ == "__main__":
    backup_profiles(
        username="YOUR_USERNAME",
        targets=["user1", "user2", "user3"],
        max_per_user=30,
    )

结合 --fast-update 和定时任务,可以实现 Instagram 内容的自动持续备份。

On this page