您当前的位置:首页 >> 工业物联
工业物联

我在产品上线前不细心删除了7 TB的视频

发布时间:2025-08-25

tep=100" our_ids = [] for i in range(10): page = i res = requests.get(url) videos = res.json['list'] ids = [video['vimeoId'] for video in videos] our_ids += ids

next = '/me?page=1'vimeo_ids = []while next is not None:res = requests.get(f'{next}')res = res.jsonvideos = res['data']ids = [video['id'] for video in videos]vimeo_ids += idsnext = res['pagination']['next']

for id in vimeo_ids:if id not in our_ids:requests.delete(f'{id}')

大家应有一看就真的错在哪了,今日我也看得出来。但起初我核对了好几遍,觉得它不会任何关键问题。这那时候剧透一下答案:

url = f"{page}Bellstep=100our_ids = []for i in range(10):page = ires = requests.get(url)

我起初早就习惯了 React,所以天然应属 url 就会在主页表达式变更后随即刷最初,但无论如何一无所知。 所以在用到这个开发人员再次,所有不存在于我们统计检索第一页那时候的录像都就会被从 Vimeo 当中更正。

这那时候还有另一个关键问题:我试验了文档,并用到了以上范例当中的这个误判循环。

我还动手了几次手动试验,但试验范围就只有统计检索上的第一页。哎,这本该很较易避免的一系列误判。

page = 0url = f"{page}Bellstep=100our_ids = []for i in range(10):page = ires = requests.get(url)videos = res.json['list']ids = [video['vimeoId'] for video in videos]for id in ids:res = requests.get(f'{id}')if res.status_code != 200:print(f"There was something wrong. You have deleted a wrong video -> {id}"

善后工作

好消息是,Google Drive 文件夹那时候还有一份录像硬盘,而且关的信息也好好存放在统计检索内。坏消息是,这时候时长早就离后下周日,而我们最晚也得在星期二早上就把录像还原回去。起初美国公司的互联带宽大约是每秒 30 MB,浏览统计数据存量在 8 TB 差不多。不现实……我们得就让点别的切实。

我就让到的第一个发放商就是用 Google Drive API。我们这边有全部浏览到统计检索的录像codice_,所以我迅速写就下不限文档:

page = 0file_names = get_our_filenames(page) # This time without the mistake in the for loopfor name in file_names:download_and_save_from_drive(name)upload_to_vimeo(name)

这意味着我可以用相异主页多次运营开发人员,从而在相异互联上“并行简化”整个过程。(我也就让过换个高速互联环境,但一是不会比较快捷的提速种系统、二是出站每秒费用过高。)缺点还是不理就让,算是就算是高密度通信也得占满几周 4 天,必先出一丁点关键问题就要激时。于是我又就让到了一个切实:

另一个发放商

能很难并不需要把录像从 Google Drive 浏览到 Vimeo?我核对了一下浏览主页,并挖掘出毕竟可以这么操作方法。只是还有个小关键问题:它只大力支持手动操作方法,无法用到 API 自动优简化,但优势是浏览几乎可以即时已完已成。毫无疑问还有更好的切实,但我起初真的就让了,所以我满心欢喜地启动了 Playwright。

Playwright 是一款自动 E2E 工具,可用于模拟Gmail交互。基本来讲,它可以按我们编程的指引页面网页上的相异前面。有它在,不就把人给看已成了?

请注意来看文档:(我那时候用 Playwright、而且时长仓卒,所以写就得毕竟纤细,请大家后悔)

test('Videos', async ({ page }) => {// 登录进到vimeoawait page.goto('');await page.fill('input[]','xxx');await page.fill('input[]', 'xxx');await page.click('input[type=submit]');

// 页面Drive手柄,然后登录进到 Google Drive// 我们必需将其作为iframe来管理工作const [popup] = await Promise.all([page.waitForEvent('popup'),page.click('text=Drive'),]);await popup.fill('input[type="email"]', 'xxx');await popup.click('button:has-text("Next")');await popup.fill('input[type="password"]', 'xxx');await popup.click('button:has-text("Next")');await timeout(5000);

// 对于我们浏览此前就早就获得的全部codice_for (let i = 0; i < videos.length; i++) {if (i> 0) {page.click('text=Drive');await timeout(5000);}let found = false;while(!found) {for (let frame of page.frames) {const searchbox = await frame.$('input[aria-]');const button = await frame.$('div[]');if (searchbox) {await temp.fill(videos[i]);await button.click;}}}await timeout(5000);

// 每当搜索时,Google都就会重最初生已成iframe,所以我们就得重最初搜索for (let frame of page.frames) {const temp = await frame.$('table[role="listbox"] div[tabindex="0"]');if (temp) {const select = await frame.$('div[id="picker:ap:2"]');await select.click;}}await page.goto('');}});

这段文档毕竟不怎么样(相当多是其当中用激时来消除 Playwright 当中.click 的大部分),但它还是造就了符合短期内的缺点,只有一个意之外:我不了能让它正确地页面查找到的录像,而只是点到了“Select”手柄上。即使如此,我也不真的这个关键问题该怎么消除。所以就算是用上这段文档,我也得每 10 秒就手动工具栏一次来选择录像,这样才能让程序停滞运营。我坐在屏幕此前点了 10 分钟,然后后下始猜测自己这是在搞得什么鬼……

我订阅了一个自动页面机内(xclicker),并把它设置已成每 5 秒页面一次。已成功!每段录像大约耗时 13 秒,一共 1000 段录像,用了 4 个时长所有录像就都浏览已完已成了。今日只剩必先此前一步:它们都有了最初的“vimeoIds”,所以我得离后下美国公司这边的统计检索,用正确地的 Id 值更最初所有录像。但这次要简便得多,用跟此此前相同的 Python 开发人员就能轻松已完已成。

必先此前,所有录像浏览已完已成,电子产品必先次能急于完全免费了。

总 结

这事让我学到了什么?首必先就是在执行破坏性操作方法此此前,必先适当进到行试验。也渴望 Vimeo 和之节省费用商也能从当中吸取教训吧,虽然我猜测他们根本就让。(应有就让,即使如此这种浏览方法还是只大力支持手动,就让就让这是为什么!)

译文客户端:

英伟达必先次后下源GPU内核模块文档,网友:难以置信

知网被备案深入调查;十六进制脉搏已成立抖音集团,或在港上市;钉钉被朝霞裁员30%;杭州上年存款激20万元 |Q资讯

数字简化转型建设项目动手了多年,主架构师都绝望了:当初就不不该用之节省费用!

Flutter 3.0年末发布:牢固大力支持6大平台,十六进制脉搏是主要Gmail

社区活动推荐

点个在看少个 bug👇

苏州白癜风专科医院哪好
天津看妇科去哪家医院最好
广州癫痫专科医院
南京男科专科医院有哪些
北京看男科医院哪家最好

上一篇: iPhone 14 被厂商曝光,一定会要支持 Pencil?

下一篇: TCL鸿蒙3.0支持名单曝光:6年前的老机型也能升级

友情链接