Class: Birdwatcher::Modules::Urls::MostShared
- Inherits:
-
Birdwatcher::Module
- Object
- Birdwatcher::Module
- Birdwatcher::Modules::Urls::MostShared
- Defined in:
- lib/birdwatcher/modules/urls/most_shared.rb
Constant Summary
Constants inherited from Birdwatcher::Module
Birdwatcher::Module::MODULE_PATH
Constants included from Concerns::Concurrency
Concerns::Concurrency::DEFAULT_THREAD_POOL_SIZE
Constants included from Concerns::Core
Concerns::Core::DATA_DIRECTORY
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from Birdwatcher::Module
_file_path, _file_path=, descendants, #execute, inherited, meta, meta=, module_by_path, module_paths, modules, path
Methods included from Concerns::Concurrency
Methods included from Concerns::Persistence
included, #save_status, #save_user
Methods included from Concerns::Presentation
included, #make_status_summary_output, #make_url_summary_output, #make_user_details_output, #make_user_summary_output, #output_status_summary, #output_user_details, #output_user_summary, #page_text
Methods included from Concerns::Outputting
#confirm, #error, #fatal, included, #info, #line_separator, #newline, #output, #output_formatted, #task, #warn
Methods included from Concerns::Util
#escape_html, #excerpt, included, #parse_time, #pluralize, #strip_control_characters, #strip_html, #suppress_output, #suppress_warnings, #time_ago_in_words, #unescape_html
Methods included from Concerns::Core
#console, #current_workspace, #current_workspace=, #database, included, #klout_client, #read_data_file, #twitter_client
Class Method Details
.info ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/birdwatcher/modules/urls/most_shared.rb', line 33 def self.info <<-INFO The Most Shared URLs module can show a simple list of shared URLs ordered from most to least shared. If a URL has been shared by several people, it is a good indication that it has important or interesting information. To enhance the functionality of this module, it is recommended to run the #{'urls/crawl'.bold} module first in order to get information on the URLs such as HTTP status codes, content types and page titles. If the information is available, this module will display it. INFO end |
Instance Method Details
#run ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/birdwatcher/modules/urls/most_shared.rb', line 46 def run if option_setting("SINCE") since = parse_time(option_setting("SINCE")).strftime("%Y-%m-%d") else since = (Date.today - 7).strftime("%Y-%m-%d") end if option_setting("BEFORE") before = parse_time(option_setting("BEFORE")).strftime("%Y-%m-%d") else before = Time.now.strftime("%Y-%m-%d") end if option_setting("USERS") user_ids = current_workspace.users_dataset.where("screen_name IN ?", option_setting("USERS").split(" ").map(&:strip)).map(&:id) urls = database["SELECT urls.url, urls.final_url, urls.title, urls.http_status, urls.content_type, count(statuses_urls.*) AS count FROM urls INNER JOIN statuses_urls ON statuses_urls.url_id = urls.id INNER JOIN statuses ON statuses_urls.status_id = statuses.id WHERE statuses.user_id IN ? AND statuses.workspace_id = ? AND DATE(statuses.posted_at) <= DATE(?) AND DATE(statuses.posted_at) >= DATE(?) GROUP BY urls.url, urls.final_url, urls.title, urls.http_status, urls.content_type ORDER BY count DESC", user_ids, current_workspace.id, since, before].all else urls = database["SELECT urls.url, urls.final_url, urls.title, urls.http_status, urls.content_type, count(statuses_urls.*) AS count FROM urls INNER JOIN statuses_urls ON statuses_urls.url_id = urls.id INNER JOIN statuses ON statuses_urls.status_id = statuses.id WHERE statuses.workspace_id = ? AND DATE(statuses.posted_at) <= DATE(?) AND DATE(statuses.posted_at) >= DATE(?) GROUP BY urls.url, urls.final_url, urls.title, urls.http_status, urls.content_type ORDER BY count DESC", current_workspace.id, before, since].all end if urls.count.zero? error("There are no URLs to display") return false end text = "" urls.each do |url| next if option_setting("MIN_SHARE_COUNT") && url[:count] <= option_setting("MIN_SHARE_COUNT") text += make_url_summary_output(url) + "\n#{Birdwatcher::Console::LINE_SEPARATOR}\n\n" end page_text(text) end |