python4
V2EX  ›  Node.js

迫于看片,用 puppeteer 写了一个下载(其实只是获取链接)twitter 视频的脚本

  •  
  •   python4 · Sep 8, 2021 · 1554 views
    This topic created in 1740 days ago, the information mentioned may be changed or developed.

    代码

    // get_url.js
    
    const process = require('process');
    const puppeteer = require('puppeteer');
    //npm install puppeteer
    
    
    //访问代理,如果是在国内跑,一般要加上代理
    const PROXY = "socks5://127.0.0.1:1080"
    //页面加载后的等待时间,根据网速来设定,如果网速慢,就多等待一会
    const SLEEP = 5000
    
    //延时函数(此延时非彼延时!)
    function sleep(delay) {
            return new Promise((resolve, reject) => {
                    setTimeout(() => {
                            try {
                                    resolve(1)
                            } catch (e) {
                                    reject(0)
                            }
                    }, delay)
            })
    }
    
    
    async function view(url,proxy=null){
        console.log(`URL:\t${url}`)
        if(proxy)
            console.log(`PROXY:\t${proxy}`)
    
        const browser = await puppeteer.launch({
            headless: true,
            ignoreHTTPSErrors: true,
            defaultViewport: {width: 1920, height: 1080},
            args: [`--proxy-server=${proxy}`,'--no-sandbox']
        });
    
        const page = await browser.newPage()
        await page.setViewport({width: 1920, height: 1080})
    
        // set page event hook
        page.on('request', request => {
            if ( request.resourceType() == "media" && request.url().startsWith("https://video.twimg.com/") )
                console.log( "REQUEST\t" + request.url() )
        });
    
        await page.goto(url)
        await page.click('.r-1ndi9ce > div:nth-child(1) > div:nth-child(1) > span:nth-child(1) > span:nth-child(1)');
        await sleep(SLEEP)
        await page.screenshot({ path: 'debug.png' })
        await browser.close()
    }
    
    (async () => {
        let proxy = PROXY
        let arguments = process.argv.splice(2)
        let url = arguments[0]
        await view( url,proxy )
    })();
    
    

    用法

    node get_url.js TWEETS_URL
    

    测试用例:

    node get_url.js https://twitter.com/lyf112211/status/1433657754162323457?s=05
    

    如果觉得对你有帮助,希望去知乎帮点个赞。

    https://zhuanlan.zhihu.com/p/408372705

    mooniitt
        1
    mooniitt  
       Sep 9, 2021
    真的是片!
    python4
        2
    python4  
    OP
       Sep 13, 2021
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3551 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 11:02 · PVG 19:02 · LAX 04:02 · JFK 07:02
    ♥ Do have faith in what you're doing.