Notes

ニューヨークタイムスの一面を毎朝無料で読む

以前の公開場所からの移転として残します。 macOSでの自動実行は、今やcronではなく、launchdが主流になりました。 ニュースレター配信メールでは取り扱いました。 → macOSで定期実行するのはcronからlaunchdへ

macOS版

BSD系dateを使います。

#!/bin/sh
cd ~/Downloads/NewYorkTimes || exit 1

URLDAY=$(date -v-1d '+%Y/%m/%d')
FILENAME=$(date -v-1d '+%F').pdf

curl -s -o "$FILENAME" "https://static01.nyt.com/images/$URLDAY/nytfrontpage/scan.pdf"

if [ ! -s "$FILENAME" ]; then
    echo "$(date): Failed to download $FILENAME" >> ~/Downloads/NewYorkTimes/error.log
    exit 1
fi

open "$FILENAME"
exit 0

macOSのみ:スリープ解除 スリープ中はcronが動きません。システム環境設定で事前にスリープ解除を予約します。

sudo pmset repeat wakeorpoweron MTWRFSU 08:59:00

毎日8時59分に起動し、9時のcronに間に合わせます。解除するには以下です。

sudo pmset repeat cancel

macOSのみ:フルディスクアクセスの許可 システム設定 → プライバシーとセキュリティ → フルディスクアクセスに/usr/sbin/cronを追加してください。これがないとcronが動きません。

Linux版

GNU系dateを使います。

#!/bin/sh
cd ~/Downloads/NewYorkTimes || exit 1

URLDAY=$(date -d 'yesterday' '+%Y/%m/%d')
FILENAME=$(date -d 'yesterday' '+%F').pdf

curl -s -o "$FILENAME" "https://static01.nyt.com/images/$URLDAY/nytfrontpage/scan.pdf"

if [ ! -s "$FILENAME" ]; then
    echo "$(date): Failed to download $FILENAME" >> ~/Downloads/NewYorkTimes/error.log
    exit 1
fi

# デスクトップ環境がある場合のみコメントアウトを外して有効にする
# xdg-open "$FILENAME"

exit 0

共通設定

実行権の付与(共通)

shchmod +x get_nyt.sh

crontab設定(共通)

Crontab実行後は、viエディタと同じコマンドで操作します。 保存して終了は、次のように、ESC押下後、コロンを押下し、wqと打ちます。 ESC→ :wq

編集するコマンド

crontab -e

cronの中身

0 9 * * * ~/Downloads/NewYorkTimes/get_nyt.sh

解除するには以下です。

sudo pmset repeat cancel