Skip to content
This repository has been archived by the owner on Dec 24, 2024. It is now read-only.

下载路径中的变量

Haryfw edited this page Jul 24, 2018 · 2 revisions

下载路径中的变量

包含变量的路径

${XXX} 的形式来使用某一个变量名(注意, 它们不是es6中的模板字符串, 只是长的一样)

比如 ${today} 被替换成 2018-01-01 ; ${host} 被替换成 example.com

变量列表

变量名 说明
year 年份, 格式: YYYY
month 月份, 格式: MM
date 一个月中天数, 格式:DD
today 上面三个值的组合, 格式: YYYY-MM-DD
host 网站域名,如: example.com
pagetitle 网站标题

注意: 路径的末尾会自动追加文件名(filename)

例子:

输入 转换后
${today} 下载路径/2018-01-01/fillename
picture/${host}/ 下载路径/picture/example.com/filename
data/${today}@ 下载路径/data/2018-01-01@fillename

JS函数

自定义目录的最后一个输入项是用根据JS函数的返回值决定最终的下载路径

你只能在下载图片时使用这个特性

输入的内容应该是一段JS代码, 而且是一个普通匿名函数, 没有参数被传入

(这段代码会直接插入到页面中,所以你可以任意使用windows或location 这些全局变量)

function(){
  return something;
}

除了上面提到的列表里的变量,你还可以使用下面额外补充的变量

变量名 说明
index 在当前页面的下载次数, 格式: DDDD. 刷新页面后被清零
url 图像的链接地址
filename 文件名

当这个函数返回的类型是 string 时,它的值就是 options.filename 的值。这意味着你需要手动地指定文件名,不过扩展会处理选项的其他参数

当返回的类型是 object 时,就会直接传给 browser.downloads.download() 作为参数进行调用。

你可以查阅这篇 MDN文档 中对 browser.downloads.download 参数的介绍

比如希望下载路径是 “域名/文件名” 那么代码可以写成这样(当然也可以用 es6 模板字符串语法)

function(){
  return host + '/' + filename;
}

又或者根据网站把图片保存到不同的目录中

function(){
  if(host=='i.imgur.com') return 'imgur' + '/' + filename;
  if(host.endsWith('pixiv.net')) return 'acg' + '/' + filename;
  return 'interesting'+ '/'+ filename;
}