From 7e3658d3291ea39f9d56565e19d583c26dcd57b1 Mon Sep 17 00:00:00 2001 From: Matchu Date: Wed, 2 Aug 2023 13:11:51 -0700 Subject: [PATCH] Remove mall spider cron jobs I don't think these work anymore, and our volunteers get new items into the db fast anyway, Impress 2020 is doing better spidering these days. And then we get to remove the cron job `whenever` gem! --- Gemfile | 2 - Gemfile.lock | 5 - app/models/item.rb | 296 -------------------------------- config/deploy.rb | 3 - config/schedule.rb | 11 -- lib/tasks/spider.rake | 12 -- vendor/cache/chronic-0.6.7.gem | Bin 36352 -> 0 bytes vendor/cache/whenever-0.7.3.gem | Bin 24576 -> 0 bytes 8 files changed, 329 deletions(-) delete mode 100644 config/schedule.rb delete mode 100644 lib/tasks/spider.rake delete mode 100644 vendor/cache/chronic-0.6.7.gem delete mode 100644 vendor/cache/whenever-0.7.3.gem diff --git a/Gemfile b/Gemfile index 47bf9b21..d172d4d4 100644 --- a/Gemfile +++ b/Gemfile @@ -21,8 +21,6 @@ gem 'openneo-auth-signatory', '~> 0.1.0' gem 'addressable', :require => ['addressable/template', 'addressable/uri'] -gem 'whenever', '~> 0.7.3', :require => false - gem 'right_aws', '~> 2.1.0' gem "character-encodings", "~> 0.4.1", :platforms => :ruby_18 diff --git a/Gemfile.lock b/Gemfile.lock index 5d2d3956..3f7c0a09 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -61,7 +61,6 @@ GEM net-ssh (>= 2.0.14) net-ssh-gateway (>= 1.1.0) character-encodings (0.4.1) - chronic (0.6.7) chunky_png (1.4.0) compass (1.0.3) chunky_png (~> 1.2) @@ -220,9 +219,6 @@ GEM execjs (>= 0.3.0, < 3) warden (1.2.7) rack (>= 1.0) - whenever (0.7.3) - activesupport (>= 2.3.4) - chronic (~> 0.6.3) will_paginate (3.0.7) PLATFORMS @@ -262,7 +258,6 @@ DEPENDENCIES sanitize (~> 2.0.3) sass-rails (~> 5.0, >= 5.0.7) uglifier (~> 4.2) - whenever (~> 0.7.3) will_paginate (~> 3.0.pre2) RUBY VERSION diff --git a/app/models/item.rb b/app/models/item.rb index a383e02d..0711739d 100644 --- a/app/models/item.rb +++ b/app/models/item.rb @@ -640,300 +640,4 @@ class Item < ActiveRecord::Base pattern = Regexp.union(escape_character, "%", "_") string.gsub(pattern) { |x| [escape_character, x].join } end - - class << self - MALL_HOST = 'ncmall.neopets.com' - MALL_MAIN_PATH = '/mall/shop.phtml' - MALL_CATEGORY_PATH = '/mall/ajax/load_page.phtml' - MALL_CATEGORY_QUERY = 'type=browse&cat={cat}&lang=en' - MALL_CATEGORY_TRIGGER = /load_items_pane\("browse", ([0-9]+)\);/ - MALL_JSON_ITEM_DATA_KEY = 'object_data' - MALL_ITEM_URL_TEMPLATE = 'http://images.neopets.com/items/%s.gif' - - MALL_MAIN_URI = Addressable::URI.new :scheme => 'http', - :host => MALL_HOST, :path => MALL_MAIN_PATH - MALL_CATEGORY_URI = Addressable::URI.new :scheme => 'http', - :host => MALL_HOST, :path => MALL_CATEGORY_PATH, - :query => MALL_CATEGORY_QUERY - MALL_CATEGORY_TEMPLATE = Addressable::Template.new MALL_CATEGORY_URI - - def spider_mall! - # Load the mall HTML, scan it for category onclicks - items = {} - spider_request(MALL_MAIN_URI).scan(MALL_CATEGORY_TRIGGER) do |match| - # Plug the category ID into the URI for that category's JSON document - uri = MALL_CATEGORY_TEMPLATE.expand :cat => match[0] - begin - # Load up that JSON and send it off to be parsed - puts "Loading #{uri}..." - category_items = spider_mall_category(spider_request(uri)) - puts "...found #{category_items.size} items" - items.merge!(category_items) - rescue SpiderJSONError => e - # If there was a parsing error, add where it came from - Rails.logger.warn "Error parsing JSON at #{uri}, skipping: #{e.message}" - end - end - puts "#{items.size} items found" - all_item_ids = items.keys - Item.transaction do - # Find which of these already exist but aren't marked as sold_in_mall so - # we can update them as being sold - items_added_to_mall = Item.not_sold_in_mall.includes(:translations). - where(:id => items.keys) - items_added_to_mall.each do |item| - items.delete(item.id) - item.sold_in_mall = true - item.save - puts "#{item.name} (#{item.id}) now in mall, updated" - end - # Find items marked as sold_in_mall so we can skip those we just found - # if they already are properly marked, and mark those that we didn't just - # find as no longer sold_in_mall - items_removed_from_mall = Item.sold_in_mall.includes(:translations) - items_removed_from_mall.each do |item| - if all_item_ids.include?(item.id) - items.delete(item.id) - else - item.sold_in_mall = false - item.save - puts "#{item.name} (#{item.id}) no longer in mall, removed sold_in_mall status" - end - end - puts "#{items.size} new items" - items.each do |item_id, item| - item.save - puts "Saved #{item.name} (#{item_id})" - end - end - items - end - - def spider_mall_assets!(limit) - items = self.select([:id, :zones_restrict]).sold_in_mall.spidered_longest_ago.limit(limit).all - puts "- #{items.size} items need asset spidering" - AssetStrategy.build_strategies - items.each do |item| - AssetStrategy.spider item - end - end - - def spider_request(uri) - begin - response = Net::HTTP.get_response uri - rescue SocketError => e - raise SpiderHTTPError, "Error loading #{uri}: #{e.message}" - end - unless response.is_a? Net::HTTPOK - raise SpiderHTTPError, "Error loading #{uri}: Response was a #{response.class}" - end - response.body - end - - private - - class AssetStrategy - Strategies = {} - - MALL_ASSET_PATH = '/mall/ajax/get_item_assets.phtml' - MALL_ASSET_QUERY = 'pet={pet_name}&oii={item_id}' - MALL_ASSET_URI = Addressable::URI.new :scheme => 'http', - :host => MALL_HOST, :path => MALL_ASSET_PATH, - :query => MALL_ASSET_QUERY - MALL_ASSET_TEMPLATE = Addressable::Template.new MALL_ASSET_URI - - def initialize(name, options) - @name = name - @pass = options[:pass] - @complete = options[:complete] - @pet_types = options[:pet_types] - end - - def spider(item) - puts " - Using #{@name} strategy" - exit = false - @pet_types.each do |pet_type| - swf_assets = load_for_pet_type(item, pet_type) - if swf_assets - contains_body_specific_assets = false - swf_assets.each do |swf_asset| - if swf_asset.body_specific? - contains_body_specific_assets = true - break - end - end - if contains_body_specific_assets - if @pass - Strategies[@pass].spider(item) unless @pass == :exit - exit = true - break - end - else - # if all are universal, no need to spider more - puts " - No body specific assets; moving on" - exit = true - break - end - end - end - if !exit && @complete && @complete != :exit - Strategies[@complete].spider(item) - end - end - - private - - def load_for_pet_type(item, pet_type) - original_pet = Pet.select([:id, :name]). - where(pet_type_id: pet_type.id).first - if original_pet.nil? - puts " - We have no more pets of type \##{pet_type.id}; skipping." - return nil - end - pet_id = original_pet.id - pet_name = original_pet.name - pet_valid = nil - begin - pet = Pet.load(pet_name, timeout: 10) - if pet.pet_type_id == pet_type.id - pet_valid = true - else - pet_valid = false - puts " - Pet #{pet_name} is pet type \##{pet.pet_type_id}, not \##{pet_type.id}; saving it and loading new pet" - pet.save! - end - rescue Pet::PetNotFound - pet_valid = false - puts " - Pet #{pet_name} no longer exists; destroying and loading new pet" - original_pet.destroy - rescue Pet::DownloadError => e - puts " - Pet #{pet_name} timed out: #{e.message}; skipping." - return nil - end - if pet_valid - swf_assets = load_for_pet_name(item, pet_type, pet_name) - if swf_assets - puts " - Modeled with #{pet_name}, saved assets (#{swf_assets.map(&:id).join(', ')})" - else - puts " - Item #{item.name} does not fit #{pet_name}" - end - return swf_assets - else - load_for_pet_type(item, pet_type) # try again - end - end - - def load_for_pet_name(item, pet_type, pet_name) - uri = MALL_ASSET_TEMPLATE. - expand( - :item_id => item.id, - :pet_name => pet_name - ) - raw_data = Item.spider_request(uri) - data = JSON.parse(raw_data) - item_id_key = item.id.to_s - if !data.empty? && data[item_id_key] && data[item_id_key]['asset_data'] - data[item_id_key]['asset_data'].map do |asset_id_str, asset_data| - item.zones_restrict = asset_data['restrict'] - swf_asset = SwfAsset.find_or_initialize_by_type_and_remote_id(SwfAssetType, asset_id_str.to_i) - swf_asset.type = SwfAssetType - swf_asset.body_id = pet_type.body_id - swf_asset.mall_data = asset_data - item.swf_assets << swf_asset unless item.swf_assets.include? swf_asset - swf_asset.save - swf_asset - end - else - nil - end - end - - class << self - def add_strategy(name, options) - Strategies[name] = new(name, options) - end - - def add_cascading_strategy(name, options) - pet_type_groups = options[:pet_types] - pet_type_group_names = pet_type_groups.keys - pet_type_group_names.each_with_index do |pet_type_group_name, i| - remaining_pet_types = pet_type_groups[pet_type_group_name] - first_pet_type = [remaining_pet_types.slice!(0)] - cascade_name = "#{name}_cascade" - next_name = pet_type_group_names[i + 1] - next_name = next_name ? "group_#{next_name}" : options[:complete] - first_strategy_options = {:complete => next_name, :pass => :exit, - :pet_types => first_pet_type} - unless remaining_pet_types.empty? - first_strategy_options[:pass] = cascade_name - add_strategy cascade_name, :complete => :exit, - :pet_types => remaining_pet_types - end - add_strategy name, first_strategy_options - name = next_name - end - end - - def spider(item) - puts "- Spidering for #{item.name}" - Strategies[:start].spider(item) - if item.swf_assets.present? - puts "- #{item.name} done spidering, saved last spidered timestamp" - item.rarity_index = 500 # a decent assumption for mall items - item.last_spidered = Time.now - item.save! - else - puts "- #{item.name} found no models, so not saved" - end - end - - def build_strategies - if Strategies.empty? - pet_type_t = PetType.arel_table - require 'pet' # FIXME: console is whining when i don't do this - pet_types = PetType.select([:id, :body_id]) - remaining_standard_pet_types = pet_types.single_standard_color.order(:species_id) - first_standard_pet_type = [remaining_standard_pet_types.slice!(0)] - - add_strategy :start, :pass => :remaining_standard, :complete => :first_nonstandard_color, - :pet_types => first_standard_pet_type - - add_strategy :remaining_standard, :complete => :exit, - :pet_types => remaining_standard_pet_types - - add_cascading_strategy :first_nonstandard_color, :complete => :remaining_standard, - :pet_types => pet_types.select(pet_type_t[:color_id]).nonstandard_colors.all.group_by(&:color_id) - end - end - end - end - - def spider_mall_category(json) - begin - items_data = JSON.parse(json)[MALL_JSON_ITEM_DATA_KEY] - unless items_data - raise SpiderJSONError, "Missing key #{MALL_JSON_ITEM_DATA_KEY}" - end - rescue Exception => e - # Catch both errors parsing JSON and the missing key - raise SpiderJSONError, e.message - end - items = {} - items_data.each do |item_id, item_data| - if item_data['isWearable'] == 1 - relevant_item_data = item_data.slice('name', 'description', 'price') - item = Item.new relevant_item_data - item.id = item_data['id'] - item.thumbnail_url = sprintf(MALL_ITEM_URL_TEMPLATE, item_data['imageFile']) - item.sold_in_mall = true - items[item.id] = item - end - end - items - end - - class SpiderError < RuntimeError;end - class SpiderHTTPError < SpiderError;end - class SpiderJSONError < SpiderError;end - end end diff --git a/config/deploy.rb b/config/deploy.rb index 61abe76d..cbea6a07 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -1,7 +1,6 @@ require "bundler/capistrano" require "dotenv/deployment/capistrano" require "rvm/capistrano" -require "whenever/capistrano" set :application, "newimpress.openneo.net" set :repository, "git://github.com/matchu/openneo-impress-rails.git" @@ -24,8 +23,6 @@ set :rvm_type, :system set :rvm_install_type, :head set :rvm_bin_path, "/usr/local/rvm/bin" -set :whenever_command, "bundle exec whenever" - namespace :deploy do task :start, :roles => :app do run "touch #{current_release}/tmp/restart.txt" diff --git a/config/schedule.rb b/config/schedule.rb deleted file mode 100644 index 41bd8f8e..00000000 --- a/config/schedule.rb +++ /dev/null @@ -1,11 +0,0 @@ -# Learn more: http://github.com/javan/whenever - -env :MAILTO, 'webmaster@openneo.net' - -every :day do - rake 'mall:spider_items' -end - -every :hour do - rake 'mall:spider_assets' -end diff --git a/lib/tasks/spider.rake b/lib/tasks/spider.rake deleted file mode 100644 index 23eb182e..00000000 --- a/lib/tasks/spider.rake +++ /dev/null @@ -1,12 +0,0 @@ -namespace :mall do - desc 'Spider NC Mall for new items' - task :spider_items => :environment do - Item.spider_mall! - end - - desc 'Spider NC Mall for item assets' - task :spider_assets => :environment do - item_limit = ENV['ITEM_LIMIT'] || 20 - Item.spider_mall_assets!(item_limit) - end -end diff --git a/vendor/cache/chronic-0.6.7.gem b/vendor/cache/chronic-0.6.7.gem deleted file mode 100644 index ff807664278c810b58168d8f7f37edfdf43d5c34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36352 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 Hn!tYm!Z9gy