Browse Source

handle case with no end cursor

Mike L 3 years ago
parent
commit
dd427f99d0
2 changed files with 22 additions and 10 deletions
  1. 7 3
      dist/twitter.js
  2. 15 7
      src/twitter.ts

+ 7 - 3
dist/twitter.js

@@ -36,15 +36,19 @@ class default_1 {
                 if (newTweets.length) {
                     logger.debug(`fetched tweets: ${JSON.stringify(newTweets)}`);
                     entries.sort((e1, e2) => Number(e1.sortIndex) - Number(e2.sortIndex));
-                    if (AdaptiveSearch.isCursor(entries[0]))
+                    if (AdaptiveSearch.isCursor(entries[0])) {
                         bottomCursor = entries[0];
-                    logger.info(`custom query ${origQuery} yielded ${newTweets.length} new tweets, next query will follow tweet ${entries[1].entryId.replace(/^sq-I-t-/, '')}`);
+                        logger.info(`custom query ${origQuery} yielded ${newTweets.length} new tweets, next query will follow tweet ${entries[1].entryId.replace(/^sq-I-t-/, '')}`);
+                    }
+                    else {
+                        logger.info(`custom query ${origQuery} ended after yielding ${newTweets.length} new tweets, last entry was tweet ${entries[0].entryId.replace(/^sq-I-t-/, '')}`);
+                    }
                     newTweets.forEach(tweet => Object.assign(tweet, {
                         user: userDict[tweet.user_id_str],
                     }));
                     tweets.push(...newTweets);
                 }
-                if (!newTweets.length || tweets.length >= conf.count) {
+                if (!bottomCursor || !newTweets.length || tweets.length >= conf.count) {
                     logger.info(`custom query ${origQuery} finished successfully, ${tweets.length} tweets have been fetched`);
                     return tweets.slice(0, conf.count);
                 }

+ 15 - 7
src/twitter.ts

@@ -152,18 +152,26 @@ export default class {
           entries.sort(
             (e1, e2) => Number(e1.sortIndex) - Number(e2.sortIndex)
           )
-          if (AdaptiveSearch.isCursor(entries[0])) bottomCursor = entries[0];
-          logger.info(`custom query ${origQuery} yielded ${
-            newTweets.length
-          } new tweets, next query will follow tweet ${
-            entries[1].entryId.replace(/^sq-I-t-/, '')
-          }`);
+          if (AdaptiveSearch.isCursor(entries[0])) {
+            bottomCursor = entries[0];
+            logger.info(`custom query ${origQuery} yielded ${
+              newTweets.length
+            } new tweets, next query will follow tweet ${
+              entries[1].entryId.replace(/^sq-I-t-/, '')
+            }`);
+          } else {
+            logger.info(`custom query ${origQuery} ended after yielding ${
+              newTweets.length
+            } new tweets, last entry was tweet ${
+              entries[0].entryId.replace(/^sq-I-t-/, '')
+            }`);
+          }
           newTweets.forEach(tweet => Object.assign(tweet, {
             user: userDict[tweet.user_id_str],
           }));
           tweets.push(...newTweets);
         }
-        if (!newTweets.length || tweets.length >= conf.count) {
+        if (!bottomCursor || !newTweets.length || tweets.length >= conf.count) {
           logger.info(`custom query ${origQuery} finished successfully, ${
             tweets.length
           } tweets have been fetched`);