PythonでVK APIを操作するためのVkライブラリ

画像

こんにちは、Habr! この記事は、PythonのVK APIの基礎を理解したい人を対象としています。このテーマに関する記事はありません(Habréに関する記事は1つありますが、一部のメソッドが機能しないため、完全に関連性はなくなりました)。ユーザーの質問だけを見つけることができましたが、ガイドなどは見つかりませんでした。



PythonでVK APIを操作するための2つの一般的なライブラリ: vkvk_apiがあります。 私はどちらのライブラリのほうが良いか判断しませんが、1つ言います。vkのドキュメントは英語では少なすぎます(したがって、実際に入力することで理解しました)。 私にとって、言語のドキュメントは主なものではありませんが、一部のユーザーにとっては、選択する際に大きな役割を果たします。



既に理解したように、この記事ではvkライブラリの操作について説明します。



このライブラリは、次の標準コマンドでインストールされます。



pip install vk
      
      





モジュールをインストールしたら、ソーシャルネットワークサイトにアプリケーションを作成する必要があります。 ほとんどのユーザーはこれを行うことができると思うので、このステップの情報はスキップします。 誰かが方法を知らないなら、グーグル、恥ずかしがらないでください。



アプリケーションの登録後、必要なのはそのIDだけです。



承認から始めましょう。 原則として、個人データを入力せずに一部の情報を取得できますが、これはもちろん良いことです:



 import vk session = vk.Session() vk_api = vk.API(session) vk_api.users.get(user_id=1)
      
      





したがって、user_id = 1のユーザーの姓、名、およびIDを取得します。ユーザーに関する詳細情報を取得する必要がある場合、メソッド呼び出しで追加フィールドを指定する必要があります。



 vk_api.users.get(user_id=1, fields='online, last_seen')
      
      





つまり この場合、ID = 1のユーザーの名前と姓に関する情報だけでなく、ユーザーが現在サイトにいるかどうか(フィールド= 'オンライン')、最後の訪問の時刻、およびデバイスのタイプ(フィールド= ' last_seen ')。



許可のないアクションでは、VK APIを最大限に使用する機能が提供されないため、個人データの入力による許可を検討します。 ログインとパスワードの入力、トークンの入力の2つの方法があります。 トークンを使用してログインするには、最初の例、つまり次の行をわずかに補足する必要があります。



 session = vk.Session(access_token='tocken')
      
      





その後、すべてが変更されることなく、以前と同じままになります。



次の認証方法は、ユーザー名とパスワードを入力することです。 この場合も、すべてが非常にシンプルで明確です。



 session = vk.AuthSession('id_app', 'login', 'pass') vk_api = vk.API(session)
      
      





ご覧のとおり、複雑なものはなく、すべてが非常にシンプルで明確なので、追加のコメントも必要ありません。



この承認では、ユーザー名、パスワード、アプリケーションIDだけでなく、アクセスするものを指定する必要があります。



たとえば、現在ユーザーのウォールにアクセスできないため、ウォールにレコードを追加しようとするとエラーが発生します。



 vk_api.wall.post(message="hello") <b>: vk.exceptions.VkAPIError: 15.</b>
      
      





このコードが正しく機能するためには、認証中に名前スコープで追加の引数を指定し、アクセスするメソッドをコンマでリストする必要があります。



 session = vk.AuthSession('id_app', 'login', 'pass', scope='wall, messages') vk_api = vk.API(session) vk_api.wall.post(message="hello")
      
      





この例では、壁と投稿へのアクセスをリクエストしています。 プログラムの実行は正常に終了し、壁に「hello」というテキストのエントリが表示されます。 アクセスできるメソッドの名前は、このドキュメントページに記載れています



以上です。 メソッドは、1つのパターンに従って呼び出されます。



 vk_api..(=) : vk_api.messages.send(users_id=0, messages='hello')
      
      





したがって、id = 0の(つまり自分自身に)ユーザーにhelloメッセージを送信します。 メソッドを呼び出すときに渡す必要のあるパラメーターの名前は、ドキュメントのメソッド自体の説明に記載されています。



ライブラリのより視覚的な作業のために、ユーザーがいつVKにログインし、いつログアウトするかを監視する小さなプログラムを実装しました(彼は信じがたいですが、誰にとっても興味深いかもしれません)。 プログラムコードはGitHubの下にあります



vkライブラリを使用したサンプルプログラム
 import datetime from time import sleep import vk def get_status(current_status, vk_api, id): profiles = vk_api.users.get(user_id=id, fields='online, last_seen') if (not current_status) and (profiles[0]['online']): #    ,    now = datetime.datetime.now() print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') print('   : ', now.strftime("%d-%m-%Y %H:%M")) return True if (current_status) and (not profiles[0]['online']): #   ,   ,     print('  : ', datetime.datetime.fromtimestamp(profiles[0]['last_seen']['time']).strftime('%d-%m-%Y %H:%M')) print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') return False return current_status if __name__ == '__main__': id = input("ID : ") session = vk.Session() vk_api = vk.API(session) current_status = False while(True): current_status = get_status(current_status, vk_api, id) sleep(60)
      
      







この記事は、VKライブラリを使用してPythonでVK APIを操作する基本を理解することのみを目的としています。



すべての人に良い!



All Articles