рдордИ рдХреА рдЫреБрдЯреНрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд╡рд╛рд╕ред 6 рд╣рдлреНрддреЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЖрдпрд░рд▓реИрдВрдб рдХреЗ рд▓рд┐рдП рд╡реАрдЬрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд┐рдпрд╛ рдерд╛ред 30 рдЕрдкреНрд░реИрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрдерд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред рдПрдХ рджреВрддрд╛рд╡рд╛рд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╡реАрдЬрд╛ рдирд┐рд░реНрдгрдпреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ ред рд╡реЗ рд╕реЛрдорд╡рд╛рд░ рдФрд░ рдЧреБрд░реБрд╡рд╛рд░ рдХреЛ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣рд╛рдВ рдореИрдВ рд░рд╡рд┐рд╡рд╛рд░, 28 рдЕрдкреНрд░реИрд▓ рдХреЛ рдмреИрдард╛ рд╣реВрдВ, рдЕрднреА рднреА рдореЗрд░реЗ рд╡реАрдЬрд╛ рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдФрд░ рд╕реЛрдорд╡рд╛рд░ рдХреЛ рдореЗрд░реА рдЖрдЧреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдмрдпрд╛рди рдирдИ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рд╣реЛрдЧрд╛ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдкрдХреЛ рджреВрддрд╛рд╡рд╛рд╕ рдореЗрдВ рдЬрд╛рдиреЗ рдФрд░ рдЙрд╕реЗ рдЫрд╛рдВрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрджрд┐ рд╣реИ, рддреЛ рд╡реАрдЬрд╝рд╛ рдХреЗрдВрджреНрд░ рдХреЛ рдЦреАрдВрдЪреЗрдВред рд╕реЛрдорд╡рд╛рд░ рдХреЛ рдкреВрд░реЗ рджрд┐рди рдкреГрд╖реНрда рдХреЛ рдмреИрдардирд╛ рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдПрдХ рд╕реБрд╕реНрдд рд╢рдЧрд▓ рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреАред

