Seite 6 von 6 ErsteErste ... 23456
Ergebnis 126 bis 148 von 148

Thema: Amazon Bestellungen Exportieren (the hard way)

  1. #126

    Re: Amazon Bestellungen Exportieren (the hard way)

    Wäre klasse wenn Du es ggf. nochmal anpassen könntest.
    Denke ich bin nicht der einzige für den das Thema interessant ist :-)
    Frohe Weihnachten vorab :-)

  2. #127
    Hat keine Zeit :(

    (Threadstarter)

    Avatar von abflussrohr
    Registriert seit
    Aug 2013
    Ort
    Frankfurt
    Beiträge
    102

    Re: Amazon Bestellungen Exportieren (the hard way)

    Ich werd mich zwischen den Jahren mal dransetzen.
    Für diesen Beitrag bedanken sich nikolaus, flobi, pspzockerscene

  3. #128

    Re: Amazon Bestellungen Exportieren (the hard way)

    Hallo, erstmal vielen Dank für dein tolles Skript, Ich liebe es!!

    Beim heutigen Export ist mir aufgefallen, dass die Produktbeschreibungen nun fehlen, da hat Amazon wohl was geändert (siehe Attachment).

    Eine Verbesserung hätte ich noch: beim CSV-Export wäre es toll weitere Felder dabei zu haben (ich habe es für mich modifiziert) wie z.B. Datum;BestellNr;Beschreibung;Preis;Produkte

    Klicke auf die Grafik für eine größere Ansicht 

Name:	amz.JPG 
Hits:	78 
Größe:	25,0 KB 
ID:	48684

  4. #129

    Re: Amazon Bestellungen Exportieren (the hard way)

    Kannst Du vielleicht noch Angaben zum verwendeten Browser inkl. Version sagen? Bei mir läuft es nach wie vor leider nicht :-(

  5. #130

    Re: Amazon Bestellungen Exportieren (the hard way)

    Ja, leider bei mir auch nur noch weisse Seite und Standardbestellübersicht , trotz aller empfohlenen Tricks, alter Firefox Version etc...
    Das Tool war so toll...schnüff .
    Lade Dich zum Muntermachen auch gerne auf einen Latte Macchiato ein - Goetheplatz!

  6. #131

    Re: Amazon Bestellungen Exportieren (the hard way)

    Hätte ich einen Amazon Account, hätte ich diese Software schon lange in Add-on oder Kompatibeles Skript gebrannt oder zumindest es umgeschrieben, aber da ich keinen Amazon Account habe, wird daraus nichts....

    Und ja, es wäre verlockend, bei der Userbase
    Für diesen Beitrag bedankt sich pspzockerscene
    Geändert von theSplit (31.12.17 um 17:41 Uhr)
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @
    +++ thunderNote +++ Thom's Inventarverwaltung +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead +++ Add-on Flag Cookies +++ Google Image Directlinks +++ dwrox.net

  7. #132

    Re: Amazon Bestellungen Exportieren (the hard way)

    Hallo Zusammen,
    erstmal ein gesundes Neues Jahr :-) Wollte man hören ob es schon etwas neues von der "Front" gibt?

  8. #133

    Re: Amazon Bestellungen Exportieren (the hard way)

    ...das wäre auch für mich spannend zu wissen. Können wir irgendwie unterstützen? Muss ja nicht alles auf einem Paar Schultern liegen...

  9. #134
    Hat keine Zeit :(

    (Threadstarter)

    Avatar von abflussrohr
    Registriert seit
    Aug 2013
    Ort
    Frankfurt
    Beiträge
    102

    Re: Amazon Bestellungen Exportieren (the hard way)

    Ich sitze morgen ein paar Stunden im Zug, da werd ich mal beginnen das Script umzuschreiben.
    Für diesen Beitrag bedanken sich emilio, pspzockerscene, theSplit, Fhynn

  10. #135

    Re: Amazon Bestellungen Exportieren (the hard way)

    Klasse :-)
    Dann eine gute Reise und vorab vielen vielen Dank!

  11. #136
    Mitglied
    Registriert seit
    Jan 2018
    Beiträge
    1

    Re: Amazon Bestellungen Exportieren (the hard way)

    Ich habs zum laufen bekommen im aktuellen Firefox.

    Habe das Script von hier genommen
    https://github.com/GameScripting/amazon-parser

    Also nur den Inhalt der amazonparser.js !

    Code:
    1. (function() {
    2.  
    3.     function getClassElement( node, name )
    4.     {
    5.         if (node == null)
    6.             return null;
    7.  
    8.         if( node.className == name ) return node;
    9.         for( var i = 0; i < node.childNodes.length; i++ )
    10.         {
    11.             var element = getClassElement( node.childNodes[ i ], name );
    12.             if( element ) return element;
    13.         }
    14.         return null;
    15.     }
    16.  
    17.     function getClassElements( node, name )
    18.     {
    19.         if (node == null)
    20.             return null;
    21.  
    22.         if( node.className == name ) return [ node ];
    23.         var elements = [];
    24.         for( var i = 0; i < node.childNodes.length; i++ )
    25.         {
    26.             elements = elements.concat( getClassElements( node.childNodes[ i ], name ) );
    27.         }
    28.         return elements;
    29.     }
    30.  
    31.     function getTagElement( node, name )
    32.     {
    33.         if( node.nodeName == name ) return node;
    34.         for( var i = 0; i < node.childNodes.length; i++ )
    35.         {
    36.             var child = getTagElement( node.childNodes[ i ], name );
    37.             if( child ) return child;
    38.         }
    39.         return null;
    40.     }
    41.  
    42.     function findOrders( doc, year, page )
    43.     {
    44.         var orderLevels = doc.getElementsByClassName( "order-info" );
    45.         var orderBars = doc.getElementsByClassName( "a-box-group a-spacing-base" );
    46.  
    47.         orders[ year ].pages[ page ].done = true;
    48.  
    49.         if( orderLevels.length != orderBars.length )
    50.         {
    51.             console.log( "Syntax Error " + year + "/" + page );
    52.             return;
    53.         }
    54.  
    55.         for( var i = 0; i < orderLevels.length; i++ )
    56.         {
    57.             var order = { "price" : "0,00", "date" : "?", "link" : "", "names" : [], "prices" : [], "products" : 0 , "recip" : ""};
    58.  
    59.             var priceElement = getClassElement( orderLevels[ i ], "a-column a-span2" );
    60.             if( priceElement )
    61.             {
    62.                 // sometimes there is no price listed next to the item anymore, so we have to check that and insert 0,00 if it's missing
    63.                 var price_tag = priceElement.getElementsByClassName('a-color-secondary value');
    64.                 if (price_tag.length > 0) {
    65.                     order.price = priceElement.getElementsByClassName('a-color-secondary value')[0].innerHTML.replace(/EUR/,"").replace(/Summe/,"").replace(/.*coins/i,"0,00").trim();
    66.                 }
    67.                 else {
    68.                     order.price = "0,00";
    69.                 }
    70.             }
    71.             else
    72.             {
    73.                 console.log( "No price found " + year + "/" + page );
    74.             }
    75.  
    76.             var recipElement = getClassElement( orderLevels[ i ], "a-column a-span6 recipient a-span-last" );
    77.             if( recipElement )
    78.             {
    79.                 var recip_tag = recipElement.getElementsByClassName('trigger-text');
    80.                 if (recip_tag.length > 0) {
    81.                     order.recip = recipElement.getElementsByClassName('trigger-text')[0].innerHTML.trim();
    82.                 }
    83.                 else {
    84.                     order.recip = "?";
    85.                 }
    86.             }
    87.             else
    88.             {
    89.                 console.log( "No recipient found " + year + "/" + page );
    90.             }
    91.  
    92.             var dateElement = getClassElement( orderLevels[ i ], "a-color-secondary value" );
    93.             if( dateElement )
    94.             {
    95.                 order.date = dateElement.innerHTML.trim();
    96.             }
    97.             else
    98.             {
    99.                 console.log( "No date found " + year + "/" + page );
    100.             }
    101.  
    102.             var linkElement = orderLevels[ i ].getElementsByTagName('a')[1];
    103.             if( linkElement )
    104.             {
    105.                 order.link = linkElement.href;
    106.             }
    107.             else
    108.             {
    109.                 console.log( "No link found " + year + "/" + page );
    110.             }
    111.  
    112.             var nameElements = getClassElements( orderBars[ i ], "a-fixed-left-grid-col a-col-right" );
    113.             if( nameElements.length > 0 )
    114.             {
    115.                 var names = [];
    116.                 var prices = [];
    117.  
    118.                 for( var j = 0; j < nameElements.length; j++ )
    119.                 {
    120.                     // sometimes there is no link to the item, then we have to fetch the name of the item from the div tag
    121.                     var a_tags = nameElements[ j ].getElementsByTagName('A');
    122.                     if (a_tags.length > 0) {
    123.                         names.push( nameElements[ j ].getElementsByTagName('A')[0].innerHTML.trim() );
    124.                     }
    125.                     else {
    126.                         names.push( nameElements[ j ].getElementsByTagName('DIV')[0].innerHTML.trim() );
    127.                     }
    128.  
    129.                     var a_price = getClassElement(nameElements[j],'a-size-small a-color-price');
    130.                     if (a_price) {
    131.                         prices.push(a_price.textContent.trim());
    132.                     }
    133.                 }
    134.                 order.names = names;
    135.                 order.prices = prices;
    136.                 order.products = names.length;
    137.             }
    138.             else
    139.             {
    140.                 console.log( "No names found " + year + "/" + page );
    141.             }
    142.  
    143.             orders[ year ].pages[ page ].entries.push( order );
    144.         }
    145.     }
    146.  
    147.     function findShipments(doc, year, page) {
    148.         var orderElements = doc.getElementsByClassName('a-box-group a-spacing-base');
    149.         for (var i = 0; i < orderElements.length; i++) {
    150.  
    151.             var orderNumber = "";
    152.             var orderPrice = "";
    153.             var orderDate = "";
    154.  
    155.             var orderInfo = orderElements[i].getElementsByClassName('order-info');
    156.             if (orderInfo.length == 1) {
    157.  
    158.                 var colRight = orderInfo[0].getElementsByClassName('a-col-right');
    159.                 if (colRight.length == 1 ) {
    160.                     var orderNrElements = colRight[0].getElementsByClassName('a-color-secondary value');
    161.                     if (orderNrElements.length > 0) {
    162.                         orderNumber = orderNrElements[0].textContent.trim();
    163.                     }
    164.                     else {
    165.                         console.log('No order number found ' + year + '/' + page);
    166.                     }
    167.                 }
    168.                 else {
    169.                     console.log('No order number found ' + year + '/' + page);
    170.                 }
    171.  
    172.                 var priceElement = getClassElement(orderElements[i], 'a-column a-span2');
    173.                 if (priceElement) {
    174.                     var price_tag = priceElement.getElementsByClassName('a-color-secondary value');
    175.                     if (price_tag.length > 0) {
    176.                         orderPrice = priceElement.getElementsByClassName('a-color-secondary value')[0].innerHTML.replace(/EUR/, '').replace(/Summe/, '').replace(/.*coins/i, '0,00').trim();
    177.                     } else {
    178.                         orderPrice = '0,00';
    179.                     }
    180.                 } else {
    181.                     console.log('No price found ' + year + '/' + page);
    182.                 }
    183.  
    184.                 var dateElement = getClassElement(orderElements[i], 'a-color-secondary value');
    185.                 if (dateElement) {
    186.                     orderDate = dateElement.innerHTML.trim();
    187.                 } else {
    188.                     console.log('No date found ' + year + '/' + page);
    189.                 }
    190.             }
    191.  
    192.             // walking through shipments of the order
    193.             var shipmentElements = orderElements[i].getElementsByClassName('a-box shipment');
    194.             for (var s = 0; s < shipmentElements.length; s++) {
    195.                 var shipment = {
    196.                     'orderNumber' : orderNumber,
    197.                     'orderPrice' : orderPrice,
    198.                     'orderDate' : orderDate,
    199.                     'date' : '?',
    200.                     'names': [],
    201.                     'prices': [],
    202.                     'price': 0,
    203.                     'products': 0
    204.                 };
    205.  
    206.                 // finding shipment date:
    207.                 var topRowElement = getClassElement(shipmentElements[s], 'a-row shipment-top-row')
    208.                 var dateElement = getClassElement(topRowElement,'a-size-medium a-color-base a-text-bold');
    209.                 if (dateElement) {
    210.                     shipment.date = dateElement.innerHTML.trim();
    211.                 } else {
    212.                     console.log('No shipment date found ' + year + '/' + page);
    213.                 }
    214.  
    215.                 // finding Items of the shipment
    216.                 var nameElements = getClassElements(shipmentElements[s], 'a-fixed-left-grid-col a-col-right');
    217.                 if (nameElements.length > 0) {
    218.                     var names = [];
    219.                     var prices = [];
    220.                     var totalCent = 0;
    221.                     var totalCount = 0;
    222.                     var priceNotFound = false;
    223.  
    224.                     for (var j = 0; j < nameElements.length; j++) {
    225.                         var a_tags = nameElements[j].getElementsByTagName('A');
    226.                         if (a_tags.length > 0) {
    227.                             names.push(nameElements[j].getElementsByTagName('A')[0].innerHTML.trim());
    228.                         } else {
    229.                             names.push(nameElements[j].getElementsByTagName('DIV')[0].innerHTML.trim());
    230.                         }
    231.  
    232.                         var qty = getClassElement(nameElements[j].parentElement, 'item-view-qty');
    233.                         if (qty) {
    234.                             qty = parseInt ( qty.textContent.trim());
    235.                             if (isNaN(qty)) {
    236.                                 qty = 1;
    237.                             }
    238.                         }
    239.                         else {
    240.                             qty = 1;
    241.                         }
    242.  
    243.                         var a_price = getClassElement(nameElements[j],'a-size-small a-color-price');
    244.                         if (a_price) {
    245.                             var priceStr = a_price.textContent.trim();
    246.                             prices.push(priceStr);
    247.                             var price = priceStr.replace(/EUR/,"").replace(/Summe/,"").replace(/.*coins/i,"0,00").trim().replace(/\./,"").split( "," );
    248.                             var centPrice = parseInt( price[ 0 ] ) * 100 + parseInt( price[ 1 ] );
    249.                             if (isNaN(centPrice))
    250.                                 priceNotFound = true;
    251.                             else
    252.                                 totalCent += centPrice * qty;
    253.                         }
    254.  
    255.                         totalCount += qty;
    256.                     }
    257.                     shipment.names = names;
    258.                     shipment.prices = prices;
    259.                     shipment.products = totalCount;
    260.  
    261.                     if (shipmentElements.length == 1) {
    262.                         shipment.price = orderPrice;
    263.                     }
    264.                     else {
    265.                         shipment.price = getEuroString(totalCent / 100);
    266.                         if (priceNotFound)
    267.                             shipment.price = '*' + shipment.price ;
    268.                     }
    269.                 } else {
    270.                     console.log('No item names in shpiment found ' + year + '/' + page);
    271.                 }
    272.                 shipments.push(shipment);
    273.             }
    274.         }
    275.     }
    276.  
    277.     function printState()
    278.     {
    279.         var s = "";
    280.         for( var i = 0; i < orders.length; i++ )
    281.         {
    282.             s += orders[ i ].year + ":";
    283.             if( orders[ i ].pages.length == 0 )
    284.             {
    285.                 s += " waiting...";
    286.             }
    287.             for( var j = 0; j < orders[ i ].pages.length; j++ )
    288.             {
    289.                 s += " " + ( orders[ i ].pages[ j ].done ? "X" : "." );
    290.             }
    291.             s += "\n";
    292.         }
    293.  
    294.         document.body.innerHTML = "<pre>" + s + "</pre>";
    295.     }
    296.  
    297.     function getEuroString( x )
    298.     {
    299.         var eurocent = ( x.toFixed( 2 ) + "" ).split( "." );
    300.         var euro = eurocent[ 0 ];
    301.         var euroTsd = "";
    302.  
    303.         for( var i = 0; i < euro.length - 1; i++ )
    304.         {
    305.             euroTsd += euro.charAt( i );
    306.             if( ( ( euro.length - i ) % 3 ) == 1 )
    307.             {
    308.                 euroTsd += ".";
    309.             }
    310.         }
    311.         euroTsd += euro.charAt( euro.length - 1 );
    312.  
    313.         return euroTsd + "," + eurocent[ 1 ];
    314.     }
    315.  
    316.     function getOverviewLine( data )
    317.     {
    318.         return "<tr>" +
    319.             "<td align=\"right\">" + data.name + "</td>" +
    320.             "<td align=\"right\">" + getEuroString( data.cent / 100 ) + "</td>" +
    321.             "<td align=\"right\">" + data.orders + "</td>" +
    322.             "<td align=\"right\">" + data.products + "</td>" +
    323.             "<td align=\"right\">" + getEuroString( data.cent / 100 / data.products ) + "</td>" +
    324.             "<td align=\"right\">" + getEuroString( data.cent / 100 / data.month ) + "</td>" +
    325.             "</tr>";
    326.     }
    327.  
    328.     function getOrderLine( data )
    329.     {
    330.         var nameList = "<ul style=\"margin:0; padding:0 0 0 2em\">";
    331.         for( var i = 0; i < data.names.length; i++ )
    332.         {
    333.             nameList += '<li>' + data.names[ i ] +  ' | ' + data.prices[ i ] + '</li>';
    334.         }
    335.         nameList += "</ul>";
    336.  
    337.         return "<tr>" +
    338.             "<td align=\"center\" valign=\"top\"><a href=\"" + data.link + "\">Link</a></td>" +
    339.             "<td align=\"right\" valign=\"top\">" + data.date + "</td>" +
    340.             "<td align=\"center\" valign=\"top\">" + data.products + "</td>" +
    341.             "<td align=\"right\" valign=\"top\">" + data.price + "</td>" +
    342.             "<td align=\"left\" valign=\"top\">" + data.recip + "</td>" +
    343.             "<td align=\"left\" valign=\"top\">" + nameList + "</td>" +
    344.             "</tr>";
    345.     }
    346.  
    347.     function getShipmentLine( shipment )
    348.     {
    349.         var nameList = "";
    350.         for( var i = 0; i < shipment.names.length; i++ ) {
    351.             nameList += shipment.names[ i ] +  ' | ' + shipment.prices[ i ] + ' # ';
    352.         }
    353.  
    354.         return "<tr>" +
    355.             "<td align=\"center\" valign=\"top\">" + shipment.orderNumber + "</td>" +
    356.             "<td align=\"right\" valign=\"top\">" + shipment.orderDate + "</td>" +
    357.             "<td align=\"center\" valign=\"top\">" + shipment.orderPrice + "</td>" +
    358.             "<td align=\"right\" valign=\"top\">" + shipment.date + "</td>" +
    359.             "<td align=\"left\" valign=\"top\">" + shipment.products + "</td>" +
    360.             "<td align=\"left\" valign=\"top\">" + shipment.price + "</td>" +
    361.             "<td align=\"left\" valign=\"top\">" + nameList + "</td>" +
    362.             "</tr>";
    363.     }
    364.  
    365.  
    366.     function printOrders()
    367.     {
    368.         var now = new Date();
    369.         var thisYear = "" + ( 1900 + now.getYear() );
    370.         var thisYearMonthCount = now.getMonth() + 1;
    371.  
    372.         var allOrders = [];
    373.         var years = [];
    374.         var overall = { "name" : "Insg.", "cent" : 0, "orders" : 0, "products" : 0, "month" : 0 };
    375.  
    376.         for( var i = 0; i < orders.length; i++ )
    377.         {
    378.             var yearStr = orders[ i ].year.substr( 5 );
    379.             var year = { "name" : yearStr, "cent" : 0, "orders" : 0, "products" : 0, "month" : ( yearStr == thisYear ? thisYearMonthCount : 12 ) };
    380.  
    381.             for( var j = 0; j < orders[ i ].pages.length; j++ )
    382.             {
    383.                 for( var k = 0; k < orders[ i ].pages[ j ].entries.length; k++ )
    384.                 {
    385.                     var entry = orders[ i ].pages[ j ].entries[ k ];
    386.  
    387.                     var price = entry.price.replace(/\./,"").split( "," );
    388.                     var cent = parseInt( price[ 0 ] ) * 100 + parseInt( price[ 1 ] );
    389.  
    390.                     year.cent += cent;
    391.                     year.products += entry.products;
    392.                     year.orders++;
    393.  
    394.                     allOrders.push( entry );
    395.                 }
    396.             }
    397.  
    398.             overall.cent += year.cent;
    399.             overall.products += year.products;
    400.             overall.orders += year.orders;
    401.             overall.month += year.month;
    402.  
    403.             years.push( year );
    404.         }
    405.  
    406.         var text = "<h2>Uebersicht</h2>";
    407.  
    408.         text += "<table cellspacing=\"0\" cellpadding=\"4\" border=\"1\"><tr>" +
    409.             "<th>Jahr</th>" +
    410.             "<th>Euro</th>" +
    411.             "<th>Bestell.</th>" +
    412.             "<th>Produkte</th>" +
    413.             "<th>Euro/Prod.</th>" +
    414.             "<th>Euro/Monat</th>" +
    415.             "</tr>";
    416.  
    417.         text += getOverviewLine( overall );
    418.         for( var i = 0; i < years.length; i++ )
    419.         {
    420.             text += getOverviewLine( years[ i ] );
    421.         }
    422.         text += "</table>";
    423.  
    424.         text += "<h2>Einzel-Bestellungen</h2>";
    425.  
    426.         text += "<table cellspacing=\"0\" cellpadding=\"4\" border=\"1\"><tr>" +
    427.             "<th>Link</th>" +
    428.             "<th>Datum</th>" +
    429.             "<th>Produkte</th>" +
    430.             "<th>Preis</th>" +
    431.             "<th>Versandadresse</th>" +
    432.             "<th>Produktbeschreibungen</th>" +
    433.             "</tr>";
    434.  
    435.         for( var i = 0; i < allOrders.length; i++ )
    436.         {
    437.             text += getOrderLine( allOrders[ i ] );
    438.         }
    439.         text += "</table>";
    440.  
    441.         text += "<h2>Lieferungen</h2>";
    442.  
    443.         text += "<table cellspacing=\"0\" cellpadding=\"4\" border=\"1\"><tr>" +
    444.             "<th>Bestellnummer</th>" +
    445.             "<th>Bestelldatum</th>" +
    446.             "<th>Bestellsumme</th>" +
    447.             "<th>Lieferdatum</th>" +
    448.             "<th>Anzahl Produkte</th>" +
    449.             "<th>Summe / Abbuchung</th>" +
    450.             "<th>Produkte | Preis</th>" +
    451.             "</tr>";
    452.  
    453.         for( var i = 0; i < shipments.length; i++ )
    454.         {
    455.             text += getShipmentLine( shipments[ i ] );
    456.         }
    457.         text += "</table>";
    458.  
    459.         document.body.innerHTML = text;
    460.     }
    461.  
    462.     function loadOrders( event )
    463.     {
    464.         if( event.currentTarget.onlyOnce )
    465.         {
    466.             return;
    467.         }
    468.         event.currentTarget.onlyOnce = true;
    469.  
    470.         findOrders( event.currentTarget.document, event.currentTarget.yearIndex, event.currentTarget.pageIndex );
    471.         findShipments( event.currentTarget.document, event.currentTarget.yearIndex, event.currentTarget.pageIndex );
    472.  
    473.         event.currentTarget.close();
    474.     }
    475.  
    476.     function loadYear( event )
    477.     {
    478.         if( event.currentTarget.onlyOnce )
    479.         {
    480.             return;
    481.         }
    482.         event.currentTarget.onlyOnce = true;
    483.  
    484.         var doc = event.currentTarget.document;
    485.         var as = doc.getElementsByTagName( "a" );
    486.         var maxIndex = 0;
    487.         for( var i = 0; i < as.length; i++ )
    488.         {
    489.             if( as[ i ].href.match( /startIndex=(\d+)/ ) )
    490.             {
    491.                 maxIndex = Math.max( maxIndex, parseInt( RegExp.$1 ) );
    492.             }
    493.         }
    494.  
    495.         var year = event.currentTarget.yearIndex;
    496.  
    497.         for( var i = 0; i <= maxIndex; i += 10 )
    498.         {
    499.             orders[ year ].pages.push( { "done" : false, "entries" : [] } );
    500.         }
    501.  
    502.         findOrders( doc, year, 0 );
    503.         findShipments( doc, year, 0 );
    504.  
    505.         var pageUri = "https://www.amazon.de/gp/css/order-history/gp/css/order-history/ref=oss_pagination?ie=UTF8&orderFilter=" +
    506.             orders[ year ].year + "&search=&startIndex=";
    507.  
    508.         var pageIndex = 1;
    509.         for( var i = 10; i <= maxIndex; i += 10 )
    510.         {
    511.             var pageTab = window.open( pageUri + i );
    512.             pageTab.yearIndex = year;
    513.             pageTab.pageIndex = pageIndex;
    514.             pageTab.addEventListener( "load", loadOrders, true );
    515.  
    516.             pageIndex++;
    517.         }
    518.  
    519.         event.currentTarget.close();
    520.     }
    521.  
    522.     function loadYearCount( event )
    523.     {
    524.         if( event.currentTarget.onlyOnce )
    525.         {
    526.             return;
    527.         }
    528.         event.currentTarget.onlyOnce = true;
    529.  
    530.         var doc = event.currentTarget.document;
    531.         var form = doc.getElementsByClassName('time-period-chooser a-spacing-none')[0];
    532.         var filter = doc.getElementsByName('orderFilter')[0];
    533.  
    534.         for( var i = 0; i < filter.options.length; i++ )
    535.         {
    536.             var regex = /year-(\d\d\d\d)/;
    537.             if( regex.exec( filter.options[ i ].value ) )
    538.             {
    539.                 orders.push( { "year" : filter.options[ i ].value, "pages" : [] } );
    540.             }
    541.         }
    542.  
    543.         //orders.splice( 0, orders.length - 2 );
    544.  
    545.         var yearUri = "https://www.amazon.de/gp/css/order-history?";
    546.         for( var i = 0; i < form.elements.length; i++ )
    547.         {
    548.             var element = form.elements[ i ];
    549.             if( element == filter )
    550.             {
    551.                 continue;
    552.             }
    553.  
    554.             yearUri += encodeURIComponent( element.name ) + "=" + encodeURIComponent( element.value ) + "&";
    555.         }
    556.         yearUri += "orderFilter=";
    557.         //alert( yearUri );
    558.  
    559.         for( var i = 0; i < orders.length; i++ )
    560.         {
    561.             var yearTab = window.open( yearUri + orders[ i ].year );
    562.             yearTab.yearIndex = i;
    563.             yearTab.addEventListener( "load", loadYear, true );
    564.         }
    565.  
    566.         waitInterval = setInterval( waitForFinish, 1000 );
    567.  
    568.         event.currentTarget.close();
    569.     }
    570.  
    571.     function waitForFinish()
    572.     {
    573.         printState();
    574.  
    575.         for( var i = 0; i < orders.length; i++ )
    576.         {
    577.             if( orders[ i ].pages.length == 0 )
    578.             {
    579.                 return;
    580.             }
    581.             for( var j = 0; j < orders[ i ].pages.length; j++ )
    582.             {
    583.                 if( !orders[ i ].pages[ j ].done )
    584.                 {
    585.                     return;
    586.                 }
    587.             }
    588.         }
    589.  
    590.         clearInterval( waitInterval );
    591.         printOrders();
    592.     }
    593.  
    594.     var orders = [];
    595.     var shipments = [];
    596.     var waitInterval;
    597.  
    598.     var mainTab = window.open("https://www.amazon.de/gp/css/order-history/ref=ya_orders_css");
    599.     mainTab.addEventListener( "load", loadYearCount, true );
    600.  
    601. })();
    Pop-Ups erlauben/zulassen für Amazon und den Wert dom.popup_maximum in der about:config höher setzen z.B. auf 100.

    Wichtig war noch:
    Statt Punkt 7. Unter "Umgebung" sollte jetzt "Browser" anwählbar sein (dafür war die about:config-Einstellung zuständig), anwählen.
    Im Inhalt lassen.
    Danach wie gewohnt das Script ausführen.


    Oder einfach direkt in der Entwicklerkonsole ausführen STRG+SHIFT+C (Konsole und Code unten rein kopieren bei den >>


    Funktioniert auch in Google Chrome mit der Entwicklerkonstole wenn ihr vorher Pop-Ups erlaubt für
    Code (Text):
    1.  
    2. Unter chrome://settings/content/popups?search=pop-ups
    3.  
    4. [*.]amazon.de
    5.  
    6. eintragen
    7.  

    Einfachste Möglichkeit:
    Als Bookmark sieht das ganze dann so aus:
    Einfach als Bookmark/Lesezeichen abspeichern dann brauch man es nicht jedesmal in die Konsole posten und brauch nur auf den Link zu klicken:

    Code (Text):
    1. javascript:void(function(){!function(){function e(t,r){if(null==t)return null;if(t.className==r)return t;for(var n=0;n<t.childNodes.length;n++){var a=e(t.childNodes[n],r);if(a)return a}return null}function t(e,r){if(null==e)return null;if(e.className==r)return[e];for(var n=[],a=0;a<e.childNodes.length;a++)n=n.concat(t(e.childNodes[a],r));return n}function r(r,n,a){var o=r.getElementsByClassName("order-info"),l=r.getElementsByClassName("a-box-group a-spacing-base");if(m[n].pages[a].done=!0,o.length!=l.length)return void console.log("Syntax Error "+n+"/"+a);for(var s=0;s<o.length;s++){var i={price:"0,00",date:"?",link:"",names:[],prices:[],products:0,recip:""},g=e(o[s],"a-column a-span2");if(g){var c=g.getElementsByClassName("a-color-secondary value");c.length>0?i.price=g.getElementsByClassName("a-color-secondary value")[0].innerHTML.replace(/EUR/,"").replace(/Summe/,"").replace(/.*coins/i,"0,00").trim():i.price="0,00"}else console.log("No price found "+n+"/"+a);var d=e(o[s],"a-column a-span6 recipient a-span-last");if(d){var h=d.getElementsByClassName("trigger-text");h.length>0?i.recip=d.getElementsByClassName("trigger-text")[0].innerHTML.trim():i.recip="?"}else console.log("No recipient found "+n+"/"+a);var p=e(o[s],"a-color-secondary value");p?i.date=p.innerHTML.trim():console.log("No date found "+n+"/"+a);var u=o[s].getElementsByTagName("a")[1];u?i.link=u.href:console.log("No link found "+n+"/"+a);var f=t(l[s],"a-fixed-left-grid-col a-col-right");if(f.length>0){for(var v=[],y=[],N=0;N<f.length;N++){var T=f[N].getElementsByTagName("A");T.length>0?v.push(f[N].getElementsByTagName("A")[0].innerHTML.trim()):v.push(f[N].getElementsByTagName("DIV")[0].innerHTML.trim());var E=e(f[N],"a-size-small a-color-price");E&&y.push(E.textContent.trim())}i.names=v,i.prices=y,i.products=v.length}else console.log("No names found "+n+"/"+a);m[n].pages[a].entries.push(i)}}function n(r,n,a){for(var l=r.getElementsByClassName("a-box-group a-spacing-base"),s=0;s<l.length;s++){var i="",g="",c="",d=l[s].getElementsByClassName("order-info");if(1==d.length){var h=d[0].getElementsByClassName("a-col-right");if(1==h.length){var p=h[0].getElementsByClassName("a-color-secondary value");p.length>0?i=p[0].textContent.trim():console.log("No order number found "+n+"/"+a)}else console.log("No order number found "+n+"/"+a);var u=e(l[s],"a-column a-span2");if(u){var m=u.getElementsByClassName("a-color-secondary value");g=m.length>0?u.getElementsByClassName("a-color-secondary value")[0].innerHTML.replace(/EUR/,"").replace(/Summe/,"").replace(/.*coins/i,"0,00").trim():"0,00"}else console.log("No price found "+n+"/"+a);var v=e(l[s],"a-color-secondary value");v?c=v.innerHTML.trim():console.log("No date found "+n+"/"+a)}for(var y=l[s].getElementsByClassName("a-box shipment"),N=0;N<y.length;N++){var T={orderNumber:i,orderPrice:g,orderDate:c,date:"?",names:[],prices:[],price:0,products:0},E=e(y[N],"a-row shipment-top-row"),v=e(E,"a-size-medium a-color-base a-text-bold");v?T.date=v.innerHTML.trim():console.log("No shipment date found "+n+"/"+a);var b=t(y[N],"a-fixed-left-grid-col a-col-right");if(b.length>0){for(var B=[],x=[],I=0,w=0,C=!1,L=0;L<b.length;L++){var M=b[L].getElementsByTagName("A");M.length>0?B.push(b[L].getElementsByTagName("A")[0].innerHTML.trim()):B.push(b[L].getElementsByTagName("DIV")[0].innerHTML.trim());var H=e(b[L].parentElement,"item-view-qty");H?(H=parseInt(H.textContent.trim()),isNaN(H)&&(H=1)):H=1;var k=e(b[L],"a-size-small a-color-price");if(k){var P=k.textContent.trim();x.push(P);var z=P.replace(/EUR/,"").replace(/Summe/,"").replace(/.*coins/i,"0,00").trim().replace(/\./,"").split(","),A=100*parseInt(z[0])+parseInt(z[1]);isNaN(A)?C=!0:I+=A*H}w+=H}T.names=B,T.prices=x,T.products=w,1==y.length?T.price=g:(T.price=o(I/100),C&&(T.price="*"+T.price))}else console.log("No item names in shpiment found "+n+"/"+a);f.push(T)}}}function a(){for(var e="",t=0;t<m.length;t++){e+=m[t].year+":",0==m[t].pages.length&&(e+=" waiting...");for(var r=0;r<m[t].pages.length;r++)e+=" "+(m[t].pages[r].done?"X":".");e+="\n"}document.body.innerHTML="<pre>"+e+"</pre>"}function o(e){for(var t=(e.toFixed(2)+"").split("."),r=t[0],n="",a=0;a<r.length-1;a++)n+=r.charAt(a),(r.length-a)%3==1&&(n+=".");return n+=r.charAt(r.length-1),n+","+t[1]}function l(e){return'<tr><td align="right">'+e.name+'</td><td align="right">'+o(e.cent/100)+'</td><td align="right">'+e.orders+'</td><td align="right">'+e.products+'</td><td align="right">'+o(e.cent/100/e.products)+'</td><td align="right">'+o(e.cent/100/e.month)+"</td></tr>"}function s(e){for(var t='<ul style="margin:0; padding:0 0 0 2em">',r=0;r<e.names.length;r++)t+="<li>"+e.names[r]+" | "+e.prices[r]+"</li>";return t+="</ul>",'<tr><td align="center" valign="top"><a href="'+e.link+'">Link</a></td><td align="right" valign="top">'+e.date+'</td><td align="center" valign="top">'+e.products+'</td><td align="right" valign="top">'+e.price+'</td><td align="left" valign="top">'+e.recip+'</td><td align="left" valign="top">'+t+"</td></tr>"}function i(e){for(var t="",r=0;r<e.names.length;r++)t+=e.names[r]+" | "+e.prices[r]+" # ";return'<tr><td align="center" valign="top">'+e.orderNumber+'</td><td align="right" valign="top">'+e.orderDate+'</td><td align="center" valign="top">'+e.orderPrice+'</td><td align="right" valign="top">'+e.date+'</td><td align="left" valign="top">'+e.products+'</td><td align="left" valign="top">'+e.price+'</td><td align="left" valign="top">'+t+"</td></tr>"}function g(){for(var e=new Date,t=""+(1900+e.getYear()),r=e.getMonth()+1,n=[],a=[],o={name:"Insg.",cent:0,orders:0,products:0,month:0},g=0;g<m.length;g++){for(var c=m[g].year.substr(5),d={name:c,cent:0,orders:0,products:0,month:c==t?r:12},h=0;h<m[g].pages.length;h++)for(var p=0;p<m[g].pages[h].entries.length;p++){var u=m[g].pages[h].entries[p],v=u.price.replace(/\./,"").split(","),y=100*parseInt(v[0])+parseInt(v[1]);d.cent+=y,d.products+=u.products,d.orders++,n.push(u)}o.cent+=d.cent,o.products+=d.products,o.orders+=d.orders,o.month+=d.month,a.push(d)}var N="<h2>Uebersicht</h2>";N+='<table cellspacing="0" cellpadding="4" border="1"><tr><th>Jahr</th><th>Euro</th><th>Bestell.</th><th>Produkte</th><th>Euro/Prod.</th><th>Euro/Monat</th></tr>',N+=l(o);for(var g=0;g<a.length;g++)N+=l(a[g]);N+="</table>",N+="<h2>Einzel-Bestellungen</h2>",N+='<table cellspacing="0" cellpadding="4" border="1"><tr><th>Link</th><th>Datum</th><th>Produkte</th><th>Preis</th><th>Versandadresse</th><th>Produktbeschreibungen</th></tr>';for(var g=0;g<n.length;g++)N+=s(n[g]);N+="</table>",N+="<h2>Lieferungen</h2>",N+='<table cellspacing="0" cellpadding="4" border="1"><tr><th>Bestellnummer</th><th>Bestelldatum</th><th>Bestellsumme</th><th>Lieferdatum</th><th>Anzahl Produkte</th><th>Summe / Abbuchung</th><th>Produkte | Preis</th></tr>';for(var g=0;g<f.length;g++)N+=i(f[g]);N+="</table>",document.body.innerHTML=N}function c(e){e.currentTarget.onlyOnce||(e.currentTarget.onlyOnce=!0,r(e.currentTarget.document,e.currentTarget.yearIndex,e.currentTarget.pageIndex),n(e.currentTarget.document,e.currentTarget.yearIndex,e.currentTarget.pageIndex),e.currentTarget.close())}function d(e){if(!e.currentTarget.onlyOnce){e.currentTarget.onlyOnce=!0;for(var t=e.currentTarget.document,a=t.getElementsByTagName("a"),o=0,l=0;l<a.length;l++)a[l].href.match(/startIndex=(\d+)/)&&(o=Math.max(o,parseInt(RegExp.$1)));for(var s=e.currentTarget.yearIndex,l=0;o>=l;l+=10)m[s].pages.push({done:!1,entries:[]});r(t,s,0),n(t,s,0);for(var i="https://www.amazon.de/gp/css/order-history/gp/css/order-history/ref=oss_pagination?ie=UTF8&orderFilter="+m[s].year+"&search=&startIndex=",g=1,l=10;o>=l;l+=10){var d=window.open(i+l);d.yearIndex=s,d.pageIndex=g,d.addEventListener("load",c,!0),g++}e.currentTarget.close()}}function h(e){if(!e.currentTarget.onlyOnce){e.currentTarget.onlyOnce=!0;for(var t=e.currentTarget.document,r=t.getElementsByClassName("time-period-chooser a-spacing-none")[0],n=t.getElementsByName("orderFilter")[0],a=0;a<n.options.length;a++){var o=/year-(\d\d\d\d)/;o.exec(n.options[a].value)&&m.push({year:n.options[a].value,pages:[]})}for(var l="https://www.amazon.de/gp/css/order-history?",a=0;a<r.elements.length;a++){var s=r.elements[a];s!=n&&(l+=encodeURIComponent(s.name)+"="+encodeURIComponent(s.value)+"&")}l+="orderFilter=";for(var a=0;a<m.length;a++){var i=window.open(l+m[a].year);i.yearIndex=a,i.addEventListener("load",d,!0)}u=setInterval(p,1e3),e.currentTarget.close()}}function p(){a();for(var e=0;e<m.length;e++){if(0==m[e].pages.length)return;for(var t=0;t<m[e].pages.length;t++)if(!m[e].pages[t].done)return}clearInterval(u),g()}var u,m=[],f=[],v=window.open("https://www.amazon.de/gp/css/order-history/ref=ya_orders_css");v.addEventListener("load",h,!0)}();})();
    Gruß DNA

    P.S.: 13.346,77€
    Für diesen Beitrag bedanken sich bene666, pspzockerscene, Cybergreek, drfuture
    Geändert von DNA (15.01.18 um 19:19 Uhr) Grund: Google Chrome

  12. #137
    Zeitreisender

    Administrator

    Avatar von drfuture
    Registriert seit
    Jul 2013
    Ort
    in der Zukunft
    Beiträge
    6.015
    ngb:news Artikel
    17

    Re: Amazon Bestellungen Exportieren (the hard way)

    Schön @Dna und willkommen bei uns. Hoffe wir hören in Zukunft noch mehr von dir
    |_|D *`~{ Ich kenne deine Zukunft }~´* |_|D

  13. #138

    Re: Amazon Bestellungen Exportieren (the hard way)

    @DNA: Du bist der Grösste - funktioniert perfekt in Chrome, 1000 Dank!!
    Für diesen Beitrag bedankt sich DNA

  14. #139

    Re: Amazon Bestellungen Exportieren (the hard way)

    @DNA:

    hey,
    hat echt super mit Chrome geklappt auch ohne Vorkenntnisse.

    Hab eindeutig zu viel Geld dort liegen lassen.
    Für diesen Beitrag bedankt sich pspzockerscene

  15. #140

    Re: Amazon Bestellungen Exportieren (the hard way)

    Also ich bekomme es nicht hin

    Im firefox lade ich im JS-Fenster die amazonparser.js und stelle bei "Umgebung" nicht auf Browser sondern lasse sie auf Inhalt. Danach ausführen, und es passiert nix.
    Auch wenn ich auf Browser stelle passiert nix.

    Was muss ich bei Chrome machen um es zu laden und zu starten?

  16. #141

    Re: Amazon Bestellungen Exportieren (the hard way)

    @emilio: Im Chrome auf das Hamburger-Menü klicken, dann weitere Tools, dann Entwicklertools, dann auf Console klicken und den Javascript-Befehl von DNA aus der "einfachsten Möglichkeit" kopieren und mit Enter absenden
    make world.

  17. #142

    Re: Amazon Bestellungen Exportieren (the hard way)

    Danke, hat geklappt
    Wie kann ich es denn als Lesezeichen speichern?

    Und arbeitet @abflussrohr noch an einem Update? CSV export wäre schon cool!

  18. #143
    Hoster Freak Avatar von pspzockerscene
    Registriert seit
    Jul 2013
    Ort
    DE
    Beiträge
    799
    ngb:news Artikel
    1

    Re: Amazon Bestellungen Exportieren (the hard way)

    Hui bei diesem Ansturm sollte @abflussrohr etwas für das Script verlangen

    Grüße, psp

  19. #144

    Re: Amazon Bestellungen Exportieren (the hard way)

    Hallo Zusammen,

    auch ich gehöre zu den "Miteigentümern" von Amazon und würde gerne wissen, worin ich in den letzten ca. 5 Jahren einen 5-stelligen Betrag investiert habe.

    Ich habe die 6 Seiten des hiesigen Beitrags mehrfach gelesen und wahrscheinlich doch falsch angewendet, denn bei mir passiert nicht viel :-(

    Hier mal mein Vorgehen, was mache ich da falsch:
    Firefox v58.02 (64bit)
    Popup für www.amazon.de zugelassen
    about:config angepaßt (dom.popup_max = 100, devtools.chrome auf true)
    bin auf amazon angemeldet
    gehe in die JS-Umgebung
    - Variante 1: ich lade amazonparsers.js (von ganz oben runtergeladen)
    - Variante 2: ich kopiere das Script von DNA
    ich stelle die Umgebung auf Browser
    und starte das Script

    es wird wieder ein Fenster mit meiner Bestellansicht geöffnet...

    aber mehr passiert nicht

    auch keine Fehlermeldung

    Was mache ich da noch falsch
    Dank Euch
    ...Jub

    PS. zur "Einfachen Möglichkeit": ich weiß nicht, wie ich den Script von DNA als Bookmark speichern kann

    --- [2018-02-23 11:50 CET] Automatisch zusammengeführter Beitrag ---

    habe es auch mit Chrome Version 64.0.3282.186 (Offizieller Build) (64-Bit) versucht - bekomme nur die ganz normale Amazon-Seite mit meinen Bestellungen...

    --- [2018-02-23 11:55 CET] Automatisch zusammengeführter Beitrag ---

    und plötzlich hat es doch geklappt - weiß nicht, was ich vorher falsch gemacht habe


    vielen, vielen Dank an Alle
    ...Jub

  20. #145
    Mitglied
    Registriert seit
    Mar 2018
    Beiträge
    1

    Re: Amazon Bestellungen Exportieren (the hard way)

    HI - hast Du das Script im Zug machen können?

  21. #146

    Re: Amazon Bestellungen Exportieren (the hard way)

    Hallo Leute,

    habe mal kurz mit dem Skript herumgespielt. Es öffnete 20 Fenster und lief irgendwie nicht. Und da ich JS hasse (und Fehlersuche in fremden Programmen sowieso) habe dann lieber gleich ein eigenes geschrieben.

    Hier, wen es interessiert, habe es auf Github veröffentlich: https://github.com/mollat/pull-amazon-orders-to-csv

    Gruß!
    Für diesen Beitrag bedankt sich pspzockerscene

  22. #147

    Re: Amazon Bestellungen Exportieren (the hard way)

    Seit kurzem gibt es für Chrome die kostenfreie Erweiterung

    „Amazon Order History Reporter“

    mit der imhandumdrehen die gewünschten Amazon-Bestell-Reports erstellt und ausgedruckt werden können.
    Für diesen Beitrag bedankt sich pspzockerscene

  23. #148
    Hoster Freak Avatar von pspzockerscene
    Registriert seit
    Jul 2013
    Ort
    DE
    Beiträge
    799
    ngb:news Artikel
    1

    Re: Amazon Bestellungen Exportieren (the hard way)

    Anmerkung am Rande:
    Wer sich, wie z.B. HIER beschrieben seine Amazon Daten per DSGVO Anfrage holt, findet in der "Order_history.csv" alle getätigten Bestellungen samt Preisen (auch Bestellungen von z.B. amazon.co.uk stehen dabei!).
    Es kann 3-4 Wochen dauern bis man die Daten nach der Anfrage bekommt - aber diese Daten braucht man ja idR nicht andauernd.

    Diese Möglichkeit ist im Gegensatz zu den Scripten "stabiler", da sich die Struktur der Webseite sicher öfter ändern wird als diese Daten und die verlinkten Scripte sicher öfter "ausfallen".

    Grüße, psp
    Für diesen Beitrag bedankt sich Buschfunk

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •