import boto3 from boto3 import Session from django.views import View from model.models import EmailSortModel, EmailConfigModel from Utils.NeteaseMail import NeteaseMail from django.views.generic import TemplateView from object.ResponseObject import ResponseObject class ComprehendView(TemplateView): def get(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation') return self.validation(request.GET, request, operation) def post(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation') return self.validation(request.POST, request, operation) def validation(self, request_dict, request, operation): response = ResponseObject() if operation is None: return response.json(444, 'error path') else: if operation == 'createSort': return self.createSort(request_dict, response) elif operation == 'doStartSortWord': return self.doStartSortWord(request_dict, response) elif operation == 'getDocumentClassifier': return self.get_document_classifier(request_dict, response) def createSort(self,request_dict, response): client = boto3.client('comprehend', region_name='region') # Create a document classifier create_response = client.create_document_classifier( InputDataConfig={ 'S3Uri': 's3://S3Bucket/docclass/file name' }, DataAccessRoleArn='arn:aws:iam::account number:role/resource name', DocumentClassifierName='SampleCodeClassifier1', LanguageCode='en' ) print("Create response: %s\n", create_response) # Check the status of the classifier describe_response = client.describe_document_classifier( DocumentClassifierArn=create_response['DocumentClassifierArn']) print("Describe response: %s\n", describe_response) # List all classifiers in account list_response = client.list_document_classifiers() print("List response: %s\n", list_response) def doStartSortWord(self,request_dict, response): client = boto3.client('comprehend', region_name='region') start_response = client.start_document_classification_job( InputDataConfig={ 'S3Uri': 's3://srikad-us-west-2-input/docclass/file name', 'InputFormat': 'ONE_DOC_PER_LINE' }, OutputDataConfig={ 'S3Uri': 's3://S3Bucket/output' }, DataAccessRoleArn='arn:aws:iam::account number:role/resource name', DocumentClassifierArn= 'arn:aws:comprehend:region:account number:document-classifier/SampleCodeClassifier1' ) print("Start response: %s\n", start_response) # Check the status of the job describe_response = client.describe_document_classification_job(JobId=start_response['JobId']) print("Describe response: %s\n", describe_response) # List all classification jobs in account list_response = client.list_document_classification_jobs() print("List response: %s\n", list_response) def get_document_classifier(self,request_dict, response): # aws_key = "AKIA2E67UIMD45Y3HL53" # 【你的 aws_access_key】 # aws_secret = "ckYLg4Lo9ZXJIcJEAKkzf2rWvs8Xth1FCjqiAqUw" # 【你的 aws_secret_key】 # session = Session(aws_access_key_id=aws_key, # aws_secret_access_key=aws_secret, # region_name="us-east-1") # 此处根据自己的 s3 地区位置改变 # client = session.client("asj-amazon-comprehend") # client = boto3.client( # 'asj-amazon-comprehend', # aws_access_key_id='AKIA2E67UIMD45Y3HL53', # aws_secret_access_key='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', # region_name='us-east-1' # ) #client = boto3.client(service_name='comprehend',region_name='us-east-1',aws_access_key_id='AKIA2E67UIMD45Y3HL53',aws_secret_access_key='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') # response = client.describe_document_classifier( # DocumentClassifierArn='arn:aws:comprehend:us-east-1:697864307463:document-classifier/txttwo' # ) # print(response) ec_qs =EmailConfigModel.objects.filter(emailtag=1) #获取总邮件 for ec in ec_qs: email_server = NeteaseMail().loginEmail(ec.emailserver, ec.fromaddr, ec.password, ec.emailserverport) subject_list, from_list, bodydata_list = NeteaseMail().getEmailContext(email_server) print(subject_list, from_list, bodydata_list) print('成功拿到邮箱数据') NeteaseMail().closeEmail(email_server) for i ,v in enumerate(subject_list): client = boto3.client('comprehend') # client = boto3.client('comprehend',region_name='us-east-1') response = client.classify_document( Text=bodydata_list[i], EndpointArn='arn:aws:comprehend:us-east-1:697864307463:document-classifier-endpoint/test' ) #print(response.index(max(response['Classes']['Score']))) nums = [] for cls in response['Classes']: print(cls['Name']) nums.append(cls['Score']) print(response['Classes'][nums.index(max(nums))]) es_qs = EmailSortModel.objects.filter(sort=response['Classes'][nums.index(max(nums))]['Name']) if es_qs.exists(): uemail_qs = EmailConfigModel.objects.filter(userid=es_qs[0]['userid'], langconfig__langcode='en') if uemail_qs.exists(): for uem in uemail_qs: NeteaseMail().sentemail(bodydata_list[i], subject_list[i], from_list[i], uem.fromaddr, ec['fromaddr'], ec['password']) return response.json(0) #print(response) # if __name__ == '__main__': # ComprehendAction().get_document_classifier()