0
0

More than 3 years have passed since last update.

iTunesストアのトップソングのRSSを自動で取得してみた

Last updated at Posted at 2020-04-27

はじめに

この記事はなんとなくJSとかをやっている学生がメモ変わりに使っているものです。内容は期待しないでください。

1.取得したデータをファイルに保存するプログラム

#!/bin/bash
dname="/home/vagrant/workspace/itunes-rank-rss"
mkdir -p $dname
filename="${dname}/hourly-topsong-`date +'%Y%m%d%H%M'`.xml"
curl -s -H "User-Agent: CrawlBot;" -o $filename https://itunes.apple.com/jp/rss/topsongs/limit=10/xml

{#!/bin/bash}はシェルスクリプトを/bin/bashにあるbashシェルで実行するための記述。
二行目はdnameという変数が保存するディレクトリを示しています。
三行目は-pオプションを使ってディレクトリがなければ新しく作り,ある場合も動作するようになる。
四行目はfilenameという変数に指定した名前のXMLファイルを代入しています。${dname}はdnameを文字列ではなく変数として扱うためのものです。
date +'%Y%m%d%H%M'
これは日付と文字列を出力するコマンドでファイル名を作っています。
五行目はcurlコマンドを使用しています。

2.curlコマンドとは

サーバもしくはクライアント側からデータ転送するコマンド。基本は以下のような形です。
cual オプション URL
curlには様々なオプションがあります。今回は-s,-o,-Hの3つのコマンドを使用しています。

オプション 意味 使い方
-o 実行結果をファイルへ出力 curl -o 出力先PATH URL
-s ファイル出力時の進捗状況を非表示 curl -s -o 出力先PATH URL
-H ファイルヘッダーに追加 curl -H 文字列

3.仮想環境で実行する

今回はUbuntuで行うのでiTerm2で仮想環境を起動する。

起動したところで
1.Virtual Box(バーチャルボックス)
2.Vagrant(ベイグラント)
という2つのソフトウェアを使った仮想環境でUbuntuを使用します。
cd ~/vagrant/ubuntu
vagrant up
vagrant ssh

Ubuntuがインストールされたディレクトリに移動。vagrant upは仮想的なPCにインストールされたUbuntuを起動するコマンドで,vagrant sshはVagrantの仮想マシンがセットされている状態でSSHに接続します。
シェルスクリプトのプログラムを動かすためには、その実行を許可するような権限がファイルに付与されている必要があり,今回は全てのユーザが実行可能なようにコンソールに記述しました。
chmod a+x niconico-ranking.sh

4.ファイルの保存を自動化する

今回記述したプログラムを自動的に行うため,cronを使って実行します。
crontab -e

以上の内容でcronを設定します。
cron最後尾に以下を記述し,毎時40分おきに指定してプログラムを実行します。
40 * * * * /home/vagrant/workspace/itunes-rank.sh

lsコマンドでディレクトリの内容を確認してファイルがあれば成功です。お疲れ様でした!!

XMLとは

XMLは日本語では「拡張可能なマークアップ言語」と訳されます。XMLでは、囲んだ文字列をデータとしてわかりやすく管理する目的でタグを使います。
XMLは、データ記述用の言語です。文書中のデータをわかりやすくしたり、データを交換したりできます。マシンに情報をわかりやすく、効率よく伝えるための言語です。

cronとは

多くのUNIX系OSで標準的に利用される常駐プログラム(デーモン)ので、利用者の設定したスケジュールに従って指定されたプログラムを定期的に起動してくれる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0