about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--ebooks.cpp48
m---------vendor/libtwittercpp0
2 files changed, 16 insertions, 32 deletions
diff --git a/ebooks.cpp b/ebooks.cpp index dd9c7bd..fd9ca83 100644 --- a/ebooks.cpp +++ b/ebooks.cpp
@@ -75,20 +75,10 @@ int main(int argc, char** args)
75 return form; 75 return form;
76 }); 76 });
77 77
78 std::mutex stats_mutex; 78 twitter::stream user_stream(client, [&kgramstats] (const twitter::notification& n) {
79
80 twitter::user me;
81 auto resp = client.getUser(me);
82 if (resp != twitter::response::ok)
83 {
84 std::cout << "Could not get current Twitter user" << std::endl;
85 return -1;
86 }
87
88 client.setUserStreamNotifyCallback([&] (twitter::notification n) {
89 if (n.getType() == twitter::notification::type::tweet) 79 if (n.getType() == twitter::notification::type::tweet)
90 { 80 {
91 if ((!n.getTweet().isRetweet()) && (n.getTweet().getAuthor() != me)) 81 if ((!n.getTweet().isRetweet()) && (n.getTweet().isMyTweet()))
92 { 82 {
93 std::string original = n.getTweet().getText(); 83 std::string original = n.getTweet().getText();
94 std::string canonical; 84 std::string canonical;
@@ -98,42 +88,36 @@ int main(int argc, char** args)
98 88
99 if (canonical.find("@rawr_ebooks") != std::string::npos) 89 if (canonical.find("@rawr_ebooks") != std::string::npos)
100 { 90 {
101 std::string doc = client.generateReplyPrefill(n.getTweet()); 91 std::string doc = n.getTweet().generateReplyPrefill();
92 doc += kgramstats.randomSentence(140 - doc.length());
93 doc.resize(140);
94
95 try
102 { 96 {
103 std::lock_guard<std::mutex> stats_lock(stats_mutex); 97 n.getTweet().reply(doc);
104 doc += kgramstats.randomSentence(140 - doc.length()); 98 } catch (const twitter::twitter_error& error)
105 doc.resize(140);
106 }
107
108 twitter::tweet tw;
109 twitter::response resp = client.updateStatus(doc, tw, n.getTweet());
110 if (resp != twitter::response::ok)
111 { 99 {
112 std::cout << "Twitter error while tweeting: " << resp << std::endl; 100 std::cout << "Twitter error while tweeting: " << error.what() << std::endl;
113 } 101 }
114 } 102 }
115 } 103 }
116 } 104 }
117 }); 105 });
118 106
119 client.startUserStream();
120 std::this_thread::sleep_for(std::chrono::minutes(1)); 107 std::this_thread::sleep_for(std::chrono::minutes(1));
121 108
122 std::cout << "Generating..." << std::endl; 109 std::cout << "Generating..." << std::endl;
123 for (;;) 110 for (;;)
124 { 111 {
125 std::string doc; 112 std::string doc = kgramstats.randomSentence(140);
126 {
127 std::lock_guard<std::mutex> stats_lock(stats_mutex);
128 doc = kgramstats.randomSentence(140);
129 }
130 doc.resize(140); 113 doc.resize(140);
131 114
132 twitter::tweet tw; 115 try
133 resp = client.updateStatus(doc, tw); 116 {
134 if (resp != twitter::response::ok) 117 client.updateStatus(doc);
118 } catch (const twitter::twitter_error& error)
135 { 119 {
136 std::cout << "Twitter error while tweeting: " << resp << std::endl; 120 std::cout << "Twitter error while tweeting: " << error.what() << std::endl;
137 } 121 }
138 122
139 int waitlen = rand() % delay; 123 int waitlen = rand() % delay;
diff --git a/vendor/libtwittercpp b/vendor/libtwittercpp
Subproject 9fdcbee29350846db7f136b023da64bb2e6a93f Subproject 6c9f541f34c58ac817f88ffb5e069b929bbbc27