@@ -6,35 +6,43 @@ const got = require('got')
6
6
7
7
// twitter guest web token
8
8
// https://github.com/soimort/you-get/blob/da8c982608c9308765e0960e08fc28cccb74b215/src/you_get/extractors/twitter.py#L72
9
- const TWITTER_BEARER_TOKEN = 'Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA'
9
+ // https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/twitter.py#L235
10
+ const TWITTER_BEARER_TOKEN =
11
+ 'Bearer AAAAAAAAAAAAAAAAAAAAAPYXBAAAAAAACLXUNDekMxqa8h%2F40K4moUkGsoc%3DTYfbDKbT3jJPCEVnMYqilB28NHfOPqkca3qaAxGfsyKCs0wRbw'
10
12
11
13
const TWITTER_HOSTNAMES = [ 'twitter.com' , 'mobile.twitter.com' ]
12
14
13
15
const isTwitterUrl = url => TWITTER_HOSTNAMES . includes ( new URL ( url ) . hostname )
14
16
15
17
const getTweetId = url => url . split ( '/' ) . reverse ( ) [ 0 ]
16
18
17
- const getGuestToken = async ( ) => {
18
- const { body } = await got . post ( 'https://api.twitter.com/1.1/guest/activate.json' , {
19
- headers : { authorization : TWITTER_BEARER_TOKEN } ,
20
- json : true
21
- } )
19
+ const getGuestToken = async url => {
20
+ const { body } = await got . post (
21
+ 'https://api.twitter.com/1.1/guest/activate.json' ,
22
+ {
23
+ headers : { Authorization : TWITTER_BEARER_TOKEN , Referer : url } ,
24
+ json : true
25
+ }
26
+ )
22
27
return body . guest_token
23
28
}
24
29
25
30
const getTwitterVideoInfo = async url => {
26
31
const tweetId = getTweetId ( url )
32
+ console . log ( 'tweetId' , tweetId )
27
33
const apiUrl = `https://api.twitter.com/2/timeline/conversation/${ tweetId } .json?tweet_mode=extended`
28
34
const { body } = await got ( apiUrl , {
29
35
json : true ,
30
36
headers : {
31
37
authorization : TWITTER_BEARER_TOKEN ,
32
- 'x-guest-token' : await getGuestToken ( )
38
+ 'x-guest-token' : await getGuestToken ( url )
33
39
}
34
40
} )
35
41
36
42
return chain ( body )
37
- . get ( `globalObjects.tweets.${ tweetId } .extended_entities.media.0.video_info.variants` )
43
+ . get (
44
+ `globalObjects.tweets.${ tweetId } .extended_entities.media.0.video_info.variants`
45
+ )
38
46
. orderBy ( 'bitrate' , 'asc' )
39
47
. value ( )
40
48
}
0 commit comments