From f5c363b6c5f810afa357d40a0c8ce2cb99ca7fac Mon Sep 17 00:00:00 2001 From: Christian Mehlmauer Date: Sun, 25 Nov 2012 18:40:09 +0100 Subject: [PATCH] Added option to update all lists --- lib/wpstools/generate_list.rb | 44 +++++++++++++++++++++++++-------- lib/wpstools/wpstools_helper.rb | 5 ++++ wpstools.rb | 8 ++++++ 3 files changed, 47 insertions(+), 10 deletions(-) diff --git a/lib/wpstools/generate_list.rb b/lib/wpstools/generate_list.rb index c09e35b1..79179a7c 100644 --- a/lib/wpstools/generate_list.rb +++ b/lib/wpstools/generate_list.rb @@ -27,15 +27,13 @@ class Generate_List def initialize(type, verbose) if type =~ /plugins/i @type = "plugin" - @svn_url = 'http://plugins.svn.wordpress.org/' - @file_name = DATA_DIR + '/plugins.txt' - @popular_url = 'http://wordpress.org/extend/plugins/browse/popular/' + @svn_url = "http://plugins.svn.wordpress.org/" + @popular_url = "http://wordpress.org/extend/plugins/browse/popular/" @popular_regex = %r{

.+

}i elsif type =~ /themes/i @type = "theme" - @svn_url = 'http://themes.svn.wordpress.org/' - @file_name = DATA_DIR + '/themes.txt' - @popular_url = 'http://wordpress.org/extend/themes/browse/popular/' + @svn_url = "http://themes.svn.wordpress.org/" + @popular_url = "http://wordpress.org/extend/themes/browse/popular/" @popular_regex = %r{

.+

}i else raise "Type #{type} not defined" @@ -45,18 +43,44 @@ class Generate_List @hydra = @browser.hydra end + def set_file_name(type) + case @type + when "plugin" + case type + when :full + @file_name = DATA_DIR + "/plugins_full.txt" + when :popular + @file_name = DATA_DIR + "/plugins.txt" + else + raise "Unknown type" + end + when "theme" + case type + when :full + @file_name = DATA_DIR + "/themes_full.txt" + when :popular + @file_name = DATA_DIR + "/themes.txt" + else + raise "Unknown type" + end + else + raise "Unknown type #@type" + end + end + def generate_full_list + set_file_name(:full) items = Svn_Parser.new(@svn_url, @verbose).parse save items end def generate_popular_list(pages) + set_file_name(:popular) popular = get_popular_items(pages) items = Svn_Parser.new(@svn_url, @verbose).parse(popular) save items end - # Send a HTTP request to the WordPress most popular theme or plugin webpage # parse the response for the names. def get_popular_items(pages) @@ -75,7 +99,7 @@ class Generate_List puts "[+] Parsing page " + page_count.to_s if @verbose page_count += 1 response.body.scan(@popular_regex).each do |item| - puts "[+] Found popular #{@type}: #{item}" if @verbose + puts "[+] Found popular #@type: #{item}" if @verbose found_items << item[0] end end @@ -99,9 +123,9 @@ class Generate_List def save(items) items.sort! items.uniq! - puts "[*] We have parsed #{items.length} #{@type}s" + puts "[*] We have parsed #{items.length} #@types" File.open(@file_name, 'w') { |f| f.puts(items) } - puts "New #{@file_name} file created" + puts "New #@file_name file created" end end diff --git a/lib/wpstools/wpstools_helper.rb b/lib/wpstools/wpstools_helper.rb index e1c7793a..fab30fea 100644 --- a/lib/wpstools/wpstools_helper.rb +++ b/lib/wpstools/wpstools_helper.rb @@ -39,6 +39,9 @@ def usage() puts "- Generate a new full theme list" puts "ruby " + script_name + " --generate_full_theme_list" puts + puts "- Generate all list" + puts "ruby " + script_name + " --generate_all" + puts puts "See README for further information." puts end @@ -58,5 +61,7 @@ def help() puts "--gtl Alias for --generate_theme_list" puts "--generate_full_theme_list Generate a new full data/themes.txt file" puts "--gftl Alias for --generate_full_theme_list" + puts "--generate_all Generate a new full plugins, full themes, popular plugins and popular themes list" + puts "--ga Alias for --generate_all" puts end diff --git a/wpstools.rb b/wpstools.rb index 9e99ee49..cbc2cdfe 100755 --- a/wpstools.rb +++ b/wpstools.rb @@ -38,10 +38,12 @@ begin ["--generate_full_plugin_list", GetoptLong::NO_ARGUMENT], ["--generate_theme_list", GetoptLong::OPTIONAL_ARGUMENT], ["--generate_full_theme_list", GetoptLong::NO_ARGUMENT], + ["--generate_all", GetoptLong::NO_ARGUMENT], ["--gpl", GetoptLong::OPTIONAL_ARGUMENT], ["--gfpl", GetoptLong::OPTIONAL_ARGUMENT], ["--gtl", GetoptLong::OPTIONAL_ARGUMENT], ["--gftl", GetoptLong::OPTIONAL_ARGUMENT], + ["--ga", GetoptLong::OPTIONAL_ARGUMENT], ["--update", "-u", GetoptLong::NO_ARGUMENT] ) @@ -76,6 +78,12 @@ begin @generate_full_plugin_list = true when "--generate_full_theme_list", "--gftl" @generate_full_theme_list = true + when "--generate_all", "--ga" + @generate_plugin_list = true + @generate_theme_list = true + @number_of_pages = 150 + @generate_full_theme_list = true + @generate_full_plugin_list = true end end