都市ごとにInstagramユーザーを取得する

みなさんこんにちは。 InstaRocketプロジェクトを開発しています。InstaRocketプロジェクトは、Instagramでのアカウントの操作(マスフォロー、マスラッシング、コメント、登録解除)を自動化するのに役立ちます。



プロジェクトの作成を開始し、設定でサービスを非常にシンプルにしたかったのです。 彼らはInstagramのアカウントを追加し、どの都市で行動するかを示しました=すべてです)アカウントの単純な追加に問題はありませんでしたが、都市の追加はまったく別の話です。ここで説明します。

画像





私たちが知っているように、Instagramは都市でユーザーを検索する機能を提供していません。 これは、モバイルアプリケーションにもサイトにも、Instagram APIにもありません。



そして、次のことをしなければなりません。 InstaRocketが好む国と都市をユーザーが選択できるようにするには、投稿にコメントしてください。



画像



画像



そして、Instagramは私たちに何を与えてくれます。 場所で検索します。 都市ではなく、場所(ユーザーが作成したラベル)のみです。 Instagram APIの場所



計画を実行するには、次のものが必要です。

1.都市を選択してください

2.中心座標を調べる

3.その極座標(次元)を調べる

4.座標でhttps://api.instagram.com/v1/locations/searchを呼び出します

5.場所を確認して、すべてのユーザーを収集します



ポイント1.すべての国と都市のリストを取得するために、Open VK APIを使用しました。



ポイント2. Gooogle APIを使用して、都市の座標を取得しました。 嬉しいことに、Googleは都市の中心座標だけでなく、極端な座標(長方形)も提供しました。 Instagram APIは500メートルの範囲のデータのみを提供するため、これは都市の各セクションをスキャンするために必要です。 それ以外の場合は、自分で都市の極座標を計算する必要があります(地理の知識から緯度1分が1.851 km、経度1分が1.092 kmのデータを使用します)。 次に、都市の中心座標と半径をキロメートル単位で知るだけで済みます。 しかし、私たちにとっては、それはGoogleによってカウントされ、先に進みます。



画像



maps.googleapis.com/maps/api/geocode/json?address=Kyiv&key= {token}をリクエストして取得します



{ "results" : [ { "address_components" : [ { "long_name" : "Kiev", "short_name" : "Kiev", "types" : [ "locality", "political" ] }, { "long_name" : "Kyiv City", "short_name" : "Kyiv City", "types" : [ "administrative_area_level_2", "political" ] }, { "long_name" : "Ukraine", "short_name" : "UA", "types" : [ "country", "political" ] } ], "formatted_address" : "Kiev, Ukraine", "geometry" : { "bounds" : { "northeast" : { "lat" : 50.590798, "lng" : 30.825941 }, "southwest" : { "lat" : 50.213273, "lng" : 30.2394401 } }, "location" : { "lat" : 50.4501, "lng" : 30.5234 }, "location_type" : "APPROXIMATE", "viewport" : { "northeast" : { "lat" : 50.590798, "lng" : 30.825941 }, "southwest" : { "lat" : 50.213273, "lng" : 30.2394401 } } }, "place_id" : "ChIJBUVa4U7P1EAR_kYBF9IxSXY", "types" : [ "locality", "political" ] } ], "status" : "OK" }
      
      





場所の中心座標と境界の境界(北東、南西)を取得しました。



ここでこのデータを使用して、Instagram APIを介してリクエストを作成します。ここでは、受信した座標を1分のステップ(緯度、経度)で置き換えます。 つまり、instagram自体は長さ500メートル、最大750の場所を提供するため、座標を南西から北東に向かって検索します。



画像



このapiメソッドを呼び出すには、pubic_content権限を持つトークンが必要です。 Instagramでクライアントを作成して確認すると、取得できます。 私はこれをしなかったし、他の方法で行った。 アプリケーションを作成しました





設定に注意してください。 フィールドを同じにします。



