'use strict' const requestsync = require('sync-request'), user = process.argv[2] || 'user', pass = process.argv[3] || 'pass', site = process.argv[4] || 'https://social.hatthieves.es', url = site.split('://')[0] + '://' + user + ':' + pass + '@' + site.split('://')[1] try { let actors, followed = [], count = 100, account = JSON.parse(requestsync('GET', url + '/api/v1/accounts/' + user).getBody()).id do { let id = actors && actors.length > 0 ? actors[actors.length - 1].id : '', body = requestsync('GET', url + '/api/v1/accounts/' + account + '/following?max_id=' + id + '&limit=' + count) try { actors = JSON.parse(body.getBody()) if (actors && actors.length > 0) { for (let a of actors) { if (a && a.id && !followed.some(f => f === a.id)) { followed.push(a.id) } } } } catch (e) { console.log(e) } console.log('Loading users: ' + followed.length) } while (actors && actors.length >= count) actors = [] do { let id = actors && actors.length > 0 ? actors[actors.length - 1].id : '', body = requestsync('GET', url + '/api/statuses/networkpublic_timeline?max_id=' + id + '&only_media=false&count=20&with_muted=true') try { actors = JSON.parse(body.getBody()) if (actors && actors.length > 0) { for (let a of actors) { if (a && a.user && a.user.id && !followed.some(f => f === a.user.id)) { requestsync('POST', url + '/api/v1/accounts/' + a.user.id + '/follow') if (a.in_reply_to_user_id && !followed.some(f => f === a.in_reply_to_user_id)) { requestsync('POST', url + '/api/v1/accounts/' + a.in_reply_to_user_id + '/follow') followed.push(a.in_reply_to_user_id) console.log('Following: ' + a.in_reply_to_user_id) } followed.push(a.user.id) console.log('Following: ' + a.user.screen_name) } } } } catch (e) { console.log(e) } console.log('Following: ' + followed.length + ' accounts') } while (actors && actors.length >= 20) } catch (e) { console.log(e) }