doing-plugin-twitter-import 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b9df02efee1e4b0d68c8fca88eafbeb138673d5028b32e0699ecd7721b02d060
4
- data.tar.gz: a868f4d998d03c6631b0456c7dd111f251eb2d89a9b2e5404325a6179b5b7f36
3
+ metadata.gz: 4d88dbc6489815faa760dcf33b790394aad587b777bbebec01c4cd3526bd72df
4
+ data.tar.gz: 65e157b50060cd67f924069793a82be556822d21612d6e5d82992f8b1c69ccc5
5
5
  SHA512:
6
- metadata.gz: 70a5b493b836db48bbd477212587880865096ba30168c828e959bca8d188a8487a453c6b3d5d66a904bb4b4c82820e1a8a1118f0e363046b1c1d6c1284881feb
7
- data.tar.gz: 509cc0119a2099e9cd2f8b0f3a1afa94b608b59f4c8ef3889f6a1b5001082a2926a41122443f2f43e3ae6a3c5542b90f62966ed364cfa0e9b64cad8cd4bc0341
6
+ metadata.gz: 00e03f3fb165f7af7043f4b46a1918cf45930ce6c28f1b27f1bef5004aa72a3aeb17ca70f7690b2c13fb52a6bce6b805cde1db37a53f6edc2a10642b81467f70
7
+ data.tar.gz: fdb09090680c96ccd8fb533600e845d192fc785472f977cf0694164848b8e7e5cd244d669d6c8a3fef3317230b67a8e94a881bdd1f9038d9193f20ac9724fdf6
@@ -31,7 +31,7 @@ module Doing
31
31
  key = Doing.setting('plugins.twitter.api_key')
32
32
  secret = Doing.setting('plugins.twitter.api_secret')
33
33
 
34
- raise PluginException, 'Please add API key/secret to config' if key =~ /^xxxxx/
34
+ raise PluginException, 'Please add Twitter API key/secret to config. Run `doing config refresh` to add placeholders.' if key =~ /^xxxxx/
35
35
 
36
36
  user = Doing.setting('plugins.twitter.user')
37
37
 
@@ -49,7 +49,9 @@ module Doing
49
49
 
50
50
  @old_items = wwid.content
51
51
 
52
- new_items = load_timeline(user)
52
+ new_items = load_timeline(user, wwid, { prefix: prefix, tags: tags, section: options[:section], autotag: options[:autotag] })
53
+
54
+ return if new_items.nil?
53
55
 
54
56
  total = new_items.count
55
57
 
@@ -65,24 +67,7 @@ module Doing
65
67
  new_items.each do |item|
66
68
  next if duplicate?(item)
67
69
 
68
- title = "#{prefix} #{item.title} @done"
69
- tags.each do |tag|
70
- if title =~ /\b#{tag}\b/i
71
- title.sub!(/\b#{tag}\b/i, "@#{tag}")
72
- else
73
- title += " @#{tag}"
74
- end
75
- end
76
- title = wwid.autotag(title) if options[:autotag]
77
- title.gsub!(/ +/, ' ')
78
- title.strip!
79
- section = options[:section] || item.section
80
- section ||= wwid.config['current_section']
81
-
82
- new_item = Item.new(item.date, title, section)
83
- new_item.note = item.note
84
-
85
- imported.push(new_item)
70
+ imported.push(item)
86
71
  end
87
72
 
88
73
  dups = new_items.count - imported.count
@@ -108,25 +93,67 @@ module Doing
108
93
  false
109
94
  end
110
95
 
111
- def self.load_timeline(user)
112
- tweets = @client.user_timeline(user, {
96
+ def self.load_timeline(user, wwid, options)
97
+ config_dir = File.join(Util.user_home, '.config', 'doing')
98
+ id_storage = File.join(config_dir, 'last_tweet_id')
99
+ Doing.logger.log_now(:info, 'Twitter:', "retrieving timeline for #{user}")
100
+
101
+ if File.exist?(id_storage)
102
+ last_id = IO.read(id_storage).strip.to_i
103
+ else
104
+ last_id = nil
105
+ end
106
+
107
+ tweet_options = {
113
108
  count: 200,
114
109
  include_rts: true,
115
110
  exclude_replies: true
116
- }).map { |t| { date: t[:created_at], title: t[:text], id: t[:id] } }
111
+ }
112
+ tweet_options[:since_id] = last_id if last_id
113
+
114
+ tweets = @client.user_timeline(user, tweet_options).map do |t|
115
+ { date: t[:created_at], title: t[:text], id: t[:id] }
116
+ end
117
+ if !tweets.nil? && tweets.count.positive?
118
+ Doing.logger.log_now(:info, 'Twitter:', "found #{tweets.count} new tweets")
119
+ else
120
+ Doing.logger.log_now(:info, 'Twitter:', 'no new tweets found')
121
+ return
122
+ end
117
123
 
118
124
  items = []
119
125
 
120
- tweets.each do |tweet|
121
- date = tweet[:date]
126
+ tweets.reverse.each do |tweet|
127
+ last_id = tweet[:id] if tweet[:id]
128
+ date = Time.parse(tweet[:date].strftime('%Y-%m-%d %H:%M -0000')).localtime
122
129
  text = tweet[:title].dup
123
130
  text = text.force_encoding('utf-8') if text.respond_to? :force_encoding
124
131
  input = text.split("\n")
125
132
  title = input[0]
126
133
  note = Note.new(input.slice(1, input.count))
127
134
 
128
- new_entry = Item.new(date, title, nil, note)
129
- items << new_entry if new_entry
135
+ title = "#{options[:prefix]} #{title} @done"
136
+ options[:tags].each do |tag|
137
+ if title =~ /\b#{tag}\b/i
138
+ title.sub!(/\b#{tag}\b/i, "@#{tag}")
139
+ else
140
+ title += " @#{tag}"
141
+ end
142
+ end
143
+ title = wwid.autotag(title) if options[:autotag]
144
+ title.gsub!(/ +/, ' ')
145
+ title.strip!
146
+ section = options[:section] || wwid.config['current_section']
147
+
148
+ new_item = Item.new(date, title, section)
149
+ new_item.note = note
150
+
151
+ items << new_item if new_item
152
+ end
153
+
154
+ FileUtils.mkdir(config_dir) unless File.exist?(config_dir)
155
+ File.open(id_storage, 'w+') do |f|
156
+ f.puts last_id
130
157
  end
131
158
 
132
159
  items
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doing-plugin-twitter-import
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Terpstra