J'ai essayé de créer un outil de comparaison des prix des produits Amazon dans le monde entier avec Java, l'API Amazon Product Advertising, l'API Currency (29/01/2017)

hello world!

Auto-introduction

Ravi de vous rencontrer, je m'appelle alpacatom. Je suis étudiant diplômé de M1. Enfin, j'ai un peu de temps au-delà du point culminant du journal, je le posterai donc pour la première fois au détriment de précieux samedis et dimanches. En tant que nouveau venu, veillez chaleureusement. Nous vous serions reconnaissants si vous pouviez nous donner des suggestions d'amélioration et des opinions. Cette fois, j'ai créé un outil pour comparer les prix des produits sur Amazon dans 6 pays en utilisant l'API Amazon Product Advertising et l'API Currency. Bien entendu, les frais de port sont inclus.

Remarque: préparez-vous, car il peut être assez compliqué de se préparer à l'utilisation.

Motivation (brise-glace)

"Je veux un disque Blu-ray de la" Big Bang Theory "préférée de tout le monde" "→" Mais (les étudiants diplômés) n'ont pas d'argent "→" Ça!? Amazon aux États-Unis est moins cher que le Japon? "← Maintenant, ici Je n'ai pas vraiment compris le résultat et je savais que les prix sur Amazon différaient d'un pays à l'autre, alors je l'ai fait.

Astuces: __ Big Bang Theory Qu'est-ce que __? Drame comique à l'étranger super intéressant. Ce travail peut être recommandé à la fois pour ceux qui visent à être chercheurs et pour ceux qui ne le sont pas, en particulier pour les étudiants diplômés, c'est un incontournable __. Au fait, j'ai passé deux semaines jusqu'à la saison 1-6. (Netflix est le meilleur!)

Plus tard, je pense acheter un _Superdry_bag ... et ainsi de suite.

Référence: Superdry

Currency API Commencera le sujet principal. C'est une API pour obtenir des informations sur les taux de change, et vous pouvez l'utiliser en vous inscrivant. Cette fois, j'utilise la version gratuite. https://currencylayer.com/ Maintenant, récupérez la clé API pour la couche Devise.

Amazon Product Advertising API J'ai fait référence à l'article suivant.

Balise associée Amazon

C'est un moment crucial. Enregistrez le pays que vous souhaitez comparer et obtenez la balise Associate. (Cette fois, il est basé sur le Japon, donc le Japon est essentiel.) Selon un certain article de StackOverflow, il a été posté qu'il ne peut être utilisé que s'il est enregistré dans chaque pays, donc inscrivez-vous dans le pays requis "tous".

Clé d'accès et clé secrète AWS

Comment utiliser

