|
@@ -0,0 +1,141 @@
|
|
|
|
+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='ckYLg4Lo9ZXJIcJEAKkzf2rWvs8Xth1FCjqiAqUw',
|
|
|
|
+ # 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()
|