initBasti / Amazon2PlentySync (public) (License: GPLv3) (since 2019-01-27) (hash sha1)
Transfer your data from you Amazon Flatfile spreadsheet over to the Plentymarkets system. How to is included in the readme
List of commits:
Subject Hash Author Date (UTC)
improved code style and fixed problem where the dictionary containing the path was given to functions instead of the path itself 1a5bf99751b599f48d4687a9a6cbd55ffe213f5a Sebastian Fricke 2020-01-13 14:47:13
removed Barcode missing warning on parents b592779c6cc1588e2ae40394cab53d0d047746e7 Sebastian Fricke 2020-01-13 14:46:16
Added support for the amazon product types furnitureanddecor, bedandbath, swimwear b56708e55c3283a6cc2d3803b2abbb99bb125928 Sebastian Fricke 2020-01-13 14:16:40
fix failing attribute sync 87ea4bce17eba6c9c9842eaf9eb26249bf8d7da5 Sebastian Fricke 2020-01-13 12:15:35
new config handling d65bdfae89eceab6b1319d01373cf70ac7d8b63e Sebastian Fricke 2019-11-13 08:57:14
Fixed a problem, that caused Data to not pass sorting; Fixed error handling with the product type; Updated category ids 9a62d369fb24bc80765cd19e31fb255398fb8ed5 Sebastian Fricke 2019-09-12 09:27:54
fixed a merge conflict bug e6b4d9613237009d980cdbfc7ec65c3383a3495a Sebastian Fricke 2019-08-16 11:31:02
current status 15.8 94db3a5c98c596b24f00624fa4b772b9fd830b03 Sebastian Fricke 2019-08-15 14:26:42
Added manual file choosing in case of empty config 2df178528d70be15bfb2e1c9058f69e128236622 Sebastian Fricke 2019-08-15 10:11:41
Added Markdown choosing, fixed various bugs 991ed44df370cf80fc2e2c51d7427d63e221888f Sebastian Fricke 2019-08-15 09:30:55
Changed the item upload format to fix errors in the sync, moved active upload to properties because it has to be done seperatly to the creation process 3b466364e3dcdf14b4cef5b8649ec9573c992324 Sebastian Fricke 2019-06-17 14:09:23
Removed the image upload from item upload and added a exportfile together with functions to get the variation id for the image upload, the image upload is now a single process 6349c4a7177345c25aa6d8ecd03740a75fa2520f Sebastian Fricke 2019-06-13 12:58:36
Updated the feature list to the current active list b5d1675bcb56c38a97c928d7800b6a29c2dea116 LagerBadel PC:Magdalena 2019-06-11 12:11:06
fixed a bug with the encoding of very large datasets were the 10000 letters were not enough, increased waiting time but removed some mistakes that way 8f431d6a68fb21699950b1ca48a1592976789c74 LagerBadel PC:Magdalena 2019-06-06 13:41:52
small debugging improvements in writeCSV and missing colors 88db9e1362a4178805671f443554a7f0d3db9e69 LagerBadel PC:Magdalena 2019-06-06 11:52:31
Major Update added a gui category chooser, attribute id connection and updated the whole Script to work on Elastic Sync a8a6156e26e2783a695c87bda35aba725fd77023 Sebastian Fricke 2019-06-05 12:45:29
fixed a bug with the encoding function 0c5b9dd0414037743bf39fdc3420d55035bffa61 Sebastian Fricke 2019-05-14 15:10:17
Major Update added a config file for better useability and added a gui to enter the category and the name of the product further work towards the rework from dynamic import to elastic sync e4356af15a4b8f7393f85bd51c16b330bc3555af Sebastian Fricke 2019-05-14 14:43:03
Changed the price upload to identify items that are not in plentymarkets and added a webshop price 4ab9bcd988f9eb26647748a8f80f25c8c5b7f2e2 Sebastian Fricke 2019-05-03 09:18:35
added Webshop to marketconnections 84f93694fe0c67972ad951649d9f6f0d577d3e29 Sebastian Fricke 2019-05-01 14:12:00
Commit 1a5bf99751b599f48d4687a9a6cbd55ffe213f5a - improved code style and fixed problem where the dictionary containing the path was given to functions instead of the path itself
Author: Sebastian Fricke
Author date (UTC): 2020-01-13 14:47
Committer name: Sebastian Fricke
Committer date (UTC): 2020-01-13 14:47
Parent(s): b592779c6cc1588e2ae40394cab53d0d047746e7
Signing key:
Tree: daf13d3fc551728cc56bcae9c94bad735c9cf5ef
File Lines added Lines deleted
product_import.py 43 21
File product_import.py changed (mode: 100644) (index a275f02..4198196)
... ... def main():
212 212 except WrongEncodingException: except WrongEncodingException:
213 213 wrongEncodingLog(log_path=log_folder, step_number=step, step_desc=step_name[step], file_name="flatfile") wrongEncodingLog(log_path=log_folder, step_number=step, step_desc=step_name[step], file_name="flatfile")
214 214 except KeyError as kexc: except KeyError as kexc:
215 keyErrorLog(log_path=log_folder, step_number=step, step_desc=step_name[step], key_name=kexc, file_name=ntpath.basename(sheet))
215 keyErrorLog(
216 log_path=log_folder, step_number=step,
217 step_desc=step_name[step], key_name=kexc,
218 file_name=ntpath.basename(sheet['path']))
216 219 except OSError as fexc: except OSError as fexc:
217 fileNotFoundLog(log_path=log_folder, step_number=step, step_desc=step_name[step], file_name="intern_numbers")
218 #except TypeError as err:
219 #print("TypeError: {0}sys.exc_info: {1}".format( err, sys.exc_info() ))
220 #fileNotFoundLog(log_path=log_folder, step_number=step, step_desc=step_name[step], file_name="flatfile")
220 fileNotFoundLog(
221 log_path=log_folder,
222 step_number=step, step_desc=step_name[step],
223 file_name="intern_numbers")
221 224 except UnboundLocalError as uexc: except UnboundLocalError as uexc:
222 unboundLocalLog(log_path=log_folder, step_number=step, step_desc=step_name[step], filename=ntpath.basename(sheet), variable_name=uexc.args)
225 unboundLocalLog(
226 log_path=log_folder, step_number=step,
227 step_desc=step_name[step],
228 filename=ntpath.basename(sheet['path']),
229 variable_name=uexc.args)
223 230 except EmptyFieldWarning as eexc: except EmptyFieldWarning as eexc:
224 emptyFieldWarningLog(log_path=log_folder, step_number=step, step_desc=step_name[step], field_name=eexc.errorargs, file_name=ntpath.basename(sheet))
225 #except Exception as exc:
226 # print("Item Upload failed!\n")
227 # if(exc == 'item_sku'):
228 # print("It is very likely that you don't have the proper headers, use the english ones!\n")
229 # e = sys.exc_info()
230 # print("Error @ FILE: {0}, LINE: {1}\n".format( e[2].tb_frame.f_code.co_filename, e[2].tb_lineno ))
231 # for element in e:
232 # print(element)
231 emptyFieldWarningLog(
232 log_path=log_folder, step_number=step,
233 step_desc=step_name[step], field_name=eexc.errorargs,
234 file_name=ntpath.basename(sheet['path']))
233 235
234 236 try: try:
235 237 print("Feature Upload") print("Feature Upload")
 
