Tampermonkey Meta

油猴头部信息解析工具

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.gf.qytechs.cn/scripts/440136/1019188/Tampermonkey%20Meta.js

  1. /**
  2. * 获取油猴头设置: @设置名=设置值
  3. *
  4. * @exmaple
  5. *
  6. *
  7. *
  8. *
  9. *
  10.  
  11. ```js
  12.  
  13. // ==UserScript==
  14. // @number 1
  15. // @string this is string
  16. // @boolean true
  17. // @object.somekey.key1 1
  18. // @object.somekey.key2 this is object
  19. // ==/UserScript==
  20.  
  21.  
  22. const metas = GM_meta(GM_info.scriptMetaStr," ")
  23.  
  24. console.log(metas);
  25. // {number:1, string:"this is string", boolean: true, object:{someKey:{key1:1,key2:"this is object"}}}
  26.  
  27. ```
  28.  
  29.  
  30. * @params metaString 油猴头,通常使用 GM_info.scriptMetaStr 获取
  31. * @params separator 分隔符,默认一个空格 : ' '
  32. */
  33. function GM_meta(metaString,separator = " "){
  34. const object = {}
  35. const regexp = RegExp(`// *@(.*?)${separator}(.*)`)
  36.  
  37.  
  38. let data = metaString.match(RegExp(regexp,"g"))
  39. // 去除空格
  40. data
  41. .map(item=>item.trim())
  42. // 转换成 key value 形式
  43. .map(item=>{
  44. const match = item.match(regexp)
  45. return { key: match[1].trim(), value: match[2].trim() }
  46. })
  47. // 类型转换
  48. .map(item=>{
  49. item.value =
  50. Number(item.value) ? Number(item.value)
  51. :item.value === '开启' ? true
  52. :item.value === '关闭' ? false
  53. :String(item.value)
  54. return item
  55. })
  56. // 生成对象
  57. .forEach(item=>{
  58. // 使用 `.` 进行深度对象创建
  59. if(item.key.includes('.')){
  60. const keys = item.key.split(".")
  61. const endKey = keys.pop()
  62. let obj = undefined
  63. for(const key of keys){
  64. let target = obj || object
  65. if(target[key] === undefined){
  66. target[key] = {}
  67. }
  68. obj = target[key]
  69. }
  70. obj[endKey] = item.value
  71. }else{
  72. object[item.key] = item.value
  73. }
  74.  
  75.  
  76. })
  77.  
  78. return object
  79. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址