Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
/*
* mstdn2birdsite.ts - The filter code of "Mastodon → Twitter"
* Written in 2017 by nullkal <nullkal@nil.nu>
*
* To the extent possible under law, the author(s) have dedicated all copyright
* and related and neighboring rights to this software to the public domain
* worldwide. This software is distributed without any warranty.
* You should have received a copy of the CC0 Public Domain Dedication along
* with this software. If not, see
* <http://creativecommons.org/publicdomain/zero/1.0/>.
*/
type HandleFunc = (match: Array<string>) => string;
interface Handler {
pattern: RegExp;
func: HandleFunc;
};
class FeedFilter {
private handlers: Handler[];
constructor() {
this.handlers = [];
}
public addHandler(pattern: RegExp, func: HandleFunc) {
this.handlers.push({ pattern, func });
}
public exec() {
for (const i in this.handlers) {
const handler = this.handlers[i];
const match = handler.pattern.exec(Feed.newFeedItem.EntryTitle);
if (match !== null) {
Twitter.postNewTweet.setTweet(handler.func(match));
return;
}
}
Twitter.postNewTweet.skip();
}
};
function formatContent(content: string) {
return content
.replace(/<br\s*\/?>/g, "\n")
.replace(/<.*?>/g, '');
}
let f = new FeedFilter();
f.addHandler(/^New status by /, (match) => {
const content = formatContent(Feed.newFeedItem.EntryContent);
const url = Feed.newFeedItem.EntryUrl;
if (/((?:[^\w]|^)[@@])(\w+)/.test(content)) {
Twitter.postNewTweet.skip();
}
return `${content} ${url}`;
});
/*f.addHandler(
/^\w+ shared a status by (\w+(?:@[a-z0-9\.\-]+[a-z0-9]+))/,
(match) => {
const originalPoster = Feed.newFeedItem.EntryUrl;
const content = formatContent(Feed.newFeedItem.EntryContent);
return `BT ${originalPoster}\n${content}`;
}
);*/
f.exec();
@yokky21

This comment has been minimized.

Copy link

@yokky21 yokky21 commented Jan 8, 2018

こんにちは。
こちらをお借りして IFTTT で運用してみましたが、このままだと改行が反映されませんでした。
以下のように変更して解決しましたのでこちらでご報告致します。

-    .replace(/<br:\s*\/?>/g, "\n")
+    .replace(/<br\s*\/?>/g, "\n")
@nullkal

This comment has been minimized.

Copy link
Owner Author

@nullkal nullkal commented Aug 27, 2018

👍 ご報告ありがとうございました。修正、取り入れました!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.