プロジェクトの作成を開始し、設定でサービスを非常にシンプルにしたかったのです。 彼らは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ロケーションです。