メインコンテンツへスキップ
  1. 投稿/

APIキー不要のInstagramハッシュタグフォトスライドショーの作成

· loading · loading ·
ジャレッド リンスキー
著者
ジャレッド リンスキー
韓国に住むキウイ

まえがき
#

皆さんが素晴らしい旧正月休暇を過ごされたことを心から願っています。私は龍仁市の韓国民俗村を訪れて確かに楽しみました。この時期は韓国にとって特別な時期であるだけでなく、キウイがワイタンギデーを祝う時期でもあります!

韓国民俗村

はじめに
#

韓国のキウイ商工会議所は、ニュージーランドの祝日にさまざまなイベントを開催しています。次の祝日はワイタンギデーです。すべての組織と同様に、マーケティングとオーガニックな露出を得ることは、人々が戻ってくる評判の良いイメージを維持するために重要です。問題は、多くの組織やグループがゲストの保持に欠け、しばしば高い離職率を抱えていることです。

イベントの成功を測定する
#

イベントは本質的に社交的です。実生活でもオンラインでも。マーケティングはイベントの全体的な成功において主要な役割を果たします。イベントに関するマーケティングは、イベント前の広告や計画だけに焦点を当てるべきではなく、イベント中およびイベント後のマーケティングも考慮すべきです。たとえば、エンゲージメントと満足度が重要業績評価指標(KPI)になる可能性があります。

重要なKPIは:
#

  • 参加者のイベントエンゲージメント
  • ソーシャルメディアエンゲージメント - イベントハッシュタグを使用すると、参加者がイベントについて何を言っているかについてソーシャルメディア上で豊富なデータを収集できます。ハッシュタグ以外にも、ソーシャルメディアはスポンサーとの参加者エンゲージメントを測定するために使用でき、特にアクティベーションとして提供した場合に重要です。
  • 顧客獲得単価(CPA)
  • 新規参加者と再訪参加者 - このKPIは、新規参加者と再訪参加者の両方の健全な流れを確保するために重要です。人々は時間とともにイベントへの興味を失う可能性があります。一部の離脱は成功するビジネスの自然な部分です。しかし、参加者のほとんどすべてが新規である場合、問題があることがわかります。

特定された問題
#

私が一緒に働いているグループや自分自身が参加したイベントで特定した問題は、多数の参加者が初めて訪れていることです。そして、エンゲージメントの欠如と不満の後、彼らはさらなるイベントに戻りません。一部の場所は、新しい訪問者の継続的な流入という事実で生き残っています。組織者と参加者の間のエンゲージメントがほとんどまたはまったくなかったことが、人々を不満にさせる原因でしたか?それとも、参加者がイベントが何についてか、またはイベントの目標が何であるかを明確に理解していなかったからでしたか?

したがって、エンゲージメントに何らかの問題があり、イベントの目的の誤解があることは明らかでした。第二に、イベント中の組織の努力をマーケティングする努力がありませんでした。つまり、多くの潜在的なオーガニック露出を逃しています。第三に、イベントの機器の活用不足です。イベントの会場には通常プロジェクターがあり、ゲストスピーカーが話しているときに字幕を表示するために使用されます(한국어と英語)。その後、イベントの残りの期間、プロジェクターは使用されなくなります。スマートツールを通じて群衆とのより多くのエンゲージメントを使用して、エンゲージメントを高めることができます。

解決策
#

したがって、組織者と参加者の間のエンゲージメントを促進するための解決策は、プロジェクターに参加者の画像を収集して表示し、他の参加者やInstagramの友人に彼らがイベントで何をしているかを示すディスプレイを作成することでした!

Instagramを使用することで、日常生活を積極的に共有しているユーザーは、組織者と関わり、フィードバックを提供し、さらにキウイ商工会議所イベントの目標が何であるかを拡張された友人に示すためのツールをすでに電話に持っています。

したがって、#waitangikoreaからInstagramの画像を取得するように設計された小さなWebアプリを作成することが私の目標になりました。

ハッシュタグのディスプレイ

技術的な詳細
#

フロントエンド
#

使用したツール:
#

これは単一ページのみであるため、ページ上のDOMのコンテンツを制御するバックエンドとしてJQueryを選択しました。

JQueryで画面上の画像の状態を維持するために、写真スペースの数と同じサイズの配列を使用しました。画像が画面に表示されるたびに、画像のURLが配列のインデックスに追加されます。別の写真を追加する場合は、画像が配列に存在しないことを確認する必要があります。以下は私のコードの例です。

var img_on_screen = new Array(number_of_photo_squares);
var post_index = 0;

javascript.js
while (img_on_screen.includes(post_data['img'])) {
        if( post_index > post_count - 1 ) {
            post_index = 0;
        }
        post_data = posts[post_index];
        post_index = post_index + 1;
      }
    img_on_screen[curr_index-1] = post_data['img'];
    update_img(curr_index, post_data);
    }

バックエンド
#

使用したツール:
#

InstaLooter
#

InstaLooterは、ユーザー名やパスワードなしでInstagramから画像をスクレイピングできるアプリケーションです。これは、自分の個人情報がインターネットに漏洩するリスクなしにInstagramから画像を必要とする場合に最適です。

このアプリケーションを使用する主な理由は、インターネット上で利用可能な他のスクレイパーとは異なり、ユーザー名やパスワードを入力する必要がないためです。

scraper.py

print(insta_api)
if insta_api == 1:
    subprocess.call("python -m instalooter hashtag " + hashtag +" "+ path_to_json +" -d",shell=True)

Flask
#

Flaskを使用した最初の理由は、そのシンプルなセットアップでした。Flaskは静的ファイルを提供するためにのみ使用しましたが、キャッシュの問題がありました。これは、クライアントが更新されたJSONファイルをリクエストするたびに、返されたファイルが以前に提供されたファイルとまったく同じであることを意味しました。ユーザー側で写真が同期していない原因となります。これを克服するために、クライアントから直接静的ファイルをリクエストすることから、ハッシュタグと画像ファイル名を取得するFlask上のルートを作成することに変更しました。これにより、cache_timeout=-1を設定してファイルのキャッシュを防ぐことができました。

ファイル構造
#

@app.route('/update', methods= ['GET'])
def get_file():
    # cache_timeoutはsend_fileオプションから秒単位です
    return send_from_directory("data/img", "data.json", cache_timeout=-1)
Glob
#

Globは、ルールに一致するファイルを選択するための優れたツールです。たとえば、複数のJSONファイルを結合する必要がある場合。コンテンツをマージする前に、すべてのJSONファイルをロードする必要があります。

scraper.py

for f in glob.glob(path_to_json+"*.json"):
    with open(f, "rb") as infile:
        result.append(json.load(infile))

イベントで!

ここまで読んでいただきありがとうございます!
#

さらに質問がある場合は、お気軽にメールしてください!