/ scripts / fetch-instances-list.js
fetch-instances-list.js
 1  import fs from 'fs';
 2  
 3  const { INSTANCES_SOCIAL_SECRET_TOKEN } = process.env;
 4  
 5  const params = new URLSearchParams({
 6    count: 0,
 7    min_users: 500,
 8    sort_by: 'active_users',
 9    sort_order: 'desc',
10  });
11  
12  const url = `https://instances.social/api/1.0/instances/list?${params.toString()}`;
13  const results = await fetch(url, {
14    headers: {
15      Authorization: `Bearer ${INSTANCES_SOCIAL_SECRET_TOKEN}`,
16    },
17  });
18  
19  const json = await results.json();
20  
21  // Filters
22  json.instances = json.instances.filter(
23    (instance) => Number(instance.connections) > 20,
24  );
25  
26  const names = json.instances.map((instance) => instance.name);
27  
28  // Write to file
29  const path = './src/data/instances.json';
30  fs.writeFileSync(path, JSON.stringify(names, null, '\t'), 'utf8');
31  
32  // Write everything to file, for debugging
33  const path2 = './src/data/instances-full.json';
34  fs.writeFileSync(path2, JSON.stringify(json, null, '\t'), 'utf8');