====== Open Source Social Media: An overview of Mastodon and ActivityPub ====== A short talk and Q&A on the future of open source social media. | When | **Tue September 17th 2019, 6:30pm** | | Where | **The Avalon Lounge, Kent Road** | ==== Attendees ==== ([[https://coding.openguide.co.uk/wiki/doku.php?id=2019-08-27|ref]]) ^ Name ^ Fediverse URL ^ |Brian Hunter|https://glasgow.social/@bhlm | |David Taylor| | |Neil McKillop | https://glasgow.social/@neil | |Steven | https://glasgow.social/@M| === Signed up, but didn't show === |Abe Stewart| | |Gabriele| | |Hammy |https://glasgow.social/@Hammy | |Rosa| | |Rowan Evenstar| | |Zoe Gadon-Thompson | | ==== Example code ==== This is a cronjob that runs every 5 minutes. // Ihis is a simple example of feeding data into the Fediverse // It takes GlasgowLive's RSS feed, checks what's new and toots it (as GlasgowLive@glasgow.social) // Include the Mastodon API and set up the connection credentials require "vendor/autoload.php"; require "config/glasgowlive_credentials.php"; // Make a connection to the Fediverse $oAuth = new Colorfield\Mastodon\MastodonOAuth($name, $instance); $oAuth->config->setClientId($client_id); $oAuth->config->setClientSecret($client_secret); $oAuth->config->setBearer($bearer); $mastodonAPI = new Colorfield\Mastodon\MastodonAPI($oAuth->config); // Download the GlasgowLive RSS feed $url = "https://www.glasgowlive.co.uk/?service=rss"; $data = file_get_contents($url); $data = simplexml_load_file($url); // Iterate through the data, check if we've mentioned it already, // otherwise it's new - make a toot! foreach($data->channel->item as $key=>$item) { $title = $item->title; $link = $item->link; $id = $item->guid; // Check the database for a note that this article has been tooted $stmt = $db->prepare("select * from rss_tracker where type=? and uniq_link=?"); $stmt->execute([$type,$link]); $row = $stmt->fetch(); // if we don't find it, then toot and record to the database that we've tooted if(!$row) { $string = "$title\n$link"; $params['status'] = $string; $params['visibility'] = "unlisted"; if($post = $mastodonAPI->post('/statuses', $params)) { $insert_stmt = $db->prepare("insert into rss_tracker set uniq_link=?, type=?"); $insert_stmt->execute([$link, $type]); } } } ==== Links ==== * [[https://joinmastodon.org/|Join Mastodon]] - Official Mastodon project site * [[https://neil.mckillop.org/talks/mastodon_activitypub/|Mastodon & ActivityPub: An Overview]] * [[https://glasgow.social|glasgow.social]] - Mastodon instance for Glasgow