Skip to content

Instantly share code, notes, and snippets.

@perewall
Last active August 23, 2016 13:08
Show Gist options
  • Save perewall/1a0629440f145677992788a451239352 to your computer and use it in GitHub Desktop.
Save perewall/1a0629440f145677992788a451239352 to your computer and use it in GitHub Desktop.
HeadHunter resume auto-updater
#!/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;
@perewall
Copy link
Author

perewall commented Aug 22, 2016

Накатал на Perl первую версию скрипта, который обновляет все резюме в профиле на HH, у которых не установлен параметр «Не видно никому»

Скрипту обязательно надо задать переменную $token, см. ссылку в скрипте.
Если с последнего обновления резюме прошло меньше 4 часов, то скрипт просто вернет время с последнего обновления.
Предполагается запуск скрипта по крону.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment