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