bind4spider.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. // 爬虫调试绑定
  2. package main
  3. import (
  4. "log"
  5. "sort"
  6. be "spidercreator/backend"
  7. bdb "spidercreator/backend/db"
  8. )
  9. // DebugSpider 调试爬虫
  10. func (a *App) DebugSpider(url string, maxPages int, listDealy int64, trunPageDelay int64, contentDelay int64, headless bool,
  11. showImage bool, proxyServe string, threads int) {
  12. exitCh = make(chan bool, 1)
  13. currentResults.Init()
  14. if maxPages == 1 && threads == 1 {
  15. vm.RunSpider(url, maxPages, listDealy, contentDelay, headless, showImage, proxyServe, exitCh,
  16. currentSpiderConfig, currentResults)
  17. } else { //多页下载强制使用多线程模式
  18. vm.RunSpiderMulThreads(url, maxPages, listDealy, trunPageDelay, contentDelay, headless, showImage, proxyServe, threads, exitCh,
  19. currentSpiderConfig, currentResults)
  20. }
  21. }
  22. // StopDebugSpider 停止调试
  23. func (a *App) StopDebugSpider() string {
  24. defer func() {
  25. if err := recover(); err != nil {
  26. log.Println(err)
  27. }
  28. }()
  29. exitCh <- true
  30. return "ok"
  31. }
  32. // ViewResultItemAll 查看所有结果,只显示最近的50条
  33. func (a *App) ViewResultItemAll() be.ResultItems {
  34. ret := make(be.ResultItems, 0)
  35. index := 0
  36. for el := currentResults.Back(); el != nil; el = el.Prev() {
  37. if index > 50 {
  38. break
  39. }
  40. index += 1
  41. v, _ := el.Value.(*be.ResultItem)
  42. ret = append(ret, v)
  43. }
  44. return ret
  45. }
  46. // ExportEpubFile
  47. func (a *App) ExportEpubFile(bookname, filepath string) string {
  48. log.Println("EPUB 文件存储:", bookname, filepath)
  49. db.ExportEpubFile(bookname, filepath, currentResults)
  50. return "ok"
  51. }
  52. // ImportSpiderConfigByExcelFile 通过excel文件导入爬虫配置
  53. func (a *App) ImportSpiderConfigByExcelFile(filepath string) string {
  54. db.BatchImport(filepath)
  55. return "ok"
  56. }
  57. // CountYestodayArts
  58. func (a *App) CountYestodayArts(url string, listDealy int64,
  59. trunPageDelay int64, headless bool, showImage bool) {
  60. exitCh = make(chan bool, 1)
  61. vm.CountYestodayArts(url, listDealy, trunPageDelay, headless, showImage, exitCh, currentSpiderConfig)
  62. }
  63. // ExportExcelFile
  64. func (a *App) ExportExcelFile(filepath string) string {
  65. if err := db.ExportExcelFile(filepath, currentSpiderConfig.Site, currentSpiderConfig.Channel, currentResults); err == nil {
  66. return "ok"
  67. } else {
  68. return err.Error()
  69. }
  70. }
  71. // LoadAllJobs 加载我的所有作业
  72. func (a *App) LoadAllJobs() be.Jobs {
  73. rs, err := bdb.LoadEntities[be.Job]("jobs")
  74. if err != nil {
  75. return make(be.Jobs, 0)
  76. }
  77. jobs := be.Jobs(rs)
  78. sort.Sort(jobs)
  79. return jobs
  80. }
  81. // SaveJob
  82. func (a *App) SaveJob(job *be.Job) string {
  83. err := bdb.SaveEntity[be.Job]("jobs", job.Code, job)
  84. if err != nil {
  85. return err.Error()
  86. }
  87. return "ok"
  88. }
  89. // DeleteJob
  90. func (a *App) DeleteJob(code string) string {
  91. err := bdb.DeleteEntity[be.Job]("jobs", code)
  92. if err != nil {
  93. return err.Error()
  94. }
  95. return "ok"
  96. }
  97. // LoadJob
  98. func (a *App) LoadJob(code string) *be.Job {
  99. job, _ := bdb.LoadEntity[be.Job]("jobs", code)
  100. return job
  101. }
  102. // RunJob
  103. func (a *App) RunJob(code string) string {
  104. go vm.RunJob(code)
  105. return "ok"
  106. }
  107. func (a *App) StopJob(code string) string {
  108. vm.StopJob(code)
  109. return "ok"
  110. }
  111. // ExportJobResult
  112. func (a *App) ExportJobResult(code string, filePath string) string {
  113. vm.ExportJobResult(code, filePath)
  114. return "ok"
  115. }
  116. // VerifySpiderConfig 验证
  117. func (a *App) VerifySpiderConfig() *be.SpiderConfigVerifyResult {
  118. currentResults.Init()
  119. ret, err := vm.VerifySpiderConfig(currentSpiderConfig, currentResults)
  120. if err != nil {
  121. log.Println("验证脚本配置失败::", err.Error())
  122. } else {
  123. log.Println("验证脚本配置成功")
  124. }
  125. return ret
  126. }
  127. // VerifySpiderConfig 验证
  128. //func (a *App) VerifySpiderConfig(param map[string]interface{}) *be.SpiderConfigVerifyResult {
  129. // sc := be.NewSpiderConfig(param)
  130. // currentResults.Init()
  131. // ret, err := vm.VerifySpiderConfig(sc, currentResults)
  132. // if err != nil {
  133. // log.Println("验证脚本配置失败::", err.Error())
  134. // } else {
  135. // log.Println("验证脚本配置成功")
  136. // }
  137. // return ret
  138. //}