Package io.github.mastodonContentMover
package io.github.mastodonContentMover
Saves statuses from a user account on a Mastodon instance to an XML-based archive
on the local filesystem, and posts them as new statuses from that archive to a user
account on a Mastodon instance, to preserve and migrate content in posted statuses
when users migrate between Mastodon instances.
The tool is run from
Access credentials are stored by
XML persistance uses JAXB, with the text of users' statuses saved in a format that can be inspected and edited outside of the tool, using a basic text editor, after saving and before posting. Media files and associated metadata saved from a Mastodon instance can also be adjusted if needed. For example, the version of a video or image downloaded from a Mastodon instance could be replaced with a higher-resolution or quality version within the archive, before reposting, to ensure there is no loss due to encoding settings on the previous instance. Saved statuses are organised together with their associated media in folders according to their creation date and time.
User and client credentials are also saved in XML format, and can be inspected and edited if needed. Please ensure you run the tool from a working directory that is secure (not on a public computer) in order to keep your access token private, or delete userCredentials.xml from the data directory after use. Failure to do this may allow others to access your Mastodon account.
The tool is run from
Mover
, which connects to
the specified Mastodon instance using Authenticator
and then saves Post
objects to or posts them
from a PostArchive
. Media attachments for Post
objects are held in MediaFile
objects.
Access credentials are stored by
Authenticator
using UserCredentialStore
and ClientCredentialStore
,
which in turn uses ClientCredentialSet
to hold
client key/secret pairs. OAuth authentication managed within Authenticator
is aided by OAuthListener
.
XML persistance uses JAXB, with the text of users' statuses saved in a format that can be inspected and edited outside of the tool, using a basic text editor, after saving and before posting. Media files and associated metadata saved from a Mastodon instance can also be adjusted if needed. For example, the version of a video or image downloaded from a Mastodon instance could be replaced with a higher-resolution or quality version within the archive, before reposting, to ensure there is no loss due to encoding settings on the previous instance. Saved statuses are organised together with their associated media in folders according to their creation date and time.
User and client credentials are also saved in XML format, and can be inspected and edited if needed. Please ensure you run the tool from a working directory that is secure (not on a public computer) in order to keep your access token private, or delete userCredentials.xml from the data directory after use. Failure to do this may allow others to access your Mastodon account.
-
ClassDescriptionHandles the process of authenticating a connection with a Mastodon instance, using an OAuth callback facilitated by
OAuthListener
— a minimal HTTP server that runs briefly on the local machine to receive a call from the browser on that machine to thelocalhost
.Holds in an XML-persistable object aclient-key
andclient-secret
pair that grants application-level API credentials for the tool with a Mastodon instance.Holds in an XML-persistable object the application-level API credentials for the tool with respective Mastodon instances, usingClientCredentialSet
objects to store individualclient-key
andclient-secret
pairs.Holds in an XML-persistable object the metadata associated with a media file attached to aPost
object.Bootstraps application, parses command-line parameters, determines which function was requested by the user, and then performs that function.Operates a minimal HTTP server on the local machine for the duration of OAuth authorization of the tool by a Mastodon instance, passing the callback code collected via an OAuth callback (from a browser on that machine) to the instantiatedAuthenticator
singletone object.Holds in an XML-persistable object all the data associated with a Mastodon status, usingMediaFile
objects to store metadata associated with media files.Holds in an XML-persistable object the user-level API access tokens for user accounts on respective Mastodon instances.