前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Chrome扩展 实现自动页面Video下载 demo

Chrome扩展 实现自动页面Video下载 demo

原创
作者头像
4cos90
发布于 2022-02-08 16:37:44
发布于 2022-02-08 16:37:44
1.4K00
代码可运行
举报
文章被收录于专栏:随想随想
运行总次数:0
代码可运行

最近在看一些浏览器相关的知识,然后就看到了chrome扩展开发文档,觉得很有意思,就按照文档做了一个最简单的demo实现页面上video的自动下载。

参考文档有两个:

http://chrome.cenchy.com/getstarted.html --中文文档,缺点是内容比较老旧,

https://developer.chrome.com/docs/extensions/mv3/getstarted/ --官方文档,内容是最新的,但是不知道啥原因经常上不去。。

开始构建一个最简单的demo。

首先新建一个文件夹作为扩展的根目录,我以chromeEx为例:

根目录
根目录

然后新建扩展配置文件:manifest.json

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
 "name": "Video Download Demo",
 "description": "下载网页中的video",
 "version": "1.0",
 "manifest_version": 3,
 "background": {
 "service_worker": "background.js"
    },
 "permissions": [
 "storage",
 "notifications",
 "activeTab",
 "scripting"
    ],
 "action": {
 "default_icon": "icon.png",
 "default_title": "Download"
    },
 "content_scripts": [{
 "matches": ["<all_urls>"],
 "js": ["content-script.js"],
 "run_at": "document_start"
    }]
}
chrome扩展详细信息
chrome扩展详细信息
在浏览器中的位置
在浏览器中的位置

简单说明下json中的配置:

前三行是扩展名字,描述,版本号,会在扩展详细信息中展示给用户,

manifest_version是扩展的配置项文件的版本。这个还是比较重要的,不同的配置项版本,配置项文件有略微的差别,在中文开发文档中给的例子还是1,但是最新的官方已经是3了。这个在配置时还是要注意下保持版本一致的。

background中引入的 是一个常驻的页面,它的生命周期是插件中所有类型页面中最长的,它随着浏览器的打开而打开,随着浏览器的关闭而关闭,所以通常把需要一直运行的、启动就运行的、全局的代码放在background里面。

background的权限非常高,几乎可以调用所有的Chrome扩展API(除了devtools),而且它可以无限制跨域,也就是可以跨域访问任何网站而无需要求对方设置cors。

permissions是指本扩展需要使用到的权限。

action中default_icon是指本扩展在浏览器中的图标,我这里用了一个和我头像一样的png,default_title是浏览器中扩展图标的title。如果不配置这个的话title会显示name。

content_scripts就是本次开发的重点了,他是Chrome插件中向页面注入脚本的一种形式(虽然名为script,其实还可以包括css的),借助content_scripts我们可以实现通过配置的方式轻松向指定页面注入JS和CSS。matches是指需要注入的网页,all_urls表示所有网页均注入,js即注入的js在根目录的路径,run_at是指注入的js执行的时机,有三个可选值: "document_start", "document_end", or "document_idle",最后一个表示页面空闲时,默认document_idle。

当然还有popup即鼠标点击扩展时弹出的页面,因为这次没用到,所以我没把这个配置项加进去。

background.js代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chrome.runtime.onInstalled.addListener(() => {
    chrome.notifications.create(null, {
        type: 'basic',
        iconUrl: 'icon.png',
        title: 'demo',
        message: '下载插件已启动'
    });
});

当插件启动时,给桌面发送一个通知,下载插件已启动。

content_scripts代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.addEventListener('DOMContentLoaded', function() {
    let ele = document.getElementsByTagName("video");
    for (let i = 0; i < ele.length; i++) {
        let uri = ele[i].src;
        console.log(uri);
        let downuri = uri.split('?')[0]
        let strarray = downuri.split(".");
        let srctype = strarray[strarray.length - 1];
        downloadUrlFile(downuri, document.title + "." + srctype);
    }
});

function downloadUrlFile(url, fileName) {
    const url2 = url.replace(/\\/g, '/');
    const xhr = new XMLHttpRequest();
    xhr.open('GET', url2, true);
    xhr.responseType = 'blob';
    xhr.onload = () => {
        if (xhr.status === 200) {
            // 获取文件blob数据并保存
            saveAs(xhr.response, fileName);
        }
    };
    xhr.send();
}

