1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

さくらのレンタルサーバ ライトプランでPythonとSQLiteを使ってInstagramの投稿をランダム表示するサイトを作ってみた(その1:仕様)

Last updated at Posted at 2022-10-25

さくらのレンタルサーバがPython3対応に

さくらのレンタルサーバが新サーバになり、移行ツールを使って移行を完了。Python 3.8が使えるようになりました。(Gmailが届かなくなった話はこちらを参照ください)

Pythonでサイト構築

4月から猫を飼い始め、Instagramに写真をアップロードするようになりました@maguandiwa。そうすると、過去の写真が埋もれるなと思い、Instagramのapiを使って、アップした写真をランダムに表示するサイトを作ることにし、勉強も兼ねてPythonでサイト構築しよう!Flaskあたり使えば簡単でしょう!とウキウキしながらキーボードに向かいました。

さくらのレンタルサーバ ライトプランの壁

SSHログインして、とか、勝手に考えていたのですが、ライトプランの壁にいきなりぶつかりました。
https://rs.sakura.ad.jp/lite.html
から、

  • SSH不可
  • MySQL不可(WordPressはMySQL前提なのでこれもできない前提。SQLiteでインストールしている方もいますが、イレギュラーなことは今回行わないことにします)
  • SQLiteはOK
  • SSI、CGIはOK
    手を尽くせばFlaskも動くと思います。しかし、今回はシンプルに、CGIでできる限りのことをする。すなわち、Python3の標準ライブラリでできる範囲のことをすることに決めました。

Instagramからのデータ取得

スクレイピング。。。とかよからぬことを考えましたが、普通にInstagram APIを使います。Instagram APIには

  • Graph API
  • 基本表示API
    の2種類あり、今回はビジネスアカウントおよびMetaによる審査が必要ない基本表示APIを使うことにしました。

要件

  • モバイル、PCともに閲覧可能とする。レスポンシブデザインとすること。
  • ページの更新ごとに写真がランダムで変わること。
  • 1ページのみのサイトとし、24枚の写真を掲載すること(2,3,4の倍数なので、列数が変化してもキリがいい)。
  • タイトルと写真以外は極力掲載しないこと。

技術仕様

  • HTML Living Standard,CSS3を用いる。対応していないブラウザは考慮しない。
  • Instagram 基本表示APIを用いる。
  • トップページはSSIを実行し、CGIを起動するだけのページとし、index.shtmlとする。
  • CGIはPython3.8を用い、https://docs.python.org/ja/3/ に掲載されているライブラリ+sqlite3以外のライブラリは使わない。
  • DBはSQLiteを用いる。

さあ、手を動かそう

とりあえずの仕様が決まったので、まずはInstagramの基本表示APIを使えるようにしましょう。その2:Instagram API に続きます。

目次

その1 仕様
その2 Instagram API
その3 PythonによるCGIの作成
その4 終わりに(全コード)

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?