... ... def main():
239 241 folder=upload_folder, folder=upload_folder,
240 242 filename=specific_name) filename=specific_name)
241 243 except KeyError as kexc: except KeyError as kexc:
242 keyErrorLog(log_path=log_folder, step_number=step, step_desc=step_name[step], key_name=kexc, file_name=ntpath.basename(sheet))
244 keyErrorLog(
245 log_path=log_folder, step_number=step,
246 step_desc=step_name[step], key_name=kexc,
247 file_name=ntpath.basename(sheet['path']))
243 248 except UnboundLocalError as uexc: except UnboundLocalError as uexc:
244 unboundLocalLog(log_path=log_folder, step_number=step, step_desc=step_name[step], filename=ntpath.basename(sheet), variable_name=uexc.args)
249 unboundLocalLog(
250 log_path=log_folder, step_number=step,
251 step_desc=step_name[step],
252 filename=ntpath.basename(sheet['path']),
253 variable_name=uexc.args)
245 254 except EmptyFieldWarning as eexc: except EmptyFieldWarning as eexc:
246 emptyFieldWarningLog(log_path=log_folder, step_number=step, step_desc=step_name[step], field_name=eexc.errorargs, file_name=ntpath.basename(sheet))
255 emptyFieldWarningLog(
256 log_path=log_folder, step_number=step,
257 step_desc=step_name[step], field_name=eexc.errorargs,
258 file_name=ntpath.basename(sheet['path']))
247 259 except OSError as err: except OSError as err:
248 260 print(err) print(err)
249 261 print("Missing Data, check if you have\n - a flatfile\n - a intern file table\n - export file from plentymarkets\n - a sheet with the stock numbers!\n") print("Missing Data, check if you have\n - a flatfile\n - a intern file table\n - export file from plentymarkets\n - a sheet with the stock numbers!\n")
 
... ... def main():
254 266 folder=upload_folder, folder=upload_folder,
255 267 filename=specific_name) filename=specific_name)
256 268 except KeyError as kexc: except KeyError as kexc:
257 keyErrorLog(log_path=log_folder, step_number=step, step_desc=step_name[step], key_name=kexc, file_name=ntpath.basename(sheet))
269 keyErrorLog(
270 log_path=log_folder, step_number=step,
271 step_desc=step_name[step], key_name=kexc,
272 file_name=ntpath.basename(sheet['path']))
258 273 except UnboundLocalError as uexc: except UnboundLocalError as uexc:
259 unboundLocalLog(log_path=log_folder, step_number=step, step_desc=step_name[step], filename=ntpath.basename(sheet), variable_name=uexc.args)
274 unboundLocalLog(
275 log_path=log_folder, step_number=step,
276 step_desc=step_name[step],
277 filename=ntpath.basename(sheet['path']),
278 variable_name=uexc.args)
260 279 except EmptyFieldWarning as eexc: except EmptyFieldWarning as eexc:
261 emptyFieldWarningLog(log_path=log_folder, step_number=step, step_desc=step_name[step], field_name=eexc.errorargs, file_name=ntpath.basename(sheet))
280 emptyFieldWarningLog(
281 log_path=log_folder, step_number=step,
282 step_desc=step_name[step], field_name=eexc.errorargs,
283 file_name=ntpath.basename(sheet['path']))
262 284 except OSError as err: except OSError as err:
263 285 print(err) print(err)
264 286 print("Missing Data, check if you have\n - a flatfile\n - a intern file table\n - export file from plentymarkets\n - a sheet with the stock numbers!\n") print("Missing Data, check if you have\n - a flatfile\n - a intern file table\n - export file from plentymarkets\n - a sheet with the stock numbers!\n")
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/initBasti/Amazon2PlentySync

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/initBasti/Amazon2PlentySync

Clone this repository using git:
git clone git://git.rocketgit.com/user/initBasti/Amazon2PlentySync

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main