V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
python4
V2EX  ›  Node.js

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

  •  
  •   python4 · 2021-09-08 21:49:59 +08:00 · 692 次点击
    这是一个创建于 953 天前的主题,其中的信息可能已经有所发展或是发生改变。

    代码

    // 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  
       2021-09-09 22:25:14 +08:00
    真的是片!
    python4
        2
    python4  
    OP
       2021-09-13 16:48:23 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4012 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 05:13 · PVG 13:13 · LAX 22:13 · JFK 01:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.