рдЕрд╕реНрд╡реАрдХрд░рдгред рдореИрдВ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдФрд░ рдХреБрд╢рд▓ рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдмреИрд░рд▓ рдЕрдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
1. рдирдИ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
рддреЛ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдЖрдкрдХреЛ рдЗрд╕ рдкреГрд╖реНрда рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
- рдПрдХ рдирдИ рддрд╛рд░реАрдЦ рд╕реЗ рдПрдХ рдирдИ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдмреАрдЪ рдЦреЛрдЬреЗрдВ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк
24 April
рд╢рдмреНрдж рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВ)ред - рдЗрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
def check_report(url, div_class, date): embassy_page = requests.get(url) page_text = BeautifulSoup(embassy.text, 'lxml') tags = page_text.findAll('div', {"class": div_class}) text = '' report_url = '' for tag in tags: tag_soup = BeautifulSoup(tag.text, 'lxml') report = s(text=re.compile(date)) if len(report) > 0: text = 'New report published' report_url = 'https://www.dfa.ie' + tag.find('a').attrs['href'] return text, report_url
рдЕрдм рдЗрд╕ рдХреЛрдб рдореЗрдВ рдФрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо requests
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ requests
, рдЬреЛ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреГрд╖реНрда рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░, рд╣рдо рдПрдХ рдФрд░ BeautifulSoup
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рд╡рд╛рдЗрд▓реНрдб рдкреЗрдЬ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓реБрдХ рдореЗрдВ рдмрджрд▓рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
BeautifulSoup
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ:
'<!DOCTYPE html>\r\n\r\n<html lang="en">\r\n <head>\r\n <META http-equiv="X-UA-Compatible" content="IE=edge">\r\n <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\t\r\n\t<meta name="viewport" content="initial-scale=1">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\t\r\n\r\n\r\n<meta name="author" content="Department of Foreign Affairs">\r\n<meta name="google-site-verification" content="HHtulupgM8GXpd9YYDjoXUb6MiU7_mGTkHixUrVPFYQ" />\r\n \r\n\t<title>Weekly Decision Report - Department of Foreign Affairs and Trade</title>\r\n <link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" /> \r\n <link rel="stylesheet" type="text/css" media="screen" href="/media/dfa-2017/style-assets/css/font-defs.css" />\t \r\n\t<link rel="stylesheet" type="text/css" media="screen" href="/media/dfa-2017/style-assets/css/style.css" />\t\r\n <link rel="stylesheet" type="text/css" media="print" href="/media/dfa-2017/style-assets/css/print.css" />\t\r\n
рдХреЗ рдмрд╛рдж:
<!DOCTYPE html> <html lang="en"> <head> <meta content="IE=edge" http-equiv="X-UA-Compatible"/> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> <meta content="initial-scale=1" name="viewport"/> <meta content="Department of Foreign Affairs" name="author"/> <meta content="HHtulupgM8GXpd9YYDjoXUb6MiU7_mGTkHixUrVPFYQ" name="google-site-verification"/> <title>Weekly Decision Report - Department of Foreign Affairs and Trade</title> <link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/> <link href="/media/dfa-2017/style-assets/css/font-defs.css" media="screen" rel="stylesheet" type="text/css"/> <link href="/media/dfa-2017/style-assets/css/style.css" media="screen" rel="stylesheet" type="text/css"/>
рдЕрдм рдЖрдк рдХрд┐рд╕реА рддрд░рд╣ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдПрдХ рд╡рд┐рд╢реЗрд╖ div class
рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдкреГрд╖реНрда рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ: <div class="gen-content-landing__block">
ред рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рд╣рдо рдРрд╕реЗ рд╕рднреА рдЯреИрдЧ рдвреВрдВрдврддреЗ рд╣реИрдВред
рдЕрдЧрд▓рд╛, рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдЯреИрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдВ рдФрд░ рдЙрд╕ рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ рдЬрд┐рд╕рдореЗрдВ рдирдИ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рддрд╛рд░реАрдЦ рд╢рд╛рдорд┐рд▓ рд╣реИ: 24 April
ред рдпрджрд┐ рдРрд╕рд╛ рдкрд░рд┐рдгрд╛рдо рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрд╕рд╕реЗ рд▓рд┐рдВрдХ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдкрд╛рда рдХреЛ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдирдИ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдИ рд╣реИред
2. рдПрдХ рдирдИ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рд╡реАрдЬрд╛ рдЖрдИрдбреА рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВ
рддреЛ рдЕрдм рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдЗрд╕ рдирдИ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
- рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВред
- рдЗрд╕рдореЗрдВ рдореЗрд░реА рдЖрдИрдбреА рд▓рдЧрд╛рдПрдВред
- рдЗрд╕рдХреЗ рдЕрдиреБрд░реВрдк рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред
рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
def check_visa(report_url, filename, visa_id, text): pdf = requests.get(report_url) file_path = Path(filename) file_path.write_bytes(pdf.content) pdfFileObj = open(filename, 'rb') pdfReader = PyPDF2.PdfFileReader(pdfFileObj, strict=False) for pageNum in range(0, pdfReader.numPages): page = str(pdfReader.getPage(pageNum).extractText().encode('utf-8')).split('\\n') if visa_id in page: visa_index = page.index(visa_id) status = page[visa_index + 1] text = text + '\t' + visa_id + '\t' + status return text
рдкреБрди: requests
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЗрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рд╣реЗрдЬреЗрдВред PyPDF2
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, PyPDF2
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЯреЛрдХрди рд╕рд░рдгреА рдореЗрдВ visa_id
рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ pdf рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдорд╛рд░реНрдХрдЕрдк рдРрд╕рд╛ рд╣реИ рдЬреЛ visa_id
рдмрд╛рдж рдЕрдЧрд▓рд╛ рдЯреЛрдХрди рд╕реАрдзреЗ visa_id
рд╕реНрдерд┐рддрд┐ рд╣реИ: Approved
рдпрд╛ Refused
ред рдЕрдЧрд▓рд╛, рд╣рдо рдЖрдИрдбреА рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдореМрдЬреВрджрд╛ рдкрд╛рда рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
3. рд╕реНрд▓реИрдХ рдореЗрдВ рд╕реНрдЯреЗрдЯрд╕ рдореИрд╕реЗрдЬ рднреЗрдЬрдирд╛
рд╕рдм рдареАрдХ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд┐рд▓реА, рдХрд╣рддреЗ рд╣реИрдВ, рдореЗрд░реА рдЖрдИрдбреА, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдХрд╣реАрдВ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдЕрдкрдиреА рдХрдВрдкрдиреА рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢рд╡рд╛рд╣рдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд▓реИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред
рдпрд╣ рд▓рд┐рдВрдХ рдЖрдкрдХреЛ рдЕрдкрдиреЗ webhook рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд╣рд╛рдВ рдЖрдк рд╕рдВрджреЗрд╢ рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреИрдирд▓ рдпрд╛ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕ рдЪрд░рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╕реНрдерд╛рди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рд╡рд╣рд╛рдВ рдЖрдкрдХреЛ webhook рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреВрдард╛ рдпреВрдЖрд░рдПрд▓ рдорд┐рд▓реЗрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
def send_to_slack(webhook_url, text): post = {"text": "{0}".format(text)} json_data = json.dumps(post) req = requests.post(webhook_url, data=json_data.encode('ascii'), headers={'Content-Type': 'application/json'}) return req.status_code
рдЙрд╕реА requests
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо webhook рдкрд░ text
рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ POST рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВред
4. рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ
рдмрд╛рдХреА рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
url = 'https://www.dfa.ie/irish-embassy/russia/visas/weekly-decision-report/' div_class = 'gen-content-landing__block' date = '24 April' filename = 'weekly_report.pdf' visa_id = '38644112' webhook_url = 'https://hooks.slack.com/services/...' text, report_url = check_report(url, div_class, date) if text != '': text = check_visa(report_url, filename, visa_id, text) print(send_to_slack(webhook_url, text))
рд╣рдо рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЪрд░ рдХреЛ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдп рдЪрд▓рд╛рддреЗ рд╣реИрдВред
5. рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ
рд▓рдЧрднрдЧред рдореИрдВрдиреЗ рдПрдХ рдкрдЯрдХрдерд╛ рд▓рд┐рдЦреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореБрдЭреЗ рд╣рд░ рдмрд╛рд░ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЦреАрдВрдЪрдирд╛ рд╣реИ, рддреЛ рдореИрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рдорд▓реЛрдВ рд╕реЗ рджреВрд░ рдирд╣реАрдВ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдмреИрдардирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдкреГрд╖реНрда рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
$ crontab -e
рдЗрд╕рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реА рдЧрдИ:
*/10 * * * * python3 /home/ubuntu/embassy.py >/dev/null 2>&1
рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ ubuntu рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХреНрд░реЛрди рджреНрд╡рд╛рд░рд╛ рд╣рд░ 10 рдорд┐рдирдЯ рдореЗрдВ рдЪрд▓рд╛рдИ рдЬрд╛рдП рддреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдлреА рд╣реИред
6. рдирд┐рд╖реНрдХрд░реНрд╖
11:50 рдкрд░, рдореБрдЭреЗ рдПрдХ рд╕рдВрджреЗрд╢ рдорд┐рд▓рд╛ рдХрд┐ рдПрдХ рдирдИ рд░рд┐рдкреЛрд░реНрдЯ рджрд┐рдЦрд╛рдИ рджреА рдереА, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╡реАрдЬрд╛ рдЗрд╕рдореЗрдВ рдирд╣реАрдВ рдерд╛ ... рдЙрд╕рдХреЗ рдмрд╛рдж рдореИрдВ рджреВрддрд╛рд╡рд╛рд╕ рдЧрдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рддреВрдлрд╛рди рд╕реЗ рд▓рд┐рдпрд╛ (рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрдИ рд╣рдлреНрддреЛрдВ рддрдХ рдкрддреНрд░ рдФрд░ рдХреЙрд▓ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджрд┐рдпрд╛) рдФрд░ рдЖрдЦрд┐рд░рдХрд╛рд░ рд╡реАрдЬрд╛ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдкрд╛рд╕рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдзреБрдирд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреМрд╢рд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рди рд╣реЛрдВред рдпрд╣ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреБрдЫ рдирд┐рдпрдорд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреА рджреБрдирд┐рдпрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╕реЗрд╡рд╛ рдореЗрдВ рднреА рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗрд╡рд▓ рдЕрдкрдиреА рдЖрдИрдбреА рдФрд░ рдИ-рдореЗрд▓ рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕реЗ рдИ-рдореЗрд▓ рдкрд░ рд╡реАрдЬрд╛ рдХреА рддрддреНрдкрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред