From eee2c82d32174395c07dec8e3169a941c43287ff Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Tue, 29 Nov 2016 16:21:10 -0500 Subject: Updated libtwitter++ to remove dependency on json submodule This also involved updating to use the new libtwitter++ API. --- toldya.cpp | 111 ++++++++++++++++++++++++++------------------------- vendor/libtwittercpp | 2 +- 2 files changed, 58 insertions(+), 55 deletions(-) diff --git a/toldya.cpp b/toldya.cpp index 2df49eb..285b82a 100644 --- a/toldya.cpp +++ b/toldya.cpp @@ -29,7 +29,10 @@ int main(int argc, char** argv) twitter::client client(auth); std::set streamed_friends; - client.setUserStreamNotifyCallback([&] (twitter::notification n) { + + std::cout << "Starting streaming" << std::endl; + + twitter::stream user_stream(client, [&] (twitter::notification n) { if (n.getType() == twitter::notification::type::friends) { streamed_friends = n.getFriends(); @@ -50,23 +53,22 @@ int main(int argc, char** argv) std::lock_guard potential_guard(potential_mutex); std::cout << n.getTweet().getText() << std::endl; - potential.push_back(n.getTweet()); + potential.push_back(std::move(n.getTweet())); } } else if (n.getType() == twitter::notification::type::followed) { - twitter::response resp = client.follow(n.getUser()); - if (resp != twitter::response::ok) + try + { + client.follow(n.getUser()); + } catch (const twitter::twitter_error& error) { - std::cout << "Twitter error while following @" << n.getUser().getScreenName() << ": " << resp << std::endl; + std::cout << "Twitter error while following @" << n.getUser().getScreenName() << ": " << error.what() << std::endl; } } }); std::this_thread::sleep_for(std::chrono::minutes(1)); - std::cout << "Starting streaming" << std::endl; - client.startUserStream(); - for (;;) { // Wait until 9am @@ -109,74 +111,75 @@ int main(int argc, char** argv) std::this_thread::sleep_for(to_wait); // Unfollow people who have unfollowed us - std::set friends; - std::set followers; - twitter::response resp = client.getFriends(friends); - if (resp == twitter::response::ok) + try { - resp = client.getFollowers(followers); - if (resp == twitter::response::ok) + std::set friends = client.getFriends(); + std::set followers = client.getFollowers(); + + std::list old_friends; + std::list new_followers; + std::set_difference(std::begin(friends), std::end(friends), std::begin(followers), std::end(followers), std::back_inserter(old_friends)); + std::set_difference(std::begin(followers), std::end(followers), std::begin(friends), std::end(friends), std::back_inserter(new_followers)); + + std::set old_friends_set; + for (auto f : old_friends) { - std::list old_friends, new_followers; - std::set_difference(std::begin(friends), std::end(friends), std::begin(followers), std::end(followers), std::back_inserter(old_friends)); - std::set_difference(std::begin(followers), std::end(followers), std::begin(friends), std::end(friends), std::back_inserter(new_followers)); + old_friends_set.insert(f); - std::set old_friends_set; - for (auto f : old_friends) + try + { + client.unfollow(f); + } catch (const twitter::twitter_error& error) { - old_friends_set.insert(f); - - resp = client.unfollow(f); - if (resp != twitter::response::ok) - { - std::cout << "Twitter error while unfollowing" << std::endl; - } + std::cout << "Twitter error while unfollowing: " << error.what() << std::endl; } - - for (auto f : new_followers) + } + + for (auto f : new_followers) + { + try { - resp = client.follow(f); - if (resp != twitter::response::ok) - { - std::cout << "Twitter error while following" << std::endl; - } + client.follow(f); + } catch (const twitter::twitter_error& error) + { + std::cout << "Twitter error while following: " << error.what() << std::endl; } - - std::lock_guard potential_guard(potential_mutex); - std::vector to_keep; - for (auto pt : potential) + } + + std::lock_guard potential_guard(potential_mutex); + std::vector to_keep; + for (auto& pt : potential) + { + if (old_friends_set.count(pt.getAuthor().getID()) == 0) { - if (old_friends_set.count(pt.getAuthor()) == 0) - { - to_keep.push_back(pt); - } + to_keep.push_back(std::move(pt)); } - - potential = to_keep; - } else { - std::cout << "Twitter error while getting followers: " << resp << std::endl; } - } else { - std::cout << "Twitter error while getting friends: " << resp << std::endl; + + potential = std::move(to_keep); + } catch (const twitter::twitter_error& error) + { + std::cout << "Twitter error while getting friends/followers: " << error.what() << std::endl; } // Tweet! if (!potential.empty()) { - auto to_quote = potential[rand() % potential.size()]; + auto to_quote = std::move(potential[rand() % potential.size()]); potential.clear(); std::string caption = captions[rand() % captions.size()]; std::string doc = caption + " " + to_quote.getURL(); - twitter::tweet sent; - twitter::response resp = client.updateStatus(doc, sent); - if (resp != twitter::response::ok) + try { - std::cout << "Error tweeting: " << resp << std::endl; + client.updateStatus(doc); + + std::cout << "Tweeted!" << std::endl; + } catch (const twitter::twitter_error& error) + { + std::cout << "Error tweeting: " << error.what() << std::endl; } } } - - client.stopUserStream(); } diff --git a/vendor/libtwittercpp b/vendor/libtwittercpp index c3cc763..7c44fd1 160000 --- a/vendor/libtwittercpp +++ b/vendor/libtwittercpp @@ -1 +1 @@ -Subproject commit c3cc76301d64320791f7097709ffcd36d7206266 +Subproject commit 7c44fd17bb6be54a2ea4b60761e91053ca988977 -- cgit 1.4.1