Bypass paywalled APIs to crosspost from Twitter to Mastodon
This repository has been archived on 2025-03-19. You can view files and clone it, but cannot push or open issues or pull requests.
Find a file
Penelope Gwen / Pogmommy cbd05c2fa5
Update README.md
2023-02-19 18:14:33 -07:00
imgs Create imgs_save_here 2023-02-14 14:56:59 -07:00
node_modules/tall add tall 2023-02-14 14:54:24 -07:00
ref 2.0.0 2023-02-14 14:35:57 -07:00
.gitignore Create .gitignore 2023-02-08 12:03:58 -07:00
api_license.png Update api_license.png 2023-02-07 21:34:29 -07:00
config.txt Update config.txt 2023-02-14 14:48:51 -07:00
multi.js 2.0.0 2023-02-14 14:35:57 -07:00
package.json add tall 2023-02-14 14:54:24 -07:00
README.md Update README.md 2023-02-19 18:14:33 -07:00
TwitToMast.js 2.0.0 2023-02-14 14:35:57 -07:00
usage.txt 2.0.0 2023-02-14 14:35:57 -07:00
usernameslist.txt 2.0.0 2023-02-14 14:35:57 -07:00

TwitToMast

Bypass paywalled APIs to crosspost from Twitter to Mastodon

Installation:

  1. Clone the repo and set up the script's dependencies
git clone https://github.com/pogmom/TwitToMast.git
cd TwitToMast
npm install
  1. Install Chrome Webdriver and set up your PATH as outlined in Step 3 here

  2. Retrieve your Mastodon API Key

    • From your Mastodon Account, go to Preferences > Development > New Application
    • Enter any name you'd like, press "submit"
    • You should see the application with the name you just gave it in your applications list
    • Click on its name, and copy the string of text to the right of where it says "Your Access Token"
  3. Update config.txt with your Mastodon account settings

    • Replace "API_KEY" on line 1 with the Access Token you retrieved in the previous step
    • Replace "API_URL" on line 2 with your Mastodon instance's API URL

Usage

node ./TwitToMast.js [-htqrpmbc] [-u username] [-n tweetcount] [-d debuglevel] [-w timeout]
node ./multi.js [-htqrpmbc] [-n tweetcount] [-d debuglevel] [-w timeout]

Arguments

	-h:	- show help screen (you made it here!)
	-u: username
		- the twitter handle of the user whose account will be scraped
			- defaults to 'Twitter' (@twitter)
	-n: tweetcount
		- the number of enabled tweets that will be scraped from the targeted account
			- defaults to 5
	-t:	- tweets that are part of threads will be included in the scan
	-q:	- quote tweets will be included in the scan
	-r:	- Link to quoted tweet will appear in the header, preceded by "re: "
			- default behavior posts link at bottom preceded by "Quoting "
	-p:	- enable/disable posting to Mastodon
	-m:	- include user's name, handle, and link to tweet
	-b:	- display browser (disable headless mode)
	-c:	- force URL to be logged to file if posts are disabled
	-d: debuglevel
		- amount of information to print to console
			0: only errors
			1: current task + tweet Text (default)
			2: pretty much everything
	-w: timeout
		- length of time (in ms) to wait for page elements to load
			- defaults to 30000 (30 seconds)

Example of single-user scraper

Example of multi-user scraper (now inactive)

How types of content are handled

  • Text
    • All text (except emojis) is currently included in cross-posts
  • Quote Tweets
    • Preserves text of quote tweet and allows
  • Media
    • All still images attached to a tweet will be included in cross-posts
    • Videos are unable to be attached to cross-posts, but a link to the original video will be included
  • Retweets
    • Retweets are not cross-posted
  • Replies
    • To self:
      • Preserves Text, links, still images, quoted content, and continuity (mastodon post are stitched together in threads)
    • To others:
      • Replies to others are not cross-posted at the moment

Q&A

Q. why isn't it staying open in the background to monitor my tweets?

A. TwitToMast doesn't run perpetually by default. You'll need to set it up yourself to run on a schedule.

  • On macos, you can run the script every 10 minutes with the following command in an automator app set up to run at login.
    • zsh -c "cd /path/to/repository/TwitToMast && exec screen -DmS twittercrosspost zsh -c 'while true; do /path/to/node ./TwitToMast.js [username] [tweet count] [debug level] & sleep 600; done'"
    • You can connect to the created screen to monitor the output of the script with screen -ls and screen -r [screenid]
  • Windows users, try this
  • If you're on linux, you probably already know what you're doing

Q. Doesn't bypassing Twitter's API violate their TOS?

A. No, elon musk personally gave me the go-ahead to do this. Proof