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