Amazonのアソシエイトとして、ラズパイダ(raspida.com)は適格販売により収入を得ています。詳しくは当サイトの プライバシーポリシーをご覧ください。

ちょっとどこで読んだのか忘れてしまいましたが、海外で壁掛けのポスターのようなサイネージを販売している人が居て、確か中身はRaspberry Pi でした。もう販売していなかったので、少々古い内容の記事を読んだ気がします。

仕組みは異なりますけど、これまでもありました。ハリーポッターの魔法新聞をサイネージやポスターみたいに表示してあり、一部コンテンツが映画と同じように動画として動くというものです。あれもスゴかった。

今回は同じように大きなモニターをデジタルサイネージに見立て、モニターをフレームに収めてあり、中のコンテンツは3つの新聞社のトップ一面が表示されていました。確か、ニューヨークタイムス、ワシントンポスト、USAトゥデイだったかな。

この仕組みは簡単でPDFを表示しているに過ぎません。

初め、どうやってニューヨークタイムスの一面を出せるのかと思ったら、単に一面だけPDFで公開されていたからです。知りませんでした。

数年前の記事だったと思うので、調べてみると、一面(フロントページ)が未だにダウンロード出来たのはニューヨークタイムスだけでした。(全部探したわけではない)

毎日中身が変わるデジタルサイネージを、Raspberry Pi で構築するのは実用的でお洒落ですよね。ちょっと欲しいなと思いました。

2025/06/01:シェルスクリプトの月末処理が抜けており修正しました。

ニューヨークタイムスのPDFをダウンロード(フロントページだけ)

サイネージ形式はともかく、単純にニューヨークタイムスの一面だけ読みたいなと思ったので、早速ダウンロードしてみることに。

決まったURLですから、Webブラウザでそのままダウンロードできます。日付部分だけ変更すればいい。

https://static01.nyt.com/images/2025/05/10/nytfrontpage/scan.pdf

しかし有り難いですよね。一面だけとはいえ無料で公開してくれています。大抵は有料会員だけか、PDFとして公開していません。さすがニューヨークタイムス。

いつまで過去の分が無料公開されているか、またいつまで公開してくれるのか分かりません。 10年前の一面もダウンロードできるので重宝します。英語だけど。

せっかくなので、shファイルでダウンロードするコードを書いて、Cronで定時刻に毎日ダウンロードしています。

macOSでもshファイルとCronを使えますから、Raspberry Piにさせる必要はありません。もちろん、Raspberry Pi にやらせておけば、メインマシンは電源を切れます。

最初はwgetコマンドでやっていました。少し不都合があったので、今はcurlコマンドに変更しています。

コードは次の感じで、エラーなくダウンロードできます。もっと良いコードがあったら教えて欲しい。

cdで移動させているのはそこに保存したいからです。shファイルも同じ場所にあります。

#!/bin/sh
cd ~/Downloads/NewYorkTimes
URLDAY=`date -v-1d '+%Y/%m/%d'`
curl -s -o $(date -v '-1d' '+%F').pdf https://static01.nyt.com/images/$URLDAY/nytfrontpage/scan.pdf
open $(date -v '-1d' '+%F').pdf

exit

簡単に説明します。

  • 日付部分の年月日は、実行時の年月日を取得していて、時差があるため敢えて前日にしています。
  • 前日の日付をURLDAYとして代入し、それをURL部分で使います。
  • 最初の-oオプションでダウンロードしたscan.pdfを$(date -v '-1d' '+%F').pdfの名前に上書きリネームしています。(前日の日付のファイル名)システムの日付フォーマットはハイフンの分割だったので、そのまま+%Fにしました。
  • 最後のopenは必要なければ削除してください。ダウンロード後に自動的にPDFを開きます。
URLDAY=`date -v-1d '+%Y/%m/%d'` ---> 2025/05/22
date -v '-1d' '+%F' ---> 2025-05-22

-vオプションは、date -v-1d '+%F'でもOK。(macOS)

GNU系Linuxだとオプションが違う

ちなみにLinuxだと、このままではエラーになるでしょう。dateのオプションが異なるからです。

date -vオプションはmacOS(BSD系のdate)特有であり、Linux(GNU系のdate)では使えません。例えば、Linuxで「1日前の日付」を取得するには、date -d 'yesterday' を使います。

この辺は私も詳しくありません。あとは同じ記述で行けると思います。

あと、-sオプションを指定しているのは、mailが貯まってしまうからです。curlだと正常動作でもダウンロード進捗が表示されてしまうため、いちいちmailとして受け取ってしまうんです。

mailを削除するのも面倒なので-sオプションで出力させない**–silent サイレントモード**にしています。

最初はエラー内容が分かるから-sオプションなしで試すと良いでしょう。

前回の訂正

