void SetUp() { hash_1[0] = false; hash_1[1] = true; hash_1[2] = false; hash_2[0] = true; hash_2[1] = false; hash_2[2] = true; tweets = { Tweet("t1", hash_1), Tweet("t2", hash_2) }; }
vector<Tweet> TweetParser::parseTweetData(const string& inputTweetDataFilename) const { ifstream fInp; vector<Tweet> parsedTweetData; string tweet; fInp.open(inputTweetDataFilename.c_str()); if (fInp.is_open()) { int id = 0; int screenNameId = 0; int resetScreenNameId = 0; string tweetScreenName, tweetTimeStamp, tweetContent; vector<string> tweetMentions; vector<string> screenNames; bool incrementScreenNameId = true; while (!fInp.eof()) { getline(fInp, tweet); if (tweet != "") { try { tweetScreenName = getScreenNameForSingleTweet(tweet); tweetTimeStamp = getTimeStampForSingleTweet(tweet); tweetContent = getContentForSingleTweet(tweet); tweetMentions = getMentionsForSingleTweet(tweet); } catch (const char* msg) { cerr << msg << endl; } vector<string>::iterator it = find(screenNames.begin(), screenNames.end(), tweetScreenName); // new screen name found if (it == screenNames.end()) { screenNames.push_back(tweetScreenName); incrementScreenNameId = true; } // screen name already found else { resetScreenNameId = screenNameId; screenNameId = (int) (it - screenNames.begin()); incrementScreenNameId = false; } parsedTweetData.push_back(Tweet(id, TwitterAccount(screenNameId, tweetScreenName), tweetTimeStamp, tweetContent, tweetMentions)); if (incrementScreenNameId) { screenNameId++; } else { screenNameId = resetScreenNameId; } id++; } } fInp.close(); tweetMentions.clear(); screenNames.clear(); cout << "###### ***** NUMBER OF TWEETS = " << parsedTweetData.size() << " ***** ######" << endl; cout << "###### ***** NUMBER OF TWITTER ACCOUNTS = " << screenNameId << " ***** ######" << endl; return parsedTweetData; } else { string message = "TweetParser::parseTweetData: error opening file: " + inputTweetDataFilename; throw message.c_str(); } }
void RandomTweetTask::Entry(TaskServer &server, const std::atomic<bool> &cancel) { auto twitter = system::Get().twitter; if (m_random_list.size() == 0) { return; } uint32_t random_ind = m_mt() % m_random_list.size(); twitter.Tweet(m_random_list.at(random_ind)); }
void ofxTwitter::setup() { // listen to http events ofAddListener(httpUtils.newResponseEvent, this, &ofxTwitter::newResponse); httpUtils.start(); // use dummy data in case we've lost web connection data.push_back( Tweet("...") ); delegate = NULL; }
void TwitterTask::Entry(TaskServer &server, const std::atomic<bool> &cancel) { // 初回実行時のみ // 自分の最後のツイート以降でフィルタする if (m_since_id == 0) { m_since_id = GetInitialSinceId(); logger.Log(LogLevel::Info, "Initial since_id: %" PRIu64, m_since_id); } // ホームタイムラインを取得 auto twitter = system::Get().twitter; auto json = twitter.Statuses_HomeTimeline({ {"since_id", std::to_string(m_since_id)}, {"count", "200"}}); auto log_tweet = [](const json11::Json &status, std::time_t timestamp) { logger.Log(LogLevel::Info, "id=%s time=%s local=%s screen=%s name=%s", status["id_str"].string_value().c_str(), status["created_at"].string_value().c_str(), util::DateTimeStr(timestamp).c_str(), status["user"]["screen_name"].string_value().c_str(), status["user"]["name"].string_value().c_str()); logger.Log(LogLevel::Info, "%s", status["text"].string_value().c_str()); }; for (const auto &status : json.array_items()) { // ID uint64_t id = util::to_uint64(status["id_str"].string_value()); // ローカルタイムに変換 std::time_t timestamp = util::StrToTimeTwitter( status["created_at"].string_value()); struct tm local; ::localtime_r(×tamp, &local); // 自分のツイートには反応しない if (util::to_uint64(status["id_str"].string_value()) == twitter.MyId()) { continue; } // リツイートには反応しない if (!status["retweeted_status"].is_null()) { continue; } if (IsWhite(status)) { logger.Log(LogLevel::Info, "Find White"); log_tweet(status, timestamp); std::string msg = u8"@"; msg += status["user"]["screen_name"].string_value(); msg += ' '; msg += u8"ホワイト!"; twitter.Tweet(msg, status["id_str"].string_value()); m_since_id = std::max(id, m_since_id); } if (IsBlack(status)) { logger.Log(LogLevel::Info, "Find Black"); log_tweet(status, timestamp); std::string msg = u8"@"; msg += status["user"]["screen_name"].string_value(); msg += ' '; msg += u8"ブラック"; twitter.Tweet(msg, status["id_str"].string_value()); m_since_id = std::max(id, m_since_id); } } }
void TweetValue(char *to, char *subject, int value, AsyncCallback_t callback) { static char message[10]; sprintf(message, "%d", value); Tweet(to, subject, message, callback); }
/** Compose a new tweet. */ void postTweet(int userId, int tweetId) { tweets[userId].emplace_back(Tweet(time++, tweetId)); }
/** Compose a new tweet. */ void postTweet(int userId, int tweetId) { tweet.push_back(Tweet(userId, tweetId)); }
/** Compose a new tweet. */ void postTweet(int userId, int tweetId) { tweet[userId].push_back(Tweet(userId, tweetId, ++timestamp, tweet[userId].size())); }