MIGITOのコードメモ

浮かんだいろんなことをメモしたり、考えたことを綴ったり

[PHP]アメブロのRSSをつかって、記事内の画像を自動で収集するプログラムを作る ロジック編

今、あるプログラムを作成中。

PHPで作成中なんですが、アメブロRSSを指定するだけでRSSから最新記事を取得して、記事から画像のURLを取得して保存するっていうプログラムを作ってる

 

いまは、ダウンロードして保存まで完了

さらに、重複防止のシステムも作った。データベースは使わずに テキストファイルに配列を保存する形で。データベース代わりに使って行ってい。

 

 

とりあえず作るにあたって考えたロジックを紹介

 

記事のURLを取得する処理

取得済みのURLリストを読込 これを【A】とする

RSSのリストから、記事リストを取得し これを【B】とする

【A】と【B】を比較して、重複を取り除く それを【C】とする

【C】が空ならば処理を終了し exitする

【A】と【C】を結合して 【A】とする

【A】を配列のままテキストにシリアライズして保存する

 

 

画像のURLを取得する処理

保存済みの画像URLリストを読み込む これを【D】とする

【C】のリストを使ってHTMLにアクセスして画像のタグを抽出して画像のURLを取得しリストにする これを 【E】とする

【E】からアイコン等の不要な画像URLを取り除いたリストにする これを【F】とする

【D】と【F】を比較して重複を取り除く それを【G】とする

【G】がからなら、処理を終了する exitする

【D】と【G】を結合して【D】とする

【D】を配列のままテキストにしてシリアライズして保存する

 

 

 

画像のダウンロードの処理

ダウンロード先のディレクトリのファイルの一覧を取得するして それをキーに入れて配列を作る これを 【H】とする

【G】の画像のURLからファイル名取得しキーにファイル名、値にURLとした配列にする これを【I】とする

【I】と【H】のキーを比較して重複を取り除く それを【J】とする

【J】を元にfoeachを回して、ファイル名にキー、開くファイルにURLをして画像をダウンロードする

完了。

 

 

こんな感じです。

まだまだ、途中で、小さい画像を排除するシステムの導入もしたいし

画像を解析して、重複画像を取り除く機能も追加したい。

他には、縦長の画像、横長の画像でフォルダを振り分け。

 

 

今のところ、Windowsのローカルで作っているので

CRONが無いので、代わりに タスクスケジューラを使って1日一回実行するようにしている

 

 

 

PHPの本とか読まずに、ネットにある情報とPHPの時点みたいなサイトを使って調べて作れた。

まだまだしょぼいものだけど、作れたことにかなり自信がついてきた!

 

作った自作システムはこれで3目、今回が最も複雑

次はもっと複雑なのプロジェクトを作りたいなっと。