Guest User

Untitled

a guest
Apr 23rd, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 KB | None | 0 0
  1. config.plugins.searchline.set_default(:interval, 300)
  2. config.plugins.searchline_multi.set_default(:verbose, false)
  3. config.plugins.searchline_multi.set_default(:searches,[])
  4.  
  5. module Termtter::Client
  6. class << self
  7.  
  8. def delete_task(key)
  9. @task_manager.delete_task(key) # returns nil if task for key is not exist
  10. end
  11.  
  12.  
  13. @@searches = []
  14.  
  15. def add_search(*query)
  16. query_text = query.join(" ")
  17. if ! @@searches.include? [query_text.object_id, query_text]
  18. @@searches << [query_text.object_id, query_text]
  19. query_text.object_id
  20. else
  21. nil
  22. end
  23. end
  24.  
  25. def delete_search(search)
  26.  
  27. deleted = @@searches.delete_at(search.to_i)
  28. if ! deleted.nil?
  29. delete_task("searchline_multi_#{deleted[0]}".to_sym)
  30. puts "Deleted: #{deleted[1]}"
  31. else
  32. warn "Do not know anything about '#{deleted.inspect}'"
  33. end
  34. end
  35.  
  36. def list_searches
  37. @@searches.each_index do |i|
  38. puts "#{i}: #{@@searches[i][1]}"
  39. end
  40. end
  41.  
  42. def add_search_task(*args)
  43. search_index = add_search(*args)
  44. return unless search_index
  45.  
  46. public_storage["searchline_since_#{search_index}".to_sym] = 0
  47. add_task(:name => "searchline_multi_#{search_index}".to_sym,
  48. :interval => config.plugins.searchline.interval ) do
  49. begin
  50. statuses = Termtter::API.twitter.search(
  51. args.join(" "), 'since_id' => public_storage["searchline_since_#{search_index}".to_sym] )
  52. unless statuses.empty?
  53. print "\e[0G" + "\e[K" unless win?
  54. public_storage["searchline_since_#{search_index}".to_sym] = statuses[0].id
  55. output(statuses, SearchEvent.new(args.join(" ")))
  56. Readline.refresh_line
  57. end
  58. rescue Exception => e
  59. handle_error(e)
  60. end
  61. end
  62. end
  63.  
  64. end
  65.  
  66. config.plugins.searchline_multi.searches.each do |str|
  67. add_search_task(str)
  68. end
  69.  
  70. register_command(
  71. :name => :searchline_multi,
  72. :aliases => [:slm],
  73. :exec => lambda {|*args|
  74. args = args.shift.split
  75. subcommand = args.shift
  76. case subcommand
  77. when /^ad{0,2}$/i
  78. if args.to_a.length == 0
  79. warn "No search query given"
  80. return
  81. end
  82.  
  83. add_search_task(*args)
  84.  
  85. when /^d(e(l(e(te?)?)?)?)?$/i
  86. return unless args[0] =~ /^[0-9]*$/
  87. delete_search(args[0].to_i)
  88.  
  89. when /l(i(st?)?)?/
  90. list_searches
  91.  
  92. else
  93. warn "Unknown command: #{subcommand}"
  94. end
  95.  
  96. },
  97. :help => ["searchline_multi [add [TEXT] | delete # | list ]", "Search for Twitter with auto reload"]
  98. )
  99. end
  100.  
  101. # searchline_multi.rb:
  102. # Manage multiple searches with reload
  103. # Caution:
  104. # Be aware of API limit.
Add Comment
Please, Sign In to add comment