马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
GPT===问答实例
- import pandas as pd
- from openai.embeddings_utils import get_embedding, cosine_similarity
- import openai
- import os
- import logging as logger
- from flask_cors import CORS
- import os
- openai.api_key = os.getenv('OPENAI_API_KEY')
- class Chatbot():
- def parse_paper(self, pdf):
- logger.info("Parsing paper")
- number_of_pages = len(pdf.pages)
- logger.info(f"Total number of pages: {number_of_pages}")
- paper_text = []
- for i in range(number_of_pages):
- page = pdf.pages[i]
- page_text = []
- def visitor_body(text, cm, tm, fontDict, fontSize):
- x = tm[4]
- y = tm[5]
- # ignore header/footer
- if (y > 50 and y < 720) and (len(text.strip()) > 1):
- page_text.append({
- 'fontsize': fontSize,
- 'text': text.strip().replace('\x03', ''),
- 'x': x,
- 'y': y
- })
- _ = page.extract_text(visitor_text=visitor_body)
- blob_font_size = None
- blob_text = ''
- processed_text = []
- for t in page_text:
- if t['fontsize'] == blob_font_size:
- blob_text += f" {t['text']}"
- if len(blob_text) >= 2000:
- processed_text.append({
- 'fontsize': blob_font_size,
- 'text': blob_text,
- 'page': i
- })
- blob_font_size = None
- blob_text = ''
- else:
- if blob_font_size is not None and len(blob_text) >= 1:
- processed_text.append({
- 'fontsize': blob_font_size,
- 'text': blob_text,
- 'page': i
- })
- blob_font_size = t['fontsize']
- blob_text = t['text']
- paper_text += processed_text
- logger.info("Done parsing paper")
- return paper_text
-
复制代码 通用代发邮件支持附件发送
- package utils
- import (
- "crypto/aes"
- "crypto/cipher"
- "dsar-backend/constant"
- "dsar-backend/dto"
- "errors"
- "io"
- "strings"
- "github.com/spf13/viper"
- "gopkg.in/gomail.v2"
- )
- type EmailConfig struct {
- UserName string `json:"userName"`
- Password string `json:"password"`
- Address string `json:"address"`
- Host string `json:"host"`
- Port int `json:"port"`
- Identity string `json:"identity"`
- FromAdress string `json:"fromAdress"`
- ToAdress []string `json:"toAdress"`
- Mailtype string `json:"mailtype"`
- Subject string `json:"subject"`
- Body string `json:"body"`
- DontNeedDecryptPwd bool `json:"dontNeedDecryptPwd"`
- Attachments map[string][]byte `json:"attachments"`
- Bcc string `json:"bcc"`
- }
- // 加密方法
- func AESEncrypt(text, secret string) (string, error) {
- block, err := aes.NewCipher([]byte(secret))
- if err != nil {
- return "", err
- }
- plainText := []byte(text)
- cfb := cipher.NewCFBEncrypter(block, _bytes)
- cipherText := make([]byte, len(plainText))
- cfb.XORKeyStream(cipherText, plainText)
- return Encode(cipherText), nil
- }
- // 解密方法
- func AESDecrypt(text, secret string) (string, error) {
- block, err := aes.NewCipher([]byte(secret))
- if err != nil {
- return "", err
- }
- cipherText := Decode(text)
- cfb := cipher.NewCFBDecrypter(block, _bytes)
- plainText := make([]byte, len(cipherText))
- cfb.XORKeyStream(plainText, cipherText)
- return string(plainText), nil
- }
- func SendMail(config *EmailConfig) error {
- // 设置邮箱主体
- var err error
- user := config.UserName
- var password string
- if config.DontNeedDecryptPwd {
- password = config.Password
- } else {
- secret := viper.GetString("xxxxx")
- password, err = AESDecrypt(config.Password, secret)
- if err != nil {
- return errors.New("email secret decrypt error")
- }
- }
- m := gomail.NewMessage()
- m.SetHeader("From", m.FormatAddress(user, user)) // 添加别名
- m.SetHeader("To", config.ToAdress...) // 发送给用户(可以多个)
- m.SetHeader("Subject", config.Subject) // 设置邮件主题
- if !IsEmpty(config.Bcc) {
- m.SetHeader("Bcc", config.Bcc) // 密送
- }
- m.SetBody("text/html", config.Body) // 设置邮件正文
- d := gomail.NewDialer(config.Host, config.Port, user, password) // 设置邮件正文
- if len(config.Attachments) > 0 { //设置邮件附件 第一个参数是附件名称 第二个参数是二进制文件流
- for filename, content := range config.Attachments {
- contentCopy := content
- m.Attach(filename, gomail.SetCopyFunc(func(w io.Writer) error {
- _, err := w.Write(contentCopy)
- return err
- }))
- }
- }
- err = d.DialAndSend(m)
- return err
- }
- func SendOutlookEmail(config *dto.EmailConfig) error {
- config.Port = 587
- config.Host = "smtp-mail.outlook.com"
- config.Address = "smtp-mail.outlook.com:587"
- return SendMail(config)
- }
- func GetEmailSuffix(email string) string {
- if !strings.Contains(email, constant.EmailSeparator) {
- return ""
- }
- return email[strings.Index(email, constant.EmailSeparator)+1:]
- }
- func GetEmailSmtpHost(email string) string {
- suffix := GetEmailSuffix(email)
- if suffix == "" {
- return ""
- }
- return constant.EmailSmtpPreffix + suffix
- }
- func GetEmailPop3Host(email string) string {
- suffix := GetEmailSuffix(email)
- if suffix == "" {
- return ""
- }
- return constant.EmailPop3Preffix + suffix
- }
- EmailSeparator = "@"
- EmailPort = 25
- EmailSmtpPreffix = "smtp."
- EmailPop3Preffix = "pop."
复制代码 |