settings.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from __future__ import print_function
  2. import json
  3. from scrapy.commands import ScrapyCommand
  4. from scrapy.settings import BaseSettings
  5. class Command(ScrapyCommand):
  6. requires_project = False
  7. default_settings = {'LOG_ENABLED': False,
  8. 'SPIDER_LOADER_WARN_ONLY': True}
  9. def syntax(self):
  10. return "[options]"
  11. def short_desc(self):
  12. return "Get settings values"
  13. def add_options(self, parser):
  14. ScrapyCommand.add_options(self, parser)
  15. parser.add_option("--get", dest="get", metavar="SETTING",
  16. help="print raw setting value")
  17. parser.add_option("--getbool", dest="getbool", metavar="SETTING",
  18. help="print setting value, interpreted as a boolean")
  19. parser.add_option("--getint", dest="getint", metavar="SETTING",
  20. help="print setting value, interpreted as an integer")
  21. parser.add_option("--getfloat", dest="getfloat", metavar="SETTING",
  22. help="print setting value, interpreted as a float")
  23. parser.add_option("--getlist", dest="getlist", metavar="SETTING",
  24. help="print setting value, interpreted as a list")
  25. def run(self, args, opts):
  26. settings = self.crawler_process.settings
  27. if opts.get:
  28. s = settings.get(opts.get)
  29. if isinstance(s, BaseSettings):
  30. print(json.dumps(s.copy_to_dict()))
  31. else:
  32. print(s)
  33. elif opts.getbool:
  34. print(settings.getbool(opts.getbool))
  35. elif opts.getint:
  36. print(settings.getint(opts.getint))
  37. elif opts.getfloat:
  38. print(settings.getfloat(opts.getfloat))
  39. elif opts.getlist:
  40. print(settings.getlist(opts.getlist))