Files: 338baa22ed1a31664b6306c3b58352e256a469ea / lib.js
3454 bytesRaw
1 | var Dat = require('dat-node') |
2 | var uri = require('urijs') |
3 | var pull = require('pull-stream') |
4 | |
5 | var self = module.exports = { |
6 | extractLinksAndSeed: function(err, logs, shareFolder, useTemp) { |
7 | if (err) throw err; |
8 | |
9 | console.log("Found " + logs.length) |
10 | |
11 | logs.forEach(msg => { |
12 | uri.withinString(msg.value.content.text, (datLink) => { |
13 | if (!datLink.startsWith("dat://")) return |
14 | |
15 | console.log("Saving to:", shareFolder + "/" + datLink.substring(6)) |
16 | |
17 | Dat(shareFolder + "/" + datLink.substring(6), { |
18 | key: datLink, |
19 | temp: useTemp |
20 | }, function (err, dat) { |
21 | if (err) throw err |
22 | |
23 | console.log("sharing:", datLink) |
24 | dat.joinNetwork() |
25 | }) |
26 | }) |
27 | }) |
28 | }, |
29 | |
30 | getAll: function(sbot, shareFolder, useTemp) { |
31 | console.log("Looking for dat links in all feeds") |
32 | |
33 | pull( |
34 | sbot.createLogStream({ live: true, reverse: true, limit: 10000 }), |
35 | pull.filter((msg) => { |
36 | return !msg.value || |
37 | msg.value.content.type == 'post' && |
38 | typeof msg.value.content.text == "string" && |
39 | msg.value.content.text.indexOf("dat://") != -1 |
40 | }), |
41 | pull.collect((err, logs) => self.extractLinksAndSeed(err, logs, |
42 | shareFolder, |
43 | useTemp)) |
44 | ) |
45 | }, |
46 | |
47 | messagesFromPeopleIFollow: function(sbot, following, |
48 | channelSubscriptions, |
49 | shareFolder, useTemp) { |
50 | console.log("users:", following) |
51 | console.log("channels:", channelSubscriptions) |
52 | pull( |
53 | sbot.createLogStream({ live: true, reverse: true, limit: 10000 }), |
54 | pull.filter((msg) => { |
55 | return !msg.value || |
56 | ((msg.value.author in following || |
57 | msg.value.content.channel in channelSubscriptions) |
58 | && msg.value.content.type == 'post' && |
59 | typeof msg.value.content.text == "string" && |
60 | msg.value.content.text.indexOf("dat://") != -1) |
61 | }), |
62 | pull.collect((err, logs) => self.extractLinksAndSeed(err, logs, |
63 | shareFolder, |
64 | useTemp)) |
65 | ) |
66 | }, |
67 | |
68 | getFromPeopleIFollow: function(sbot, shareFolder, useTemp) { |
69 | var following = [] |
70 | var channelSubscriptions = [] |
71 | |
72 | console.log("Looking for dat links in people i follow") |
73 | |
74 | sbot.whoami((err, feed) => { |
75 | pull( |
76 | sbot.createUserStream({ id: feed.id }), |
77 | pull.filter((msg) => { |
78 | return !msg.value || |
79 | msg.value.content.type == 'contact' || |
80 | (msg.value.content.type == 'channel' && |
81 | typeof msg.value.content.subscribed != 'undefined') |
82 | }), |
83 | pull.collect(function (err, msgs) { |
84 | msgs.forEach((msg) => { |
85 | if (msg.value.content.type == 'contact') |
86 | { |
87 | if (msg.value.content.following) |
88 | following[msg.value.content.contact] = 1 |
89 | else |
90 | delete following[msg.value.content.contact] |
91 | } |
92 | else // channel subscription |
93 | { |
94 | if (msg.value.content.subscribed) |
95 | channelSubscriptions[msg.value.content.channel] = 1 |
96 | else |
97 | delete channelSubscriptions[msg.value.content.channel] |
98 | } |
99 | }) |
100 | |
101 | self.messagesFromPeopleIFollow(sbot, following, |
102 | channelSubscriptions, |
103 | shareFolder, useTemp) |
104 | }) |
105 | ) |
106 | }) |
107 | } |
108 | } |
109 |
Built with git-ssb-web