| 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; |