plugin_ptr.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package core
  2. import "regexp"
  3. func getPaterner(uuid, path string) (string, string, bool) {
  4. var ss = regexp.MustCompile(`\S+`).FindAllString(path, -1)
  5. path = ss[0]
  6. var data []byte
  7. var address = ""
  8. ls := plugin_list
  9. for _, f := range ls {
  10. if f.UUID == uuid {
  11. address = f.Address
  12. break
  13. }
  14. }
  15. for _, f := range ls { //同源
  16. if f.Address == address && (f.Title == path || f.UUID == path) {
  17. data = plugins.GetBytes(f.UUID)
  18. if data != nil {
  19. return string(data), f.UUID, true //本地取
  20. }
  21. data = fetchScript(f.Address, f.UUID)
  22. if data == nil {
  23. console.Warn("无法从订阅源获取 %s 的协作脚本 %s ", GetScriptNameByUUID(uuid), path)
  24. return "", f.UUID, false
  25. } else {
  26. console.Log("已从订阅源获取 %s 的协作脚本 %s", GetScriptNameByUUID(uuid), path)
  27. plugins.Set(f.UUID, string(data))
  28. return string(data), f.UUID, true
  29. }
  30. }
  31. }
  32. for _, f := range ls { //异源
  33. if f.Address != address && (f.Title == path || f.UUID == path) {
  34. data = plugins.GetBytes(f.UUID)
  35. if data != nil {
  36. return string(data), f.UUID, true //本地取
  37. }
  38. data = fetchScript(f.Address, f.UUID)
  39. if data == nil {
  40. console.Warn("无法从订阅源获取 %s 的协作脚本 %s ", GetScriptNameByUUID(uuid), path)
  41. return "", f.UUID, false
  42. } else {
  43. console.Log("已从订阅源获取 %s 的协作脚本 %s", GetScriptNameByUUID(uuid), path)
  44. plugins.Set(f.UUID, string(data))
  45. return string(data), f.UUID, true
  46. }
  47. }
  48. }
  49. return "", "", false
  50. }