Comme il a été développé dans Eclipse, si vous utilisez Eclipse, importez le projet extrait de Github (https://github.com/alpacatom/ComparingPrices-via-AmazonAPI) et utilisez la clé obtenue ci-dessus (Currency.java). Et SearchAnItem.java) Vous pouvez l'utiliser en le définissant. La recherche a certains paramètres obligatoires.

classe principale

Seule la fonction principale est répertoriée ci-dessous. Le flux consiste à extraire la table d'expédition du fichier CSV et à accéder à l'API Currency et à l'API Amazon pour obtenir le taux de change et le prix des informations sur le produit. Pour plus d'informations, visitez Github (https://github.com/alpacatom/ComparingPrices-via-AmazonAPI)

AmazonAPI.java


	public static void main(String[] args) {
		// Initializing
		ItemData arr[] = new ItemData[ItemData.COUNTRY_NUM];
		for(int i=0;i<ItemData.COUNTRY_NUM;i++){
			arr[i] = new ItemData();
		}
		String line[] = new String[ShipmentCharge.CSV_MAX_LINE_SIZE];
		ShipmentCharge SC[][] = new ShipmentCharge[ItemData.COUNTRY_NUM][ShipmentCharge.CSV_MAX_LINE_SIZE];
		// Get Shipment Charges
		for(int j=0;j<ItemData.COUNTRY_NUM;j++){
			line = ItemData.ReadFile(ShipmentCharge.ShipmentTXT[j]);
			String stmp[] = new String[ShipmentCharge.CSV_MAX_COLUM_SIZE];
			int k=0;
			while(line[k]!=null){
				stmp = MyParser.parseCSV(line[k]);
				SC[j][k] = ShipmentCharge.MakeTable(SC[j][k], stmp, j);
				k++;
			}
		}
		// Calculate the lowest Shipment Charges each countires.
		Double[] dtmp = new Double[6];
		dtmp = ShipmentCharge.LowestCalcSC(SC,ItemData.category);
		// Get Currencies via currencylayer
        String json = Currency.GetCurrencies();
        Double CurrenciesRate[] = new Double[ItemData.COUNTRY_NUM];
        CurrenciesRate = MyParser.getCurrencies(json);
		// Get Price and Country via Amazon Product API
		String xml[] = new String[ItemData.COUNTRY_NUM];
		final String tag[] = {"CurrencyCode","FormattedPrice"};

		for(int i=0;i<ItemData.COUNTRY_NUM;i++){
			arr[i].setCountry(ItemData.Countries[i]);
			xml[i] = SearchAnItem.SearchByID(ItemData.getItemID(), i);
			arr[i].setShitpment(dtmp[i]);
			arr[i].setCurrenciesCode(MyParser.getTagElmFromXML(xml[i],tag[0]));
			arr[i].setPrice( MyParser.Convert2Double(MyParser.getTagElmFromXML(xml[i],tag[1])));
        	arr[i].setCurrenciesRate(CurrenciesRate[i]);
        	arr[i].PrintAll();
		}
	}

Résultat d'exécution

Le résultat du calcul est affiché en dollars USD. Donc, plus le TOTAL est bas, plus il est "bon marché". Vous trouverez ci-dessous le prix BD (frais de port compris) pour Big Bang ★ Theory Saison 1-9. Comme vous pouvez le voir, si vous n'avez pas besoin de japonais (avec sous-titres anglais), vous obtiendrez 115 * (Max-min) = 2990 yens. ad1b905491ba78d3da57cbb32752f150.png

Impressions

Merci d'avoir lu jusqu'ici, et je le posterai si je fais encore quelque chose.

Ce que j'ai

Ce que j'ai perdu

Ce que j'ai laissé derrière

Les références

Amazon Product API document http://docs.aws.amazon.com/AWSECommerceService/latest/DG/Welcome.html Currencylayer API document https://currencylayer.com/documentation Entrée / sortie de fichier https://www.caveofprogramming.com/java/java-file-reading-and-writing-files-in-java.html Expressions régulières https://docs.oracle.com/javase/jp/6/api/java/util/regex/Pattern.html http://qiita.com/ymsr5612/items/7c8811b5cf37d700adc4 Encodage / décodage Base64 (j'étais accro à ne pas pouvoir importer le pot dans Eclipse ici) http://criticalbreak5.seesaa.net/article/420080828.html XML via DOM (pas utilisé après tout) http://www.fireproject.jp/feature/xml/programing/java-dom.html JSON http://www.task-notes.com/entry/20150919/1442639772

Recommended Posts

J'ai essayé de créer un outil de comparaison des prix des produits Amazon dans le monde entier avec Java, l'API Amazon Product Advertising, l'API Currency (29/01/2017)
J'ai créé un client RESAS-API en Java
[Java] J'ai essayé de faire un labyrinthe par la méthode de creusage ♪
J'ai essayé de créer une API Web qui se connecte à DB avec Quarkus
J'ai essayé de faire une authentification de base avec Java
Je voulais écrire un processus équivalent à une instruction while avec l'API Java 8 Stream
J'ai essayé de casser le bloc avec java (1)
J'ai créé un programme qui recherche la classe cible à partir du processus surchargé avec Java
J'ai essayé de créer une fonction de connexion avec Java
[Java] J'ai essayé de mettre en œuvre la recherche de produits de l'API Yahoo
J'ai essayé de vérifier le fonctionnement de la requête http (Put) avec Talented API Tester
J'ai essayé de créer un environnement de développement java8 avec Chocolatey
J'ai essayé de résumer les bases de kotlin et java
Je veux faire une liste avec kotlin et java!
Je veux créer une fonction avec kotlin et java!
J'ai essayé de convertir l'exemple d'application en microservice selon l'idée du livre "Microservice Architecture".
[Java] J'ai essayé de créer un jeu Janken que les débutants peuvent exécuter sur la console
[VBA] J'ai créé un outil pour convertir le type primitif de la classe Entity générée par Hibernate Tools en type de référence correspondant.
J'ai essayé de résoudre le problème de la "sélection multi-étapes" avec Ruby
[Rails] Implémentation de la fonction de catégorie multicouche en utilisant l'ascendance "J'ai essayé de créer une fenêtre avec Bootstrap 3"
J'ai essayé d'exprimer les résultats avant et après de la classe Date avec une ligne droite numérique
J'ai essayé de créer un environnement de serveur UML Plant avec Docker
J'ai essayé d'interagir avec Java
J'ai créé une application d'apprentissage automatique avec Dash (+ Docker) part2 ~ Façon basique d'écrire Dash ~
Une histoire sur l'utilisation de l'API League Of Legends avec JAVA
J'ai essayé de créer une application Android avec MVC maintenant (Java)
J'ai essayé de vérifier le fonctionnement du serveur gRPC avec grpcurl
J'ai essayé de résumer les méthodes de Java String et StringBuilder
J'ai créé un outil pour afficher la différence du fichier CSV
J'ai essayé de créer une fonction de groupe (babillard) avec Rails
J'ai essayé de créer un exemple de programme en utilisant le problème du spécialiste des bases de données dans la conception pilotée par domaine
J'ai essayé de créer une classe parent d'objet de valeur dans Ruby
[iOS] J'ai essayé de créer une application de traitement de type insta avec Swift
J'ai créé un bot de transaction d'arbitrage de monnaie virtuelle et essayé de gagner de l'argent
J'ai essayé d'utiliser pleinement le cœur du processeur avec Ruby
J'ai essayé de visualiser l'accès de Lambda → Athena avec AWS X-Ray
J'ai essayé de créer une application de conversation en Java à l'aide de l'IA «A3RT»
J'ai essayé de mesurer et de comparer la vitesse de Graal VM avec JMH
J'ai essayé de résumer l'API Stream
J'ai essayé de créer une méthode qui applique plusieurs filtres à la fois avec l'API Java Stream. Cela vous convient-il?
Faisons une application TODO avec Java 2 Je veux créer un modèle avec Spring Initializr et créer Hello world
[LINE @] J'ai essayé de créer un BOT de conversion de calendrier occidental de calendrier japonais [API de messagerie]
J'ai créé une application d'apprentissage automatique avec Dash (+ Docker) part3 ~ Practice ~
J'ai essayé d'implémenter une fonction équivalente à Felica Lite avec HCE-F d'Android
Ce que j'ai essayé quand je voulais obtenir tous les champs d'un haricot
J'ai essayé de faire un jeu simple avec Javafx ① "Trouvons le jeu du bonheur" (inachevé)
[Java] J'ai essayé de me connecter en utilisant le pool de connexion avec Servlet (tomcat) & MySQL & Java
Rails6 Je veux créer un tableau de valeurs avec une case à cocher
[Android] J'ai créé un écran de liste de matériaux avec ListView + Bottom Sheet
J'ai essayé de cloner une application Web pleine de bugs avec Spring Boot
J'ai essayé de créer une application Web qui recherche les tweets avec vue-word cloud et examine la tendance de ce qui est écrit dans le profil associé
java j'ai essayé de casser un simple bloc
J'ai essayé de développer un outil de gestion des effectifs
Je l'ai fait en Java pour toujours rendre (a == 1 && a == 2 && a == 3) vrai
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
J'ai essayé de créer une fonction / écran d'administrateur de site commercial avec Java et Spring
Il y a plus d'une douzaine d'années, un utilisateur de Java a tenté d'étudier les fonctions de Java8 (Generics).
J'ai essayé de faire un jeu simple avec Javafx ① "Trouvons le jeu du bonheur" (version inachevée ②)