Personal Web Assistant

Monitor Passport Readiness on Russian Embassy site

If you ever tried to get a Russian international passport in the United States, you know that embassy has a funny procedure of notifying about passport readiness. They publish a list of all people who can come and grab their new passport on a single HTML page (with broken layout).

Yes, that stupid. Here is this page: Ready Passports. It’s all in the Russian language, but you can get the idea.

There are no SMS or e-mail notifications, everyone just has to open this page from time to time and search for his name in this list. It’s not that bad if you have Kibitzr running. I have mine running on my desktop, added to AutoStart.

Here is the check I use to get an e-mail once my Passport will be ready:

  - name: Passport
      - text
      - bash: grep -i -e 'Демин' -e 'Дёмин'
      - changes: verbose
      - mailgun
    period: 8 hours
    error: ignore

Let’s break it down. First item - name - is used in logging and e-mail subject. Then URL, nothing special. Then goes the list of transforms. First transform, text, takes HTML and strips all tags out leaving me with clear text. Second, bash, calls bash command on results of text. It executes grep with two alternatives of my last name since I’m not sure how it will appear. Third transform, changes, saves results in a git repository and passes verbose git log forward only if something has changed. Then goes the list of notifications. I have only one - mailgun. I registered a free account with them and authorized my e-mail address. Here is my mailgun configuration in kibitzr-creds.yml:

    key: key-b31874e8c06bd9e21080d1d667e3a280
    to: Peter Demin <>

I configured polling period for 8 hours, there is no rush to take the passport, but I want to check more often than once a day. The last line defines what to do in case of error. As you can expect from guys, who build notification services as a public list of names, their site is… Flaky, so to say. I don’t want to know how low their uptime is, so I ignore all errors. Without this line, I would receive error report for every failure.