Commit 842b574ea8edb049a6403e9b4434d95823a39caa
Add option to only seed for people/channels I follow
Anders Rune Jensen committed on 9/19/2017, 1:18:08 PMParent: 1b9093405deadf26da6cab9aefb5cdf7ec500421
Files changed
index.js | changed |
index.js | ||
---|---|---|
@@ -6,43 +6,109 @@ | ||
6 | 6 … | var pull = require('pull-stream') |
7 | 7 … | |
8 | 8 … | program |
9 | 9 … | .option('-f, --folder [value]', 'Folder for sharing') |
10 … | + .option('-i, --only-people-i-follow', 'Only seed urls from people or channels I follow') | |
10 | 11 … | .parse(process.argv); |
11 | 12 … | |
12 | -require('ssb-client')((err, sbot) => { | |
13 … | +function extractLinksAndSeed(err, logs) { | |
13 | 14 … | if (err) throw err; |
14 | 15 … | |
15 | - console.log("Looking for dat links") | |
16 … | + console.log("Found " + logs.length) | |
16 | 17 … | |
18 … | + logs.forEach(msg => { | |
19 … | + uri.withinString(msg.value.content.text, (datLink) => { | |
20 … | + if (!datLink.startsWith("dat://")) return | |
21 … | + | |
22 … | + console.log("Saving to:", program.folder + "/" + datLink.substring(6)) | |
23 … | + | |
24 … | + Dat(program.folder + "/" + datLink.substring(6), { | |
25 … | + key: datLink | |
26 … | + }, function (err, dat) { | |
27 … | + if (err) throw err | |
28 … | + | |
29 … | + console.log("sharing:", datLink) | |
30 … | + dat.joinNetwork() | |
31 … | + }) | |
32 … | + }) | |
33 … | + }) | |
34 … | +} | |
35 … | + | |
36 … | +function getAll(sbot) { | |
37 … | + console.log("Looking for dat links in all feeds") | |
38 … | + | |
17 | 39 … | pull( |
18 | 40 … | sbot.createLogStream({ reverse: true, limit: 10000 }), |
19 | 41 … | pull.filter((msg) => { |
20 | 42 … | return !msg.value || |
21 | 43 … | msg.value.content.type == 'post' && |
22 | 44 … | typeof msg.value.content.text == "string" && |
23 | 45 … | msg.value.content.text.indexOf("dat://") != -1 |
24 | 46 … | }), |
25 | - pull.collect((err, log) => { | |
26 | - if (err) throw err; | |
47 … | + pull.collect(extractLinksAndSeed) | |
48 … | + ) | |
49 … | +} | |
27 | 50 … | |
28 | - console.log("Found " + log.length) | |
51 … | +function messagesFromPeopleIFollow(sbot, following, channelSubscriptions) { | |
52 … | + console.log("users:", following) | |
53 … | + console.log("channels:", channelSubscriptions) | |
54 … | + pull( | |
55 … | + sbot.createLogStream({ reverse: true, limit: 10000 }), | |
56 … | + pull.filter((msg) => { | |
57 … | + return !msg.value || | |
58 … | + ((msg.value.author in following || | |
59 … | + msg.value.content.channel in channelSubscriptions) | |
60 … | + && msg.value.content.type == 'post' && | |
61 … | + typeof msg.value.content.text == "string" && | |
62 … | + msg.value.content.text.indexOf("dat://") != -1) | |
63 … | + }), | |
64 … | + pull.collect(extractLinksAndSeed) | |
65 … | + ) | |
66 … | +} | |
29 | 67 … | |
30 | - log.forEach(msg => { | |
31 | - uri.withinString(msg.value.content.text, (datLink) => { | |
32 | - if (!datLink.startsWith("dat://")) return | |
68 … | +function getFromPeopleIFollow(sbot) { | |
69 … | + var following = [] | |
70 … | + var channelSubscriptions = [] | |
33 | 71 … | |
34 | - console.log("Saving to:", program.folder + "/" + datLink.substring(6)) | |
72 … | + console.log("Looking for dat links in people i follow") | |
35 | 73 … | |
36 | - Dat(program.folder + "/" + datLink.substring(6), { | |
37 | - key: datLink | |
38 | - }, function (err, dat) { | |
39 | - if (err) throw err | |
40 | - | |
41 | - console.log("sharing:", datLink) | |
42 | - dat.joinNetwork() | |
43 | - }) | |
44 | - }) | |
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 … | + messagesFromPeopleIFollow(sbot, following, channelSubscriptions) | |
45 | 102 … | }) |
46 | - }) | |
47 | - ) | |
103 … | + ) | |
104 … | + }) | |
105 … | +} | |
106 … | + | |
107 … | +require('ssb-client')((err, sbot) => { | |
108 … | + if (err) throw err; | |
109 … | + | |
110 … | + if (program.onlyPeopleIFollow) | |
111 … | + getFromPeopleIFollow(sbot) | |
112 … | + else | |
113 … | + getAll(sbot) | |
48 | 114 … | }) |
Built with git-ssb-web