function saveAs(data, name) {
    const urlObject = window.URL || window.webkitURL || window;
    const export_blob = new Blob([data]);
    //createElementNS() 方法可创建带有指定命名空间的元素节点。
    //此方法可返回一个 Element 对象。
    const save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
    save_link.href = urlObject.createObjectURL(export_blob);
    save_link.download = name;
    save_link.click();
}

监听dom加载完成事件,然后从中找到video标签,获取url下载。(这个是小意思了,很简单)

加载扩展:

demo做完了就可以加载到chrome中,在chrome中找到扩展程序(chrome://extensions/),打开开发者模式,加载已解压的扩展程序,然后选择我们扩展的根目录即可。

添加扩展
添加扩展

加载成功后执行了background.js,弹出桌面通知。

启动成功
启动成功

在百度上随便搜索一个视频,打开包含视频的页面。

点进一个含有video的页面,自动开始下载页面中的video
点进一个含有video的页面,自动开始下载页面中的video
下载成功
下载成功

大功告成咯。

chrome扩展开发整体来说还是非常方便的,也不需要什么特殊的ide,只要根据文档放入一个配置文件,其他的基本上就是h5那一套开发。从看到文档到整个开发完成也就一两个小时的时间。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
手机游戏大热风潮下的游戏开发公司生死破冰路
8月的中国国际数码互动娱乐展览会依旧热闹,但游戏开发行业却感受到了一丝丝凉意。与会的多位游戏开发公司高层均坦言虽然游戏开发行业仍在在快速发展,但已经面临一些瓶颈,2018年已经成为游戏开发行业的“三荒年”(产品荒、流量荒、用户荒),连续多年高速发展的游戏开发产业不断寻求“破冰之路”。
西安弈聪软件公司
2018/08/15
4320
手机游戏开发行业饿殍千里,有创意有理想游戏开发公司能坚持多久?
对很多玩家而言国内手机游戏开发产业的崛起有点成为笑谈,国内移动平台大多数游戏千篇一律,其中难得经典的手机游戏大部分出自国外游戏开发公司之手,而更多的国内游戏开发公司们似乎只会一拥而上的照搬照抄。
西安弈聪软件公司
2018/08/15
4750
西安游戏开发行业乱象:水深鱼多无良游戏开发公司鱼龙混杂
昨天看到一篇文章说是西安某游戏开发公司通过不当手段蒙骗客户赚取暴利。许多人已经上当受骗,更可怕的还有更多的人在游戏开发公司销售人员甜蜜的话语中憧憬着未来的成功之路,殊不知前方只有陷阱,一旦落入就血本无归。文章虽未点名道姓但是评论区的观众已经坐不住了:从这些评论中我们可以看到,现在西安游戏开发市场鱼龙混杂,许多无良游戏开发公司趁机混入市场,其中不乏一些知名软件企业。
西安弈聪软件公司
2018/08/15
6050
2022年游戏出海行业研究报告
游戏出海是指由中国大陆地区游戏公司研发的移动游戏在海外游戏市场(包含港澳及中国台湾地区市场)发行的现象,游戏特点、元素等内容可能有所不同,但核心玩法大多一致。随着中国游戏企业对移动游戏玩法的创新以及游戏体验、界面的优化,中国移动游戏质量不断提升,出海步伐逐步加快。
资产信息网
2022/03/24
1.6K0
2022年游戏出海行业研究报告
响铃:中国手游年中盘点大势:市场饱和,增长放缓
伴随智能手机的流行普及,手游一度成为一夜暴富的行业,创造出无数财富神话,也曾经历一段“野蛮生长”的时期,那时候一个10-20人的团队蜗居在一个狭小的出租屋,耗上两年时间,公司年收入就能轻松过亿,团队规模也可扩张到数千人。但时至今日,手游市场恐怕不再是风光无限,更多是跌跌撞撞,准备纷纷屯粮安寨,迎接“寒冬”到来。用户人口红利渐失,公司营收放缓、资本变得冷静开始成为这个时期的新常态。接下来,该何去何从?
曾响铃
2018/08/20
3800
盗版破解严重,游戏开发公司在混乱中不断寻找新突破口
大家都知道,国内的游戏版权审查制度一直都很严格,因为审查才让一些不良游戏开发公司盗版破解。一款游戏开发创作从立案,到研发最后上市,这中间要耗费巨大的人力和财力!成功或失败,依然需要经历过市场的考验。游戏开发公司应该如何进行下去,也是需要市场的认可和资本的投入。而与盗版者相比之下,根本不需要考虑任何的环节,只需要知道什么火就破解什么这样的道理。这里就会出现一个问题,我破解,但我不收费,算不算偷?我破解的游戏,也是我花钱买过来的,我做的只是资源共享。
西安弈聪软件公司
2018/08/18
6110
游戏出海 如何攻陷首选阵地东南亚
说到东南亚,有的不只是火热美女与民风。因为审美类似,东南亚一直都是中国游戏出海的首选。在网游时代,中国游戏出口东南亚已是常事,在手游时代,出海已经成为国内游戏厂商寻求突围的重要手段之一。 东南亚总共有11个国家,中国游戏出口在泰国、印度尼西亚、菲律宾、越南、马来西亚、新加坡6个国家占比高达99%。 流量、内容、支付、运营、用户留存是影响一个游戏成功与否的五个元素。因此,我们今天就从这五个方面入手,解读游戏领域的东南亚市场。 流量维谷:人挺多,网一般,手机红利刚刚开始 这些国家的电信基础建设相当于中国5~10
腾讯Bugly
2018/03/22
2.6K0
游戏出海  如何攻陷首选阵地东南亚
AIGC大模型时代下,该如何应用高性能计算PC集群打造游戏开发新模式?
ACT、SIM、ETC、FTG、RAC、RTS、STG、AVG、RPG、FPS、MUG、PUZ、SLG、SPG等游戏类型,需要高性能的计算机来支持运行。为了满足这些游戏的需求,国内服务器厂商不断推出新的产品,采用液冷散热技术,大模型构建和PC集群一体机等技术来提高计算机的性能和稳定性。这些技术的应用,使得玩家们能够更加流畅地体验游戏,享受到更加真实的游戏画面和音效。同时,人工智能技术的应用也为游戏带来了更加智能化的体验,例如ChatGPT等智能聊天机器人,为玩家提供更加个性化的游戏体验。
液冷服务器
2023/04/13
4890
AIGC大模型时代下,该如何应用高性能计算PC集群打造游戏开发新模式?
聚焦游戏出海:腾讯云Game-Tech沙龙深圳站完美落幕
1月17日,腾讯云Game-Tech游戏开发者技术沙龙“游戏出海”专场在深圳举办,来自腾讯云、白鲸出海、腾讯游戏、乐逗游戏及AppsFlyer的5位专家,一起为现场数百位游戏从业者多角度解读了当前游戏出海的行业动态、技术难点以及未来趋势。
腾讯游戏云
2019/01/24
1.5K0
校准产品质量,把控出海航向,腾讯WeTest《2019中国移动游戏质量白皮书》正式开放预约
每当步入一个新的年份,温故知新是我们常常做的事。对于不少游戏人来说,刚过去的2019年是一个新起点,也是一个修养生息、应对挑战的年份。
WeTest质量开放平台团队
2020/01/03
4500
校准产品质量,把控出海航向,腾讯WeTest《2019中国移动游戏质量白皮书》正式开放预约
富游戏,穷VR
ChinaJoy某游戏的电竞现场,人山人海,但观者却屏气凝神。透过照片,我们能明显感受到,所有人的注意力都被场上的竞技赛所抓牢。
镁客网
2018/08/16
3470
富游戏,穷VR
获谷歌爱奇艺投资,触手会改变游戏直播市场格局吗?
正如我此前所言,2018年是直播行业的分水岭,“百播大战”结束,直播市场正在向头部集中,特别是游戏直播市场,这个现象更加明显。在虎牙直播IPO后,种种迹象显示游戏直播市场竞争已接近尾声,不过,现在看来,游戏直播市场依然存在变数。
罗超频道
2018/12/17
5830
复盘虎牙出海路:不玩票,不孤军深入,对的时机做对的事
6月6日,虎牙旗下海外游戏直播平台Nimo TV宣布正式进军巴西,此举表明虎牙加速海外版图扩张的步伐, 2019年是游戏直播出海的战略窗口期,跑马圈地、势力划分和胜负成败就看这一年。
罗超频道
2019/06/18
6640
复盘虎牙出海路:不玩票,不孤军深入,对的时机做对的事
网易智企逆势进场,游戏工业化有了新可能
2019年有1579款游戏通过了版号的审批,2020年过审数量降低到1405款,2021年数字被腰斩到了755款,2022年已经过半,可通过审批的游戏刚刚过百。“版号”就像是一只无形的手,牢牢扼住了游戏行业的咽喉。
Alter聊科技
2023/01/13
3240
移动游戏行业收入200亿背后的故事
进入2015年,移动游戏的用户增长规模开始放缓,但上半年的行业整体收入高达230亿。在人口红利逐渐消退的前提下,仍然能够达到如此规模收入的原因是什么?《TalkingData - 2015上半年移动游
灯塔大数据
2018/04/10
1.3K0
移动游戏行业收入200亿背后的故事
他山之石:2016年创业者怎么做好一款手游?
文/王新喜    对于游戏创业者而言,2016年可能是颇为艰难的一年,国内游戏行业整体变局表现为增长速度变缓以及市场格局已经固化。我们看到,手游行业整体仍在增长,但增速明显放缓,数据显示手游市场的增长速度目前已不足3%,这与手游高速增长的2013年相比,已经严重下滑。 游戏市场呈现二八格局:提升游戏品质、留住用户成厂商重要增长机会 但国内游戏市场是否已经真的趋于饱和?下一个增长点会在哪里?根据相关数据显示,当前游戏市场呈现“二八定律”的市场格局,以2015年第三季度为例,排名前十的企业所占份额高达81%,其
WeTest质量开放平台团队
2023/05/04
5470
他山之石:2016年创业者怎么做好一款手游?
网易,继续奋战游戏赛道
近日,网易发布了2021年6月30日止第二季度财务业绩公告及中期报告。财务显示,网易上半年总营收410亿元,归母净利润79.8亿元;其中第二季度净收入为205亿元,同比增加了12.9%,毛利率虽同比增加14.3%至112亿元,但归母净利润仅有35.42亿元,较上年同期下滑了21.95%。
金融外参
2021/09/26
3790
游戏出海首破千亿,进击路上如何防范DDoS风险?
近年来,随着国内游戏市场竞争日益激烈,游戏发行商纷纷将目光瞄准了空间更为广阔的海外市场,游戏出海俨然已经成为了中国文化内容出海的主力军。
腾讯安全
2021/02/05
6590
游戏出海首破千亿,进击路上如何防范DDoS风险?
无限游戏:虎牙的野心和底牌
2018年是直播行业的分水岭,“百播大战”结束,直播市场正在向头部集中,特别是游戏直播市场,这个现象更明显。种种迹象表明,上市后的虎牙直播,已成为直播行业典型的无限游戏玩家。
罗超频道
2018/07/23
4270
无限游戏:虎牙的野心和底牌
营收下滑,腾讯游戏还能保持「王者」地位吗?
国内游戏市场,面临发展瓶颈。腾讯游戏这个「行业巨头」也未能幸免。 最新财报数据显示,二季度腾讯游戏本土与海外市场总营收约为425亿,相比去年同期(营收430亿)和今年一季度(营收436亿)均出现下滑。在过去很多年里,游戏业务一直被视为腾讯的“现金奶牛”,如今,这头“现金奶牛”已经显露疲态。 时间再拉长一点,今年上半年,腾讯游戏总营收下降了1%。王牌游戏《王者荣耀》收入下降,也引发了市场担忧——营收下滑,腾讯游戏还能保持「王者」地位吗? 1 游戏行业 「寒意重重」 腾讯游戏收入同比、环比下降,投射出整个行业
曾响铃
2022/08/29
7210
营收下滑,腾讯游戏还能保持「王者」地位吗?
推荐阅读
相关推荐
手机游戏大热风潮下的游戏开发公司生死破冰路
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档