VKontakteグループ(Perl)に写真付きのニュースを投稿します

情報リソースを作成するとき、日常業務の自動化について考える必要があります。 この記事では、ソーシャルネットワーク(Vkontakte)のページまたはグループに置くために、ニュース、特別オファー、またはその他の有用な情報などの数行のPerlを使用する簡単な方法を検討します。 画像、テキスト、リンクと同時に。









ショートプラン:

1. VKontakteアプリケーションを作成します。

2.アプリケーションへのトークンを生成します

3.写真をアップロードするためのサーバーURLを取得します。

4.前に受信したサーバーに写真をアップロードします。

5.サーバーに画像を保存します。

6.ページに写真を載せてニュースを投稿します。



1. VKontakte Webサイトでアプリケーションを作成します。

サイトの下部には、開発者へのリンクと[アプリケーションの作成]ボタンがあります。

名前とスタンドアロンアプリケーションを選択します。

作成後、[アプリケーションの編集設定]タブに、アプリケーションのIDが表示されます(覚えておいてください)。



2.トークン(作成されたスクリプトがサイトで許可されるキー)を受け取ります。 これを行うには、ブラウザーでページを開きます。

https://oauth.vk.com/authorize?client_id={ID}&scope=wall,photos,audio,video,docs,notes,groups,messages,notifications,stats,ads,notify,friends,offline&redirect_uri=http://oauth.vk.com/blank.html&display=page&response_type=token
      
      





どこで

{ID}-作成されたアプリケーションのID。たとえば、1234563、

スコープは、許可されるアプリケーションの権利です。

(壁-壁への投稿、写真-写真のアップロード、グループ-グループへのアクセス、メッセージ-メッセージ、友人の送信-友人およびオフラインへのアクセス-トークンが終了せず、スクリプトが常にサイトにアクセスできるようにします)。

response_type = token-トークンを取得します。



次に、スクリプトに移動します。

入力パラメーター:



 #!/usr/bin/env perl use strict; use LWP; use HTTP::Request::Common; my $token = '55e43443343435355a3e70e805722345552227'; #      my $gid = '65596688'; #  ID      . my $file = '/home/ds/test/2.jpg'; #     my $site_url = 'http://example.com'; #    ,        my $message = '  '; #     .
      
      







3.ここで、写真をアップロードするVKontakteサーバーを取得する必要があります。



 #      getWallUploadServer my $url1 = "https://api.vkontakte.ru/method/photos.getWallUploadServer?gid=$gid&access_token=$token"; my $res_url = &get_data($url1); $res_url =~ s/([\\'])?//g; #   . $res_url = $1 if ($res_url =~ m/.*?upload_url\"\:\"(.*?)\".*?/); #  URL. my ($url , $param) = split(/\?/, $res_url); #  url       my %url_param = map {split("=")} split("&", $param);
      
      







4.指定されたURLに画像をダウンロードします。



  my $ua = LWP::UserAgent->new (agent=>'Mozilla/5.0', requests_redirectable=>0); my $res = $ua->request ( POST "$url", Content_Type => 'multipart/form-data', Content => [ 'act' => $url_param{'act'}, 'mid' => $url_param{'mid'}, 'aid' => $url_param{'aid'}, 'gid' => $url_param{'gid'}, 'hash' => $url_param{'hash'}, 'rhash' => $url_param{'rhash'}, 'swfupload' => $url_param{'swfupload'}, 'api' => $url_param{'api'}, 'wallphoto' => $url_param{'wallphoto'}, 'photo' => [$file], ], ) die("$!"); my $res_upload = $res->as_string(); $res_upload =~ s/([\\'])?//g; #  . #      my $server_upload = $1 if ( $res_upload =~ m/server\"\:(.*?),\".*/); my $photo_upload = $1 if ( $res_upload =~ m/\"photo\"\:\"(.*?)\",\"hash.*/); my $hash_upload = $1 if ( $res_upload =~ m/\"hash\"\:\"(.*?)\"}$/);
      
      







5.その後、ダウンロードした画像をサーバーに記録する必要があります。



  my $url2 = "https://api.vkontakte.ru/method/photos.saveWallPhoto?gid=$gid&access_token=$token&server=$server_upload&photo=$photo_upload&hash=$hash_upload"; my $res_save = get_data($url2); my $ph_id = $1 if ( $res_save =~ m/\"id\"\:\"(.*?)\",\".*/); #     
      
      







6.そして最後の壁への投稿:



  my $url3 = "https://api.vkontakte.ru/method/"."wall.post?owner_id=-$gid&attachments=$ph_id,$site_url&from_group=1&access_token=$token"; #  url  . $url3 .="&message=$message" if ($message); #   ,   . my $res_post = get_data($url3);
      
      





、owner_idには「-」記号(マイナス)が必要です。 これはグループです。

from_group = 1-グループに代わってニュースを投稿します。



結論として、httpデータを送信するためにアクセスされた小さなget_data()プロシージャ。

  my $url = shift; my $ua = LWP::UserAgent->new (agent=>'Mozilla/5.0', requests_redirectable=>0); my $get_url = $ua->request (GET "$url") die("$!"); my $res_url = $get_url->as_string(); return ($res_url);
      
      







自動化のためのいくつかのvkontakteリンク:

メッセージを送信する:


 https://api.vkontakte.ru/method/messages.send?uid={UID}&message={MSG}&title={TITLE}&access_token={TOKEN}
      
      





UIDはメッセージの送信先のユーザーのIDです(これはデジタル値です。友人のURLに文字IDが表示されている場合は、彼のアルバムにアクセスするとURLに数字が表示されます)、{MSG}-メッセージ自体、{TITLE} -メッセージヘッダー、およびトークン。



ステータスを変更します。 ここではidは必要ありません。なぜなら アプリケーションはアカウントに関連付けられています。


 https://api.vkontakte.ru/method/status.set?text={TEXT}&access_token={TOKEN}
      
      







グループへの簡単なウォールポストの投稿。


 https://api.vkontakte.ru/method/wall.post?owner_id=-{GID}&message={MSG}&from_group=1&access_token={TOKEN}
      
      





ここで、{GID}はマイナス記号付きのグループのデジタルID、{MSG}はメッセージ、from_groupは誰からのメッセージ(1-グループ(管理者の場合)から)です。



以上です。 もちろん、エラーチェックや終了コードなどを挿入する必要があります。 しかし、これはあなた次第です。



All Articles