首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用正则表达式在TAMPER猴子中自动下载mp3

使用正则表达式在TAMPER猴子中自动下载mp3
EN

Stack Overflow用户
提问于 2018-11-18 12:01:50
回答 1查看 704关注 0票数 0

我想要自动下载mp3时,访问一个特定的网站使用坦珀猴和正则表达式的问题是,当我使用正则表达式它无法下载的mp3,但当我使用"var arg“的正常网址,它是自动下载的mp3。我想在访问网站时自动下载mp3,并将mp3保存为与网站上的文件名相同的原始文件名。

下面是示例url:http://188.138.xx.xxx/mp3/12/45/song_mp3_6612.mp3

下面是我的示例javascript

代码语言:javascript
复制
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @include      http://*/mp3*
// @grant        GM_download
// ==/UserScript==

var regex = /^(http:\/\/)(.*)(\/mp3\/.*\/)(.*)$/i;
var arg = { url: regex,
            name: "get the filename from orignal filename in regex.mp3"
          };

GM_download(arg);

当我使用direct而不使用正则表达式时,它可以工作。

代码语言:javascript
复制
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @include      http://*/mp3*
// @grant        GM_download
// ==/UserScript==

var arg = { url: "http://188.138.xx.xxx/mp3/12/45/song_mp3_6612.mp3",
            name: "song.mp3"
          };

GM_download(arg);

这是另一个链接示例这里是另一个链接示例:http://62.75.xxx.xx/mp3/5/7e/dj_snake_taki_taki_ft._selena_gomez_ozuna_cardi_b_mp3_17376.mp3 http://188.138.xxx.xxx/mp3/7/d1/rayvanny_ft_diamond_platnumz_mwanza_official_music_video_mp3_19403.mp3 http://188.138.xxx.xxx/mp3/b/52/bad_bunny_feat._drake_mia_video_oficial_mp3_21130.mp3

我试过那些正则表达式,但在邮猴身上找不到

代码语言:javascript
复制
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @include      http://*/mp3*
// @grant        GM_download
// ==/UserScript==
var regex = /(\bhttps?:\/\/(?:\d+\.?){4}\/mp3(?:\/[a-z0-9]+)\/[a-z0-9]+\/[.\w+-]+?\.mp3\b)/;
var arg = { url: regex,
            name: "filename.mp3"
          };

GM_download(arg);

下面是html元素

代码语言:javascript
复制
<html>
<head>
<meta name="viewport" content="width=device-width">
</head>
<body style="margin: 0px;">
<video controls="" autoplay="" name="media">
<source src="http://188.138.xxx.xxx/mp3/b/52/bad_bunny_feat._drake_mia_video_oficial_mp3_21130.mp3" type="audio/mpeg">
</video>
</body>
</html>

EN

回答 1

Stack Overflow用户

发布于 2018-11-18 12:33:49

首先,我会走非贪婪的路线。你想要消耗尽可能少的量。您还应该专门寻找要捕获的字符串末尾的文件扩展名.mp3

然后我的下一个观察是大量的捕获组-你只需要一个捕获组就可以得到整个URL。

代码语言:javascript
复制
(https?:\/\/.*?\/mp3\/.*?\/.*?\.mp3)

请在regex101上查看

我最后观察到您使用的是字符串锚^$。在您的输入字符串中,如果您要查找的url已经紧跟在字符串^的开头和字符串$的结尾之前,那么您从一开始就不需要正则表达式。

如果您的URL始终与您提供的格式相同,那么您甚至可以将其提高一步:

代码语言:javascript
复制
(\bhttps?:\/\/(?:\d+\.?){4}\/mp3(?:\/\d+){2}\/[\w+-]+?\.mp3\b)

这将确保所有子文件夹都位于您可以看到here的文件夹\mp3\下。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53357778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档