From b768aa15a589ba2da54267c3e4f0f60a455d90f6 Mon Sep 17 00:00:00 2001 From: Kiko Beats Date: Thu, 24 Oct 2019 17:44:28 +0200 Subject: [PATCH] fix: retry --- .../src/get-media/provider/twitter.js | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/packages/metascraper-media-provider/src/get-media/provider/twitter.js b/packages/metascraper-media-provider/src/get-media/provider/twitter.js index a46ae38d7..276912af7 100644 --- a/packages/metascraper-media-provider/src/get-media/provider/twitter.js +++ b/packages/metascraper-media-provider/src/get-media/provider/twitter.js @@ -55,54 +55,54 @@ const createGuestToken = ({ userAgent, tunnel }) => { } const createGetTwitterVideo = ({ userAgent, getGuestToken }) => { - let guestToken = getGuestToken() - return async url => { const tweetId = getTweetId(url) const apiUrl = `https://api.twitter.com/2/timeline/conversation/${tweetId}.json?tweet_mode=extended` let data - do { - const token = await guestToken + const getContent = async () => { + const token = await getGuestToken() debug( `getTwitterInfo apiUrl=${apiUrl} guestToken=${token} userAgent=${userAgent}` ) - try { - const { body } = await got(apiUrl, { - retry: 0, - json: true, - headers: { - referer: url, - 'x-guest-token': token, - origin: 'https://twitter.com', - authorization: TWITTER_BEARER_TOKEN, - 'user-agent': userAgent - } - }) + const { body } = await got(apiUrl, { + retry: 0, + json: true, + headers: { + referer: url, + 'x-guest-token': token, + origin: 'https://twitter.com', + authorization: TWITTER_BEARER_TOKEN, + 'user-agent': userAgent + } + }) - const id = get( - body, - `globalObjects.tweets.${tweetId}.retweeted_status_id_str`, - tweetId - ) + const id = get( + body, + `globalObjects.tweets.${tweetId}.retweeted_status_id_str`, + tweetId + ) - const tweetObj = get(body, `globalObjects.tweets.${id}`) + const tweetObj = get(body, `globalObjects.tweets.${id}`) - data = { - extractor_key: 'Twitter', - language: get(tweetObj, 'lang'), - formats: chain(tweetObj) - .get('extended_entities.media.0.video_info.variants') - .filter('bitrate') - .orderBy('bitrate', 'asc') - .value() - } - } catch (err) { - guestToken = pRetry(getGuestToken) + data = { + extractor_key: 'Twitter', + language: get(tweetObj, 'lang'), + formats: chain(tweetObj) + .get('extended_entities.media.0.video_info.variants') + .filter('bitrate') + .orderBy('bitrate', 'asc') + .value() + } + } + + await pRetry(getContent, { + retries: 3, + onFailedAttempt: () => { debug('getTwitterInfo rotating token') } - } while (!data) + }) return data }