Home

Awesome

earthacrosstime

Mastodon/Twitter bot that posts videos showcasing how random locations in the world have changed since 1984.

In a bit more detail, whenever the bot runs, it...

Much of the code has been adapted from ærialbot, a previous project of mine that basically does the same (and more!) for static maps, and CMU's Time Machine Viewer, which contains reference implementations of the required coordinate projections.

🐦 Check it out at @aerialbot@mastodon.social, where every sixth post or so is made by this bot!

Here's one of the videos posted by this bot, showing the construction of Incheon Airport and various developments on land.

https://user-images.githubusercontent.com/1944410/120917015-35d93000-c6ad-11eb-9ab8-6d1d3b7a5525.mp4

Features

Here's why this bot is a Good Bot:

Usage

Setup

Being a good Python 3 citizen, this program integrates with venv or similar packages to avoid dependency hell. Run the following commands to get it installed on your system:

$ git clone https://github.com/doersino/earthacrosstime
$ python3 -m venv earthacrosstime
$ cd earthacrosstime
$ source bin/activate
$ pip3 install -r requirements.txt

(To deactivate the virtual environment, run deactivate.)

One of the dependencies, Shapely, requires the GEOS library for performing operations on two-dimensional vector geometries, which you may need to install first as described here.

Configuration

Copy config.sample.ini to config.ini, open it and modify it based on the (admittedly wordy) instructions in the comments.

See here for advice regarding finding shapefiles of the region you're interested in and preparing them for use with ærialbot.

Running

Once you've set everything up and configured it to your liking, navigate to the directory where earthacrosstime.py is located (this is important – the bot won't be able to find some required assets otherwise) and run it:

$ python3 earthacrosstime.py

That's basically it!

If you want your bot to post at predefined intervals, use cron, runwhen or a similar tool. To make cron work with venv, you'll need to use bash and execute the activate script before running the bot (in this example, it runs every eight hours at 50 past the hour):

50 */8 * * * /usr/bin/env bash -c 'cd /PATH/TO/earthacrosstime && source bin/activate && python3 earthacrosstime.py'

Pro tip: If you want to host multiple instances of this bot, you don't need multiple copies of the code – multiple config files suffice: simply run python3 earthacrosstime.py one-of-your-config-files.ini.

Uber pro tip: Run python3 earthacrosstime.py --help to learn about some secret CLI options!

License

You may use this repository's contents under the terms of the MIT License, see LICENSE.

However, the subdirectory assets/ contains some third-party software and data with their own licenses: