Python UPS XML跟踪

2024-06-09 06:20:39 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我基本上是想让python输出货物的状态。不幸的是,ClassicUPS包只会显示交付的日期,如果是在途,则会显示“真”或“假”。在

这是默认值“不间断电源.py“:

class TrackingInfo(object):

def __init__(self, ups_conn, tracking_number):
    self.tracking_number = tracking_number

    tracking_request = {
        'TrackRequest': {
            'Request': {
                'TransactionReference': {
                    'CustomerContext': 'Get tracking status',
                    'XpciVersion': '1.0',
                },
                'RequestAction': 'Track',
                'RequestOption': 'activity',
            },
            'TrackingNumber': tracking_number,
        },
    }

    self.result = ups_conn._transmit_request('track', tracking_request)

@property
def shipment_activities(self):
    # Possible Status.StatusType.Code values:
    #   I: In Transit
    #   D: Delivered
    #   X: Exception
    #   P: Pickup
    #   M: Manifest

    shipment_activities = (self.result.dict_response['TrackResponse']
                                  ['Shipment']['Package']['Activity'])
    if type(shipment_activities) != list:
        shipment_activities = [shipment_activities]

    return shipment_activities
@property
def ship_status(self):
    # Possible Status.StatusType.Code values:
    #   I: In Transit
    #   D: Delivered
    #   X: Exception
    #   P: Pickup
    #   M: Manifest

    ship_status = (self.result.dict_response['TrackResponse']['Shipment']['Package']['Activity']['Status']['StatusType']['Description'])
    if type(ship_status) == list:
        ship_status = [ship_status]

    return ship_status
@property
def delivered(self):
    delivered = [x for x in self.shipment_activities
                 if x['Status']['StatusType']['Code'] == 'D']
    if delivered:
        return datetime.strptime(delivered[0]['Date'], '%Y%m%d')

@property
def in_transit(self):
    in_transit = [x for x in self.shipment_activities
                 if x['Status']['StatusType']['Description'] != '']

    return len(in_transit) > 0   ### If I remove "len" and "> 0" then it shows a string of results which I will show below

我自创的“ups”_测试.py“”文件:

^{pr2}$

“ups”输出_测试.py“:

[{u'Status': {u'StatusType': {u'Code': u'I', u'Description': u'THE SHIPMENT HAS
BEEN DROPPED OFF AND IS NOW AT THE UPS STORE(R)'}, u'StatusCode': {u'Code': u'XD
'}}, u'Date': u'20171006', u'ActivityLocation': {u'Address': {u'City': u'INDIANA
POLIS', u'StateProvinceCode': u'IN', u'CountryCode': u'US'}}, u'Time': u'180000'
}, {u'Status': {u'StatusType': {u'Code': u'M', u'Description': u'BILLING INFORMA
TION RECEIVED'}, u'StatusCode': {u'Code': u'MP'}}, u'Date': u'20171005', u'Activ
ityLocation': {u'Address': {u'CountryCode': u'US'}}, u'Time': u'153442'}]

我的问题是,如何让python输出特定的数据,例如:

Description = u['Description' : u'THE SHIPMENT HAS
BEEN DROPPED OFF AND IS NOW AT THE UPS STORE(R)']

Tags: inselfnumberifdefstatuscodedescription
1条回答
网友
1楼 · 发布于 2024-06-09 06:20:39

解决了这个问题。在

        tracking = ups.tracking_info(CusTracking)
        status = tracking.shipment_activities

        if status[0]['Status']['StatusType']['Code'] == 'M':
            print "Ready for pickup"
            cursor.execute("UPDATE rma_order SET from_cus_tracking_status=1 WHERE order_id=%s" % Id)

相关问题 更多 >