Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

  1. The knoemaupload package uploads documents via API to Mckinsey portal.

  2. Sample calling script:

    from Upload import KnoemaUpload
    
    filepath=r"Path_Of_Your_Document_Upload" # Fill your own Path and Cookies.
    cookies= {Your_Cookies} # Generate your own cookies.
    obj=KnoemaUpload.KnoemaDocumentUploader(filepath,cookies)
    obj.FileUpload('client_name') # There is an option to pass 'headers' as parameter in FileUpload()

3. Package code:

import requests
import os, sys
import json
import smtplib

EMAIL_ADDRESS = 'ssubramanian@knoema.com'
EMAIL_PASSWORD = 'mtwnswdyohactvfm'
EMAIL_RECEIVERS = 'third-party-data-etl@knoema.com'

class KnoemaDocumentUploader():
    UPL_URL='https://tmt.knoema.com/document/upload'
    DOCID_URL = 'https://tmt.knoema.com/document/getlink?id='
    headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'}
    PUBLIC_URL = 'https://tmt.knoema.com/resource/share'
    def __init__(self,filepath,cookies):
        self.filepath= filepath
        self.cookies=cookies
        self.filename=os.path.basename(filepath)
        #print(self.filename)
        
    def FileUpload(self,CLIENT,headers=headers):
        files_ = {'file': (self.filename, open(self.filepath, 'rb'))}
        #try:
        response = requests.post(KnoemaDocumentUploader.UPL_URL, cookies=self.cookies, files=files_)
        print('>>>response status code: ', response.status_code, '\n')
        text_res=response.text
        if (len(text_res)>300 and "errorBeacon" in text_res):
            subject = f'Mckinsey TMT File Upload Failed--Update {CLIENT} Cookies'
            body = f'The upload failed most likely due to stale cookie. Update the cookie for {CLIENT}'
            msg = f'Subject: {subject} \n\n Message: {body}'
            with smtplib.SMTP('smtp.gmail.com',587) as smtp:
                smtp.ehlo()
                smtp.starttls()
                smtp.ehlo()
                smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
                smtp.sendmail(EMAIL_ADDRESS,EMAIL_RECEIVERS,msg)
            print(">>>> Exiting the routine due to stale cookie")
            sys.exit()

        json_ = json.loads(response.text)
        
        if 'error' in json_.keys():
            raise Exception(str(json_['error']))
        else:
            pass
            
        
        res = requests.get(KnoemaDocumentUploader.DOCID_URL + json_['id'],  cookies=self.cookies)
        file_url = res.json()
        
        payload = {"IsPublic": "true", "Id": json_['id']}
        r = requests.post(KnoemaDocumentUploader.PUBLIC_URL, cookies=self.cookies, data=json.dumps(payload), headers = {'Content-Type': 'application/json'})

        test_url = 'https://tmt.knoema.com/' + json_['id']
        #print(">>>Test URL for developer to delete test files",test_url)
        download_url = 'https://tmt.knoema.com/'+file_url
        print('>>>Download file url for users :', download_url)

        file = open('Download.txt', 'a')
        file.writelines(download_url + '\n')
        file.close()
        

  • No labels

0 Comments

You are not logged in. Any changes you make will be marked as anonymous. You may want to Log In if you already have an account.