123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- 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)
- NeteaseMail().closeEmail(email_server)
- for i ,v in enumerate(subject_list):
- client = boto3.client('comprehend')
- 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)
- return response.json(0)
- #print(response)
- # if __name__ == '__main__':
- # ComprehendAction().get_document_classifier()
|