Skip to content

Instantly share code, notes, and snippets.

@Breefield
Created June 17, 2014 19:59
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save Breefield/580c2a8eb9a8d7d19f27 to your computer and use it in GitHub Desktop.
Save Breefield/580c2a8eb9a8d7d19f27 to your computer and use it in GitHub Desktop.
Dump items from Svpply onto Wanelo.
#!/usr/bin/env ruby
require 'rubygems'
require 'json'
require 'pp'
require 'open-uri'
require 'cgi'
require 'httparty'
affiliate_id = 'olenaw-20'
page = ARGV[0].to_i
# For building an api request
svvply = {
url: "https://svpply.com/api/v1/stores/7/products.json?filters%5Bgenders%5D%5B%5D=Gender&filters%5Bcategories%5D%5B%5D=Category&filters%5Bprices%5D%5B%5D=Price&access_token=1328899194%7C38c28874839b6285f0dd9c4427b1053c%7C51dbfa49818ed5436923ccb68c35a25e",
url_range: "&limit=%s&offset=%s",
offset: 100,
limit: page * 100
}
# For making requests to wanelo site
# Going to make this more robust, with cookies and login
class Wanelo
include HTTParty
base_uri 'http://www.wanelo.com'
end
# Query SVPPLY for products
combined_url = svvply[:url] + (svvply[:url_range] % [svvply[:offset], svvply[:limit]])
puts "Requesting SVVPLY API"
response = URI.parse(combined_url).read
json_response = JSON.parse(response)
# Grab the products
products = json_response['response']['products']
puts "%s product(s) found" % products.size.to_s
links = "<h1>" + page.to_s + "</h1>"
products.each do |product|
# Rip out SVPPLY tag and drop in min
product['page_url'].gsub!('svpply01-20', affiliate_id)
# Specify the image we're gonna upload
product['olenaw_img_url'] = "https://s3.amazonaws.com/assets.svpply.com/large/%s.jpg?%s" % [product['id'], Time.now.to_i]
# What WANELO category should it be in?
if(product['category'] == 'apparel' ||
product['category'] == 'accessories' ||
product['category'] == 'shoes')
if(product['gender'] == 'female' || product['gender'] == 'neutral')
category = 110005
elsif(product['gender'] == 'male')
category = 110004
end
elsif(product['category'] == 'tech' || product['category'] == 'other')
category = 110003
elsif(product['category'] == 'art' || product['category'] == 'home')
category = 110002
elsif(product['category'] == 'media')
category = 110001
end
# Compile the post data as observed in Charles
pdata = {
'contentaction' => 'productpreview',
'userId' => 381569,
'productTitle' => CGI.escape(product['page_title']),
'collectionId' => 3206607,
'collectionName' => 'My%20Wishlist',
'topCategoryId' => '-1',
'price' => product['price'],
'productUrl' => CGI.escape(product['page_url']),
'categoryId' => category,
'choosePhoto' => CGI.escape(product['olenaw_img_url']),
'imageUrls' => CGI.escape(product['olenaw_img_url']) + '^',
'imageType' => 'imported',
# Dead options
'productDescription' => '', 'uploadPhoto' => '',
'photoName' => '', 'tags' => '', 'reviewText' => '', 'noReview' => '', 'displayUrl' => '',
'imageUploadedByUrl' => '', 'productComment' => '', 'postToFacebook' => 0, 'postToTwitter' => 0
}
pParams = pdata.map{|k,v| "#{k}=#{v}"}.join('&')
links = links + "<iframe style='width: 100%; height: 400px' src=\"http://www.wanelo.com/index.action?#{pParams}\"></iframe>"
end
page_s = page.to_s
file = File.new("links#{page_s}.html", "w")
file.write(links)
file.close
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment