mastodonHandler extends Mastodon
This commit is contained in:
		
							parent
							
								
									baf1e2cc48
								
							
						
					
					
						commit
						50d1dd7e17
					
				@ -6,13 +6,16 @@ const baseUrl = "https://social.cybre.town";
 | 
				
			|||||||
const memeAPI = "http://redditapi.adb.sh/api/v1/";
 | 
					const memeAPI = "http://redditapi.adb.sh/api/v1/";
 | 
				
			||||||
const subreddits = ["r/programmerhumor/random"];
 | 
					const subreddits = ["r/programmerhumor/random"];
 | 
				
			||||||
const allowedMedia = ["jpg", "jpeg", "gif", "png"];
 | 
					const allowedMedia = ["jpg", "jpeg", "gif", "png"];
 | 
				
			||||||
const interval = 1000*60;
 | 
					const interval = 1000*60*60;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
let tokenHandler = new MastodonTokenHandler(baseUrl);
 | 
					let tokenHandler = new MastodonTokenHandler(baseUrl);
 | 
				
			||||||
tokenHandler.getAccessToken((accessToken) => {
 | 
					tokenHandler.getAccessToken((accessToken) => {
 | 
				
			||||||
    let client = new MastodonHandler(baseUrl, accessToken);
 | 
					    let client = new MastodonHandler({
 | 
				
			||||||
 | 
					        api_url: `${baseUrl}/api/v1/`,
 | 
				
			||||||
 | 
					        access_token: accessToken,
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
    let memeHandler = new MemeHandler(memeAPI, subreddits, allowedMedia);
 | 
					    let memeHandler = new MemeHandler(memeAPI, subreddits, allowedMedia);
 | 
				
			||||||
    setInterval(() => {
 | 
					    executeAndSetInterval(() => {
 | 
				
			||||||
        memeHandler.getRandomMeme(sub => {
 | 
					        memeHandler.getRandomMeme(sub => {
 | 
				
			||||||
            let status = `"${sub.title}"\n${sub.text}\nby ${sub.author}`;
 | 
					            let status = `"${sub.title}"\n${sub.text}\nby ${sub.author}`;
 | 
				
			||||||
            if (allowedMedia.find(type => type === sub.url.split(/[.]+/).pop())){
 | 
					            if (allowedMedia.find(type => type === sub.url.split(/[.]+/).pop())){
 | 
				
			||||||
@ -26,3 +29,8 @@ tokenHandler.getAccessToken((accessToken) => {
 | 
				
			|||||||
        })
 | 
					        })
 | 
				
			||||||
    }, interval);
 | 
					    }, interval);
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function executeAndSetInterval(handler, timout){
 | 
				
			||||||
 | 
					    handler();
 | 
				
			||||||
 | 
					    setInterval(handler, timout);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,20 +1,18 @@
 | 
				
			|||||||
import Mastodon from "mastodon-api";
 | 
					import Mastodon from "mastodon-api";
 | 
				
			||||||
import fs from "fs";
 | 
					import fs from "fs";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class MastodonHandler{
 | 
					export class MastodonHandler extends Mastodon{
 | 
				
			||||||
    constructor(baseUrl, token) {
 | 
					 | 
				
			||||||
        this.client = new Mastodon({
 | 
					 | 
				
			||||||
            api_url: `${baseUrl}/api/v1/`,
 | 
					 | 
				
			||||||
            access_token: token,
 | 
					 | 
				
			||||||
        })
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    postStatus(status){
 | 
					    postStatus(status){
 | 
				
			||||||
        this.client.post('statuses', {status: status}).then((resp) => console.log(resp.data))
 | 
					        this.post('statuses', {status: status})
 | 
				
			||||||
 | 
					            .then(console.log("status posted => "))
 | 
				
			||||||
 | 
					            .then((resp) => console.log(resp.data));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    postMedia(status, mediaPath){
 | 
					    postMedia(status, mediaPath){
 | 
				
			||||||
        this.client.post('media', { file: fs.createReadStream(mediaPath) }).then(resp => {
 | 
					        this.post('media', { file: fs.createReadStream(mediaPath) }).then(resp => {
 | 
				
			||||||
            let id = resp.data.id;
 | 
					            let id = resp.data.id;
 | 
				
			||||||
            this.client.post('statuses', { status: status, media_ids: [id] }).then((resp) => console.log(resp.data))
 | 
					            this.post('statuses', { status: status, media_ids: [id] })
 | 
				
			||||||
 | 
					                .then(console.log("media posted => "))
 | 
				
			||||||
 | 
					                .then((resp) => console.log(resp.data));
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user