以前のままでは月初にエラーになります。 URLの日付が、月が変わった月末になってしまい、存在しないURLになるからです。

#!/bin/sh
cd ~/Downloads/NewYorkTimes
curl -s -o $(date -v '-1d' '+%F').pdf https://static01.nyt.com/images/$(date +%Y)/$(date +%m)/$(date -v '-1d' '+%d')/nytfrontpage/scan.pdf

exit

Cronの設定方法

Cronも一応書いておきます。crontab -eで編集します。

crontab -lで中身を読めます。

その前に、作成したshファイルに実行権を与えないとですね。

chmod +x get_nyt.sh

crontabでshファイルを指定します。

ここでは~/Downloads/NewYorkTimesというフォルダの中に入れているshファイルを指定するだけです。

crontab -l
0 9 * * * ~/Downloads/NewYorkTimes/get_nyt.sh
(分 時 日 月 曜日 実行するコマンド)

このCronでは毎朝9時ちょうどに更新させています。(0 9 * * *

ニューヨークなら-14時間ですから、前日の23時。これなら確実に朝刊は出ています。日本の方が時間は進んでいるため、あまり際どい時間だとPDFが存在せずエラーになります。

いつPDFがアップされているのかは分かりません。ちょうど良い塩梅の時間があれば変更してください。

デスクトップパソコンで利用すると、スリープ状態を使うことが多いです。スリープになっているとcronが動きません。

常にオンの時間帯に設定しておくか、この後にスリープを解除する方法を利用します。(注:macOS)

crontab 書き込み方

crontabは私も苦手なviコマンドと同じ方法の操作です。

最低限のコマンド例

  • i = 上書き挿入(インプットモードへ)
  • ESC (コマンドモードへ)
  • :wq = 保存して終了

順番として1、2、3とすれば書き込んで保存ができます。

1の後に記述して、記述し終えたら一度2のESCを押してコマンドモードへ戻ります。そして、:wqでエンターキーでOKです。

macOSの場合、プライバシーとセキュリティのフルディスクアクセスを許可させないと機能しません。

指定するのは、/usr/sbin/cronです。

縦のモニターにドドンと表示すればカッコイイ

英字新聞って、カッコイイですよね?

日本人からしたらという意味で、海外からすれば漢字交じりの日本語新聞の方がカッコイイとか言われそうです。

フレームに収めなくても、モニターを縦表示にすればニューヨークタイムスなら見栄えが良いと思います。Raspberry Piをサイネージにあつらえて表示してみてください。

サイネージ用のOS

■Pi 5は8GBモデルがオススメ

日本語へ翻訳

英語なので読めない!なら、面倒ですけど、Google翻訳でPDFを読み込ませれば日本語にしてくれます。ただ、APIを使わないとなると手動でやるしかありません。

サイズに制限があります。ニューヨークタイムスのPDFなら十分に範囲内でした。

レイアウトはガタガタになってしまうのと、訳も残念な日本語かもしれません。それでも内容は理解できるかと思います。

英語の勉強ではなく、アメリカさんの動向を見ておくというのは今は重要な気がします。分からなくても見出しだけでなんとなく斜め読みしています。

日付は1日前の新聞になりますけど、時差があるので最新です。一面だけですから、逆に毎日目を通すのも負担にならないのも良いかなと思っています。

スリープ解除(macOS)

macOSでの話。スリープ状態だとCronが実行できません。

そこで決まった時間にスリープを解除する設定を施しました。例えば、朝9時にダウンロードするようにした場合、その1分前にスリープを解除するスケジュールを毎日で設定して回避できます。

MTWRFSUが月曜〜日曜を表していて毎日です。

pmset -g sched
sudo pmset repeat wake MTWRFSU 8:59:00

Repeating power events:
  wake at 8:59AM every day

shスクリプトの最後にopenコマンドを付け足せば、定時にダウンロードしたニューヨークタイムスのPDFが表示されます。

open $(date -v '-1d' '+%F').pdf

exit

余談

そういえば、POPEって言葉は、昔観た映画「ダ・ヴィンチ・コード」で、“教皇の葬った騎士がロンドンに眠る"の暗号を解くシーンで印象的だったのを思い出します。

英語の台詞は忘れたけど、"〜 a Pope"とあり、a Popeは、ローマ教皇・法王ではなくて、暗号だから人名のアレグザンダー・ポープ(A.POPE)だ、というシーンです。

最初意味が分からなくて、考えすぎだろって思った。

画像にした日の一面にあったフランシス教皇は、親日派もあって本物感があったな。遺言も見事だった。日本にはプラスだったのにな。惜しい人を亡くしました。

最後に世界中の新聞一面だけを公開しているサイトもありました。

ここなら全部見られますね。ここから取得したいけど、URLは決まっていないんだよねー。

Vercel Security Checkpoint