# version: 1.050627 # copyright: MrRat - http://www.mrrat.com # license: GPL - http://www.opensource.org/licenses/gpl-license.html # purpose: mod for APF # description: support for marketplace items # use strict vars; my ($my_marketplace_text, $my_ThirdPartyProductDetails); our %subs__marketplace = ( load_language => "Yes", initialize_hashes => "Yes", calculate_initial_variables => "Yes", build_products__main => "Yes", assign_variables_Details_loop => "Yes" ); sub load_language__marketplace { $language_text{my_marketplace1} = "Price:"; $language_text{my_marketplace2} = "Used"; $language_text{my_marketplace3} = "Collectible"; $language_text{my_marketplace4} = "Third Party New"; $language_text{my_marketplace5} = "Refurbished"; $language_text{thirdparty_text1} = "Seller:"; $language_text{thirdparty_text2} = "Condition:"; $language_text{thirdparty_text3} = "Condition Type:"; $language_text{thirdparty_text4} = "From:"; $language_text{thirdparty_text5} = "Comments:"; $language_text{thirdparty_text6} = "Quantity:"; $language_text{thirdparty_text7} = "Offering Type:"; $language_text{thirdparty_text8} = "End Date:"; $language_text{thirdparty_text9} = "Total Feedback:"; $language_text{thirdparty_text10} = "Cancelled Auctions:"; $language_text{thirdparty_text11} = "Date:"; $language_text{thirdparty_text12} = "SubCondition:"; $language_text{searchbox_text20} = "third-party ASIN"; $language_text{searchbox_text21} = "Third-party exchange ID"; $language_text{searchbox_text22} = "Third-party Seller ID"; } # $language_text{my_marketplace1} = "Preis:"; # $language_text{my_marketplace2} = "Gebraucht"; # $language_text{my_marketplace3} = "Sammler"; # $language_text{my_marketplace4} = "Neu bei anderem Anbieter"; # $language_text{my_marketplace5} = "Überholt"; # $language_text{thirdparty_text1} = "Verkäfer:"; # $language_text{thirdparty_text2} = "Zustand:"; # $language_text{thirdparty_text3} = "Zustandsart:"; # $language_text{thirdparty_text4} = "von:"; # $language_text{thirdparty_text5} = "Kommentare:"; # $language_text{thirdparty_text6} = "Menge:"; # $language_text{thirdparty_text7} = "Angebots-Typ:"; # $language_text{thirdparty_text8} = "End-Datum:"; # $language_text{thirdparty_text9} = "Kommentare insgesamt:"; # $language_text{thirdparty_text10} = "Gelöschte Auktionen:"; # $language_text{thirdparty_text11} = "Datum:"; sub initialize_hashes__marketplace { our %offering_type = ( new => "ThirdPartyNew", used => "Used", collectible => "Collectible", refurbished => "Refurbished" ); } sub calculate_initial_variables__marketplace { if ($FORM{IdType}) { $Internal_variables{see_url_options} .= "&IdType=$FORM{IdType}"; $Internal_variables{more_form_options} .= qq[]; $Internal_variables{query} .= "&IdType=$FORM{IdType}"; } if ($FORM{Id}) { $Internal_variables{see_url_options} .= "&Id=$FORM{Id}"; $Internal_variables{more_form_options} .= qq[]; $Internal_variables{query} .= "&Id=$FORM{Id}"; } if ($FORM{SellerId}) { $Internal_variables{see_url_options} .= "&SellerId=$FORM{SellerId}"; $Internal_variables{more_form_options} .= qq[]; $Internal_variables{query} .= "&SellerId=$FORM{SellerId}"; } } sub build_products__main__marketplace { if ($FORM{myOperation} =~ /(New|Used|Collectible|Refurbished)/) { my %marketplace_text_hash = ( Used => $language_text{my_marketplace2}, Collectible => $language_text{my_marketplace3}, New => $language_text{my_marketplace4}, Refurbished => $language_text{my_marketplace5} ); $my_marketplace_text = $marketplace_text_hash{$FORM{myOperation}}; my $query = "&Operation=ItemLookup&ItemId=$FORM{ItemId}&Condition=$FORM{myOperation}&MerchantId=All&ResponseGroup=$Internal_variables{ResponseGroup_Products}"; if ($FORM{ItemPage} ne "1") { $query .= qq[&OfferPage=$FORM{ItemPage}]; } my $this_xml_url = $Internal_variables{base_url} . $query; my $xml_result = get_url($this_xml_url); my $level_1 = parse_xml_into_hashes_of_arrays($xml_result); assign_variables("products",$level_1); return "found"; } elsif ($FORM{myOperation} =~ m/SellerListing/) { my @temp_array; my $whatever = build_sellerlookup(); my $this_xml_url = $Internal_variables{base_url} . "&Operation=$FORM{myOperation}" . $Internal_variables{query} . "&ResponseGroup=SellerListing"; $debug .= "wait 1 second then get SellerListing
\n"; sleep 1; my $xml_result = get_url($this_xml_url); $xml_result =~ s/(.*?)<\/SellerListing>/push @temp_array, $1;/gsie; $MY_variables{products_html} .= $whatever . parse_thirdpartyhash(\@temp_array,"sellersearch"); return "found"; } } sub assign_variables_Details_loop__marketplace { my $level_3 = shift; my $temp_price; if ($FORM{Operation} eq "ItemLookup" and ($MY_variables{current_locale} ne "us")) { my $marketplace_result_xml_url = $Internal_variables{base_url} . "&Operation=ItemLookup&ItemId=$FORM{ItemId}&ResponseGroup=OfferSummary&MerchantId=All"; $debug .= "wait 1 second then get non_us_marketplace_result
\n"; sleep 1; my $non_us_marketplace_result = get_url($marketplace_result_xml_url); $non_us_marketplace_result =~ s/(.*?)<\/LowestUsedPrice>/$AWS_variables{LowestUsedPrice} = $1;/e; $non_us_marketplace_result =~ s/(.*?)<\/LowestCollectiblePrice>/$AWS_variables{LowestCollectiblePrice} = $1;/e; $non_us_marketplace_result =~ s/(.*?)<\/LowestNewPrice>/$AWS_variables{LowestNewPrice} = $1;/e; $non_us_marketplace_result =~ s/(.*?)<\/LowestRefurbishedPrice>/$AWS_variables{LowestRefurbishedPrice} = $1;/e; } if ($Internal_variables{merchants} and $AWS_variables{TotalNew} eq "1" and $AWS_variables{TotalOffers} eq "1") { return; } if ($AWS_variables{LowestUsedPrice}) { $AWS_variables{LowestUsedPrice} =~ s/([^<]+)<\/FormattedPrice>/$temp_price = $1/e; $MY_variables{my_used} = qq[$language_text{my_marketplace2} $language_text{my_marketplace1} $temp_price
]; } if ($AWS_variables{LowestCollectiblePrice}) { $AWS_variables{LowestCollectiblePrice} =~ s/([^<]+)<\/FormattedPrice>/$temp_price = $1/e; $MY_variables{my_collectible} = qq[$language_text{my_marketplace3} $language_text{my_marketplace1} $temp_price
]; } if ($AWS_variables{LowestNewPrice}) { $AWS_variables{LowestNewPrice} =~ s/([^<]+)<\/FormattedPrice>/$temp_price = $1/e; $MY_variables{my_thirdpartynew} = qq[$language_text{my_marketplace4} $language_text{my_marketplace1} $temp_price
]; } if ($AWS_variables{LowestRefurbishedPrice}) { $AWS_variables{LowestRefurbishedPrice} =~ s/([^<]+)<\/FormattedPrice>/$temp_price = $1/e; $MY_variables{my_refurbished} = qq[$language_text{my_marketplace5} $language_text{my_marketplace1} $temp_price
]; } if ($my_marketplace_text) { my ($ii,@temp_array); $AWS_variables{Offers} =~ s/(.*?)<\/TotalOffers>/$AWS_variables{TotalResults} = $1/e; $AWS_variables{Offers} =~ s/(.*?)<\/TotalOfferPages>/$AWS_variables{TotalPages} = $1/e; see_more(); $AWS_variables{Offers} =~ s/(.*?)<\/Offer>/push @temp_array, $1;/gsie; $my_ThirdPartyProductDetails = parse_thirdpartyhash(\@temp_array,"thirdparty_products"); $MY_variables{store} = $my_marketplace_text; $MY_variables{subject} = $AWS_variables{Title}; return $my_ThirdPartyProductDetails; } } sub build_sellerlookup { my (@temp_array,$ii,$my_sellerlookupDetails); my $query = "&Operation=SellerLookup&SellerId=$FORM{SellerId}&ResponseGroup=Seller"; if ($FORM{ItemPage} ne "1") { $query .= qq[&FeedbackPage=$FORM{ItemPage}]; } my $this_xml_url = $Internal_variables{base_url} . $query; my $xml_result = get_url($this_xml_url); $xml_result =~ s|([^<]+)|$MY_variables{SellerRating} = $1|e; if (!$MY_variables{SellerRating}) { $MY_variables{SellerRating} = "$language_text{average_rating_text2}"; } $xml_result =~ s|([^<]+)|$MY_variables{SellerNickname} = $1|e; $xml_result =~ s|([^<]+)|$MY_variables{SellerNickname} = $1|e; $MY_variables{store} = $MY_variables{SellerNickname}; $MY_variables{subject} = $language_text{button_text4}; $xml_result =~ s|([^<]+)|$MY_variables{TotalFeedback} = $1|e; $xml_result =~ s|(.*?)<\/Feedback>|push @temp_array, $1;|gse; $xml_result =~ s|(.*?)|$MY_variables{SellerAbout} = $1|se; $MY_variables{SellerAbout} =~ s/!/./g; $MY_variables{SellerAbout} =~ s/<[^>]+>/ /gs; $MY_variables{OverallFeedbackRating} = $MY_variables{SellerRating}; $MY_variables{NumberOfFeedback} = $MY_variables{TotalFeedback}; $MY_variables{sellerprofile_max} = $#{@temp_array} + 1; foreach my $item (@temp_array) { $item =~ s|([^<]+)|$MY_variables{FeedbackRating} = $1|e; $item =~ s|([^<]+)|$MY_variables{FeedbackComment} = $1|e; $item =~ s|([^<]+)|$MY_variables{FeedbackDate} = $1|e; $my_sellerlookupDetails .= set_html("sellerprofile",$ii); $ii++; delete $MY_variables{FeedbackRating}; delete $MY_variables{FeedbackComment}; delete $MY_variables{FeedbackDate}; } delete $MY_variables{SellerRating}; delete $MY_variables{SellerRating}; delete $MY_variables{SellerNickname}; delete $MY_variables{TotalFeedback}; return $my_sellerlookupDetails; } sub parse_thirdpartyhash { my ($temp_array, $whose) = @_; my (%thirdpartyhash,$ii,$my_ThirdPartyProductDetails); foreach my $item (@{$temp_array}) { foreach my $key (keys %thirdpartyhash) { delete $MY_variables{$key}; delete $thirdpartyhash{$key}; } if ($item =~ m|Amazon\.|) { next; } $item =~ s|([^<]+)|$thirdpartyhash{OfferingPrice} = $1|e; if (!$thirdpartyhash{OfferingPrice}) { next; } $thirdpartyhash{Asin} = $AWS_variables{Asin}; $item =~ s|([^<]+)|$thirdpartyhash{SellerRating} = $1|e; if (!$thirdpartyhash{SellerRating}) { $thirdpartyhash{SellerRating} = "$language_text{average_rating_text2}"; } $item =~ s|([^<]+)|$thirdpartyhash{SellerNickname} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{SellerNickname} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{MerchantName} = $1|e; if (!$thirdpartyhash{SellerNickname} and $thirdpartyhash{MerchantName}) { $thirdpartyhash{SellerNickname} = $thirdpartyhash{MerchantName}; } if (!$thirdpartyhash{SellerNickname}) { $thirdpartyhash{SellerNickname} = "$language_text{average_rating_text2}"; } $item =~ s|([^<]+)|$thirdpartyhash{Condition} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{SubCondition} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{ConditionNote} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{ExchangeAvailability} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{SellerState} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{SellerCountry} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{ShipComments} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{SellerId} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{MerchantId} = $1|e; if (!$thirdpartyhash{SellerId} and $thirdpartyhash{MerchantId}) { $thirdpartyhash{SellerId} = $thirdpartyhash{MerchantId}; } $item =~ s|([^<]+)|$thirdpartyhash{ExchangeId} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{OfferListingId} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{ExchangeTitle} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{ExchangeEndDate} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{Asin} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{Quantity} = $1|e; $item =~ s|([^<]+)|$thirdpartyhash{QuantityAllocated} = $1|e; $thirdpartyhash{ExchangeQuantity} = $thirdpartyhash{Quantity} - $thirdpartyhash{QuantityAllocated}; $thirdpartyhash{sellersearch_url} = "$MY_variables{script_name}?myOperation=SellerListingSearch&SellerId=$thirdpartyhash{SellerId}$Internal_variables{url_options}"; $thirdpartyhash{ExchangeItemUrl} = "$MY_variables{script_name}?myOperation=" . ucfirst($thirdpartyhash{Condition}) . "&ItemId=$thirdpartyhash{Asin}$Internal_variables{url_options}"; if ($thirdpartyhash{Asin}) { if ($MY_variables{current_locale} eq "us") { $AWS_variables{DetailPageURL} = "http://www.amazon.com/gp/redirect.html?tag=$MY_variables{associate_id}&location=/exec/obidos/ASIN/$thirdpartyhash{Asin}%3FSubscriptionId=$MY_variables{subscription_id}"; } else { $AWS_variables{DetailPageURL} = "http://www.$Internal_variables{amazon_site}/exec/obidos/ASIN/$thirdpartyhash{Asin}/$MY_variables{associate_id}?SubscriptionId=$MY_variables{subscription_id}"; } } foreach my $key (keys %thirdpartyhash) { $MY_variables{$key} = $thirdpartyhash{$key}; } $MY_variables{ShipComments} = $thirdpartyhash{ConditionNote}; $MY_variables{ConditionType} = $thirdpartyhash{SubCondition}; $MY_variables{ExchangeOfferingType} = $thirdpartyhash{Condition}; $MY_variables{ExchangeConditionType} = $thirdpartyhash{SubCondition}; $MY_variables{ExchangeSellerState} = $thirdpartyhash{SellerState}; $MY_variables{ExchangeSellerCountry} = $thirdpartyhash{SellerCountry}; $MY_variables{ExchangePrice} = $thirdpartyhash{OfferingPrice}; $AWS_variables{OfferListingId} = $thirdpartyhash{OfferListingId}; $MY_variables{buy_button} = initialize_buttons("buy"); $MY_variables{shopping_cart_button} = initialize_buttons("cart"); $my_ThirdPartyProductDetails .= set_html($whose,$ii); delete $AWS_variables{OfferListingId}; $ii++; } return $my_ThirdPartyProductDetails; }