Last active
August 23, 2016 13:08
-
-
Save perewall/1a0629440f145677992788a451239352 to your computer and use it in GitHub Desktop.
HeadHunter resume auto-updater
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl | |
use LWP::UserAgent; | |
use JSON; | |
use DateTime::Duration; | |
use DateTime::Format::Strptime; | |
my $token = "xNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxNxN"; # Request token in https://dev.hh.ru/admin | |
my $userAgent = "Perl Resume Updater <art@pwmedia.ru>"; | |
updateResume(); | |
sub updateResume { | |
my $req = HTTP::Request->new(GET=>"https://api.hh.ru/resumes/mine"); | |
$req->header('Authorization' => "Bearer $token"); | |
$req->header('User-agent' => $userAgent); | |
$ua = LWP::UserAgent->new; | |
my $res = $ua->request($req); | |
if ($res->is_success) { | |
my $json = JSON->new->utf8->allow_nonref; | |
my $resumes = $json->decode($res->content()); | |
my $array = $resumes->{'items'}; | |
for my $item (@$array) { | |
if ($item->{'access'}->{'type'}->{'id'} ne "no_one") { | |
my $resumeID = $item->{'id'}; | |
my $dtParser = DateTime::Format::Strptime->new(pattern=>'%FT%T%z', on_error=>'croak'); | |
my $dtUpdated = $dtParser->parse_datetime($item->{'updated'}); | |
my $dtNow = DateTime->now(); | |
my $dtDeltaH = $dtUpdated->subtract_datetime($dtNow)->hours; | |
my $dtDeltaM = $dtUpdated->subtract_datetime($dtNow)->minutes; | |
if ($dtDeltaH > 3) { | |
$req = HTTP::Request->new(POST=>"https://api.hh.ru/resumes/".$resumeID."/publish"); | |
$req->header('Authorization' => "Bearer $token"); | |
$req->header('User-agent' => $userAgent); | |
$res = $ua->request($req); | |
if ($res->is_success) { | |
print "Update resume ".$resumeID." success\n"; | |
} else { | |
print "Update resume ".$resumeID." failed with ".$res->content()."\n"; | |
} | |
} else { | |
print "Time elapsed: ".$dtDeltaH." hours ".$dtDeltaM." minutes\n"; | |
} | |
} | |
} | |
return 0; | |
} else { | |
print 'GET resumes failed with "'.$res->content().'"'."\n"; | |
return 1; | |
} | |
} | |
exit 0; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Накатал на Perl первую версию скрипта, который обновляет все резюме в профиле на HH, у которых не установлен параметр «Не видно никому»
Скрипту обязательно надо задать переменную $token, см. ссылку в скрипте.
Если с последнего обновления резюме прошло меньше 4 часов, то скрипт просто вернет время с последнего обновления.
Предполагается запуск скрипта по крону.