FYI, here's how I post my
#untappd beer check-ins to Mastodon.
shkspr.mobi/blog/2024/05/untapp…
https://shkspr.mobi/blog/2024/05/untappd-to-mastodon-updated/
## Untappd to Mastodon - Updated!
https://shkspr.mobi/blog/2024/05/untappd-to-mastodon-updated/
A few years ago, I wrote some code to post Untappd check-ins to Mastodon. I've recently updated it to also post a photo of the beer you're enjoying.
First up, you'll need a file called `config.py` to hold all your API keys:
instance = "https://mastodon.social"access_token = "…"write_access_token = "…"untappd_client_id = "…"untappd_client_secret = "…"
Then a file called `untappd2mastodon.py` to do the job of grabbing your data, finding your latest check-in, then posting it to the Fediverse:
#!/usr/bin/env python# -*- coding: utf-8 -*-from mastodon import Mastodonimport jsonimport requestsimport config# Set up accessmastodon = Mastodon( api_base_url=config.instance, access_token=config.write_access_token )# Untappd APIuntappd_api_url = 'https://api.untappd.com/v4/user/checkins/edent?client_id=' + config.untappd_client_id + '&client_secret='+ config.untappd_client_secretr = requests.get(untappd_api_url)untappd_data = r.json()# Latest checkin objectcheckin = untappd_data["response"]["checkins"]["items"][0]untappd_id = checkin["checkin_id"]# Was this ID the last one we saw?check_file = open("untappd_last", "r")last_id = int( check_file.read() )print("Found " + str(last_id) )check_file.close()if (last_id != untappd_id ) : print("Found new checkin") check_file = open("untappd_last", "w") check_file.write( str(untappd_id) ) check_file.close() # Start creating the message message = "" if "checkin_comment" in checkin : message += checkin["checkin_comment"] if "beer" in checkin : message += "\nDrinking: " + checkin["beer"]["beer_name"] if "brewery" in checkin : message += "\nBy: " + checkin["brewery"]["brewery_name"] if "venue" in checkin : if "venue_name" in checkin["venue"] : message += "\nAt: " + checkin["venue"]["venue_name"] # Scores etc untappd_checkin_url = "https://untappd.com/user/edent/checkin/" + str(untappd_id) untappd_rating = checkin["rating_score"] untappd_score = "🍺" * int(untappd_rating) message += "\n" + untappd_score + "\n" + untappd_checkin_url + "\n" + "#untappd" # Get Image if checkin["media"]["count"] > 0 : photo_url = checkin["media"]["items"][0]["photo"]["photo_img_lg"] download = requests.get(photo_url) with open("untappd.tmp", 'wb') as temp_file: temp_file.write(download.content) media = mastodon.media_post("untappd.tmp", description="A photo of some beer.") mastodon.status_post(status = message, media_ids=media, idempotency_key = str(untappd_id)) else: # Post to Mastodon. Use idempotency just in case something went wrong mastodon.status_post(status = message, idempotency_key = str(untappd_id))else : print("No new checkin")
You can treat this code as being MIT licenced if that makes you happy.
#MastodonAPI #python #untappd