line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Weixin::Client; |
2
|
|
|
|
|
|
|
sub _update_friend{ |
3
|
0
|
|
|
0
|
|
|
my $self = shift; |
4
|
0
|
|
|
|
|
|
my $api = "https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact"; |
5
|
0
|
|
|
|
|
|
my @query_string = ( |
6
|
|
|
|
|
|
|
skey => uri_escape($self->skey), |
7
|
|
|
|
|
|
|
pass_ticket => $self->pass_ticket, |
8
|
|
|
|
|
|
|
r => $self->now(), |
9
|
|
|
|
|
|
|
skey => uri_escape($self->skey), |
10
|
|
|
|
|
|
|
pass_ticket => $self->pass_ticket, |
11
|
|
|
|
|
|
|
); |
12
|
0
|
|
|
|
|
|
my $json = $self->http_post(gen_url($api,@query_string),("Content-Type"=>"application/json; charset=UTF-8"),Content=>"{}"); |
13
|
0
|
0
|
|
|
|
|
return unless defined $json; |
14
|
0
|
|
|
|
|
|
my $d = $self->json_decode($json); |
15
|
0
|
0
|
|
|
|
|
return unless defined $d; |
16
|
0
|
0
|
|
|
|
|
return if $d->{BaseResponse}{Ret}!=0; |
17
|
0
|
0
|
|
|
|
|
return if $d->{MemberCount} == 0; |
18
|
0
|
|
|
|
|
|
my @friend_key = qw(HeadImgUrl NickName PYInitial PYQuanPin Alias Province City Sex Id Uin Signature DisplayName RemarkName RemarkPYInitial RemarkPYQuanPin); |
19
|
0
|
|
|
|
|
|
for my $m (@{$d->{MemberList}}){ |
|
0
|
|
|
|
|
|
|
20
|
0
|
0
|
|
|
|
|
next if $m->{MemberCount}!=0; |
21
|
0
|
|
|
|
|
|
$m->{Id} = $m->{UserName};delete $m->{UserName}; |
|
0
|
|
|
|
|
|
|
22
|
0
|
|
|
|
|
|
$m->{Sex} = code2sex($m->{Sex}); |
23
|
0
|
|
|
|
|
|
my $friend = {}; |
24
|
0
|
|
|
|
|
|
@{$friend}{@friend_key} = map {$_=encode_utf8($_);$_} @{$m}{@friend_key}; |
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
25
|
0
|
|
|
|
|
|
$self->add_friend($friend); |
26
|
|
|
|
|
|
|
} |
27
|
|
|
|
|
|
|
} |
28
|
|
|
|
|
|
|
1; |