diff options
| author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2016-11-28 11:03:18 -0500 |
|---|---|---|
| committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2016-11-28 11:03:18 -0500 |
| commit | beb58a9aa0ddc3d8d85014105745ad4f2629e8c5 (patch) | |
| tree | 63f99ab7c8ffb63917f247a9e7c377951a1903da | |
| parent | d272cf8ca3e245781f64f828b1ec7ef81931df4b (diff) | |
| download | snitch-beb58a9aa0ddc3d8d85014105745ad4f2629e8c5.tar.gz snitch-beb58a9aa0ddc3d8d85014105745ad4f2629e8c5.tar.bz2 snitch-beb58a9aa0ddc3d8d85014105745ad4f2629e8c5.zip | |
Updated libtwitter++ to remove dependence on json submodule
| -rw-r--r-- | snitch.cpp | 89 | ||||
| m--------- | vendor/libtwittercpp | 0 |
2 files changed, 36 insertions, 53 deletions
| diff --git a/snitch.cpp b/snitch.cpp index 88d9d3b..700a0a9 100644 --- a/snitch.cpp +++ b/snitch.cpp | |||
| @@ -29,10 +29,14 @@ int main(int argc, char** argv) | |||
| 29 | "calling the police" | 29 | "calling the police" |
| 30 | }; | 30 | }; |
| 31 | 31 | ||
| 32 | // Initialize the client | ||
| 32 | twitter::client client(auth); | 33 | twitter::client client(auth); |
| 34 | std::this_thread::sleep_for(std::chrono::minutes(1)); | ||
| 35 | |||
| 36 | // Start streaming | ||
| 37 | std::cout << "Starting streaming" << std::endl; | ||
| 33 | std::set<twitter::user_id> streamed_friends; | 38 | std::set<twitter::user_id> streamed_friends; |
| 34 | client.setUserStreamReceiveAllReplies(true); | 39 | twitter::stream userStream(client, [&] (const twitter::notification& n) { |
| 35 | client.setUserStreamNotifyCallback([&] (twitter::notification n) { | ||
| 36 | if (n.getType() == twitter::notification::type::friends) | 40 | if (n.getType() == twitter::notification::type::friends) |
| 37 | { | 41 | { |
| 38 | streamed_friends = n.getFriends(); | 42 | streamed_friends = n.getFriends(); |
| @@ -59,18 +63,13 @@ int main(int argc, char** argv) | |||
| 59 | { | 63 | { |
| 60 | std::cout << "Calling the cops on @" << n.getTweet().getAuthor().getScreenName() << std::endl; | 64 | std::cout << "Calling the cops on @" << n.getTweet().getAuthor().getScreenName() << std::endl; |
| 61 | 65 | ||
| 62 | long media_id; | 66 | try |
| 63 | twitter::response resp = client.uploadMedia("image/jpeg", (const char*) img_buf, img_len, media_id); | ||
| 64 | if (resp != twitter::response::ok) | ||
| 65 | { | 67 | { |
| 66 | std::cout << "Twitter error while uploading image: " << resp << std::endl; | 68 | long media_id = client.uploadMedia("image/jpeg", (const char*) img_buf, img_len); |
| 67 | } else { | 69 | client.replyToTweet(n.getTweet().generateReplyPrefill(), n.getTweet().getID(), {media_id}); |
| 68 | twitter::tweet tw; | 70 | } catch (const twitter::twitter_error& e) |
| 69 | resp = client.updateStatus(client.generateReplyPrefill(n.getTweet()), tw, n.getTweet(), {media_id}); | 71 | { |
| 70 | if (resp != twitter::response::ok) | 72 | std::cout << "Twitter error: " << e.what() << std::endl; |
| 71 | { | ||
| 72 | std::cout << "Twitter error while tweeting: " << resp << std::endl; | ||
| 73 | } | ||
| 74 | } | 73 | } |
| 75 | 74 | ||
| 76 | break; | 75 | break; |
| @@ -79,59 +78,43 @@ int main(int argc, char** argv) | |||
| 79 | } | 78 | } |
| 80 | } else if (n.getType() == twitter::notification::type::followed) | 79 | } else if (n.getType() == twitter::notification::type::followed) |
| 81 | { | 80 | { |
| 82 | twitter::response resp = client.follow(n.getUser()); | 81 | try |
| 83 | if (resp != twitter::response::ok) | 82 | { |
| 83 | n.getUser().follow(); | ||
| 84 | } catch (const twitter::twitter_error& e) | ||
| 84 | { | 85 | { |
| 85 | std::cout << "Twitter error while following @" << n.getUser().getScreenName() << ": " << resp << std::endl; | 86 | std::cout << "Twitter error while following @" << n.getUser().getScreenName() << ": " << e.what() << std::endl; |
| 86 | } | 87 | } |
| 87 | } | 88 | } |
| 88 | }); | 89 | }, true, true); |
| 89 | 90 | ||
| 90 | std::this_thread::sleep_for(std::chrono::minutes(1)); | ||
| 91 | |||
| 92 | std::cout << "Starting streaming" << std::endl; | ||
| 93 | client.startUserStream(); | ||
| 94 | for (;;) | 91 | for (;;) |
| 95 | { | 92 | { |
| 96 | std::this_thread::sleep_for(std::chrono::minutes(1)); | 93 | std::this_thread::sleep_for(std::chrono::minutes(1)); |
| 97 | 94 | ||
| 98 | std::set<twitter::user_id> friends; | 95 | try |
| 99 | std::set<twitter::user_id> followers; | ||
| 100 | twitter::response resp = client.getFriends(friends); | ||
| 101 | if (resp == twitter::response::ok) | ||
| 102 | { | 96 | { |
| 103 | resp = client.getFollowers(followers); | 97 | std::set<twitter::user_id> friends = client.getUser().getFriends(); |
| 104 | if (resp == twitter::response::ok) | 98 | std::set<twitter::user_id> followers = client.getUser().getFollowers(); |
| 99 | |||
| 100 | std::list<twitter::user_id> old_friends, new_followers; | ||
| 101 | std::set_difference(std::begin(friends), std::end(friends), std::begin(followers), std::end(followers), std::back_inserter(old_friends)); | ||
| 102 | std::set_difference(std::begin(followers), std::end(followers), std::begin(friends), std::end(friends), std::back_inserter(new_followers)); | ||
| 103 | |||
| 104 | for (auto f : old_friends) | ||
| 105 | { | 105 | { |
| 106 | std::list<twitter::user_id> old_friends, new_followers; | 106 | client.unfollow(f); |
| 107 | std::set_difference(std::begin(friends), std::end(friends), std::begin(followers), std::end(followers), std::back_inserter(old_friends)); | 107 | } |
| 108 | std::set_difference(std::begin(followers), std::end(followers), std::begin(friends), std::end(friends), std::back_inserter(new_followers)); | 108 | |
| 109 | for (auto f : old_friends) | 109 | for (auto f : new_followers) |
| 110 | { | 110 | { |
| 111 | resp = client.unfollow(f); | 111 | client.follow(f); |
| 112 | if (resp != twitter::response::ok) | ||
| 113 | { | ||
| 114 | std::cout << "Twitter error while unfollowing" << std::endl; | ||
| 115 | } | ||
| 116 | } | ||
| 117 | |||
| 118 | for (auto f : new_followers) | ||
| 119 | { | ||
| 120 | resp = client.follow(f); | ||
| 121 | if (resp != twitter::response::ok) | ||
| 122 | { | ||
| 123 | std::cout << "Twitter error while following" << std::endl; | ||
| 124 | } | ||
| 125 | } | ||
| 126 | } else { | ||
| 127 | std::cout << "Twitter error while getting followers: " << resp << std::endl; | ||
| 128 | } | 112 | } |
| 129 | } else { | 113 | } catch (const twitter::twitter_error& e) |
| 130 | std::cout << "Twitter error while getting friends: " << resp << std::endl; | 114 | { |
| 115 | std::cout << "Twitter error: " << e.what() << std::endl; | ||
| 131 | } | 116 | } |
| 132 | 117 | ||
| 133 | std::this_thread::sleep_for(std::chrono::hours(4)); | 118 | std::this_thread::sleep_for(std::chrono::hours(4)); |
| 134 | } | 119 | } |
| 135 | |||
| 136 | client.stopUserStream(); | ||
| 137 | } | 120 | } |
| diff --git a/vendor/libtwittercpp b/vendor/libtwittercpp | |||
| Subproject 9fdcbee29350846db7f136b023da64bb2e6a93f | Subproject d90a1e74c77ba67f25a812609fd49d479bc464d | ||