画像



トークンを取得するには、 InstagramToken Webサイトを使用しました。



画像

そして、トークンが受信されます。 Googleと受信したトークンから取得したデータを使用してInstagram API呼び出しを行います。



  "location" : { "lat" : 50.4501, "lng" : 30.5234 }
      
      





api.instagram.com/v1/locations/search?lat=50.4501&lng=30.5234&access_token=ACCESS-TOKEN



取得するもの:



 { "data": [ { "id": "1306173892829806", "name": "", "latitude": 50.45, "longitude": 30.5233 }, { "id": "256713358069834", "name": "і", "latitude": 50.45, "longitude": 30.5233 }, { "id": "212898659", "name": "Kyiv, Ukraine", "latitude": 50.45, "longitude": 30.5233 }, { "id": "314058888", "name": "Majdan Nesaleschnosti -  і", "latitude": 50.450867715234, "longitude": 30.522571971669 }, { "id": "213130700", "name": "Maidan Nezalezhnosti", "latitude": 50.45025, "longitude": 30.523888888889 }, { "id": "1024728484", "name": " 1", "latitude": 50.45, "longitude": 30.5233 }, { "id": "1743159665991390", "name": " ", "latitude": 50.45, "longitude": 30.5233 }, { "id": "1016048608", "name": "Segway-Ukraine.com.ua", "latitude": 50.45, "longitude": 30.5233 }, { "id": "314940785", "name": " ", "latitude": 50.45, "longitude": 30.523333 }, { "id": "287123992", "name": " ", "latitude": 50.4219988675, "longitude": 30.65024651 }, { "id": "174800369700733", "name": "І і  І. ", "latitude": 50.45, "longitude": 30.5233 }, { "id": "558008714386619", "name": "ї, ", "latitude": 50.448204040527, "longitude": 30.522249221802 }, { "id": "204034720096508", "name": "-  ", "latitude": 50.45, "longitude": 30.5233 }, { "id": "739258147", "name": "", "latitude": 50.45, "longitude": 30.5233 }, { "id": "969326616532082", "name": "Queen Fitness Club", "latitude": 50.45, "longitude": 30.5233 }, { "id": "1205613646216647", "name": "  ", "latitude": 50.507633647411, "longitude": 30.512814705418 }, { "id": "1929322543966368", "name": "ї і ", "latitude": 50.45, "longitude": 30.5233 }, { "id": "235432733514719", "name": " ", "latitude": 50.4488, "longitude": 30.52267 }, { "id": "1552263428413882", "name": "ї ,  і", "latitude": 50.45, "longitude": 30.5233 }, { "id": "1537041273239858", "name": "TYME", "latitude": 50.45, "longitude": 30.5233 } ], "meta": { "code": 200 } }
      
      





そのため、都市の場所とそのIDがあります。



 { "id": "558008714386619", "name": "ї, ", "latitude": 50.448204040527, "longitude": 30.522249221802 }
      
      





ここで、任意のID(558008714386619など)をバーミングし、サイトメソッド(APIではない)を呼び出します



https://www.instagram.com/explore/locations/558008714386619



ここにこの場所の投稿があります



画像



json形式で同じ投稿を取得するため。 クエリ行に追加する必要がありますか?__ a = 1およびhttps://www.instagram.com/explore/locations/558008714386619/?__a=1を取得します



画像



はい、そうです! 欲しいものが手に入りました! そして、すべての座標、場所を調べ、投稿とその作成者を引き出します。



PS:Instagram APIコールは1時間あたり30リクエストに制限されています(サンドボックス)。 この禁止を回避するには、多数の顧客を作成し、それぞれ最大10人のテストユーザーを招待します。 したがって、10、20、100個のトークンを取得できます。 したがって、1時間あたり100 * 30 = 3000リクエストです。 3000リクエストは、1時間あたり* 20 = 60 000ロケーションです。



All Articles