【问题标题】:How can I run a .py file in a different .py file 10 times, each time posting the variables gotten from the first python file as a message in discord如何在不同的 .py 文件中运行 .py 文件 10 次,每次将从第一个 python 文件中获取的变量作为不和谐的消息发布
【发布时间】:2021-04-08 09:52:02
【问题描述】:
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
import base64
import time
# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/gmail.modify']


def main():
    """Shows basic usage of the Gmail API.
    Lists the user's Gmail labels.
    """
    creds = None
    # The file token.pickle stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    # If there are no (valid) credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server(port=0)
        # Save the credentials for the next run
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    service = build('gmail', 'v1', credentials=creds)

    # Call the Gmail API
    repeat = 0
    while repeat <= 10:
        labelName = "READ-BY-SCRIPT"
        LABEL_ID = 'Label_8507504117657095973'
        results = service.users().messages().list(
            userId='me', q="-label:"+labelName, maxResults=1).execute()
        messages = results.get('messages', [])
        body = []
        if not messages:
            repeat += 10
            time.sleep(60)
        else:
            for message in messages:
                msg = service.users().messages().get(
                    userId='me', id=message['id']).execute()
                labels = msg['labelIds']
                if "INBOX" in labels:
                    body.append(msg['payload']['parts'])
                    body = base64.urlsafe_b64decode(
                        body[0][0]['body']['data'])
                    body = str(body)
                    if 'b"\\r\\nHi MOHAMMAD,\\r\\n' or "b'\\r\\nHi MOHAMMAD,\\r\\n" in body:
                        if 'posted a new assignment in IX K  \\r\\n<https://classroom.google.com/c/MTEyNDMxODgyMTE0>.' in body:
                            body = body.replace(
                                "\\r\\nIf you don\\'t want to receive emails from Classroom, you can unsubscribe  \\r\\n<https://classroom.google.com/s>.\\r\\n\\r\\nGoogle LLC\\r\\n1600 Amphitheatre Pkwy\\r\\nMountain View, CA 94043 USA\\r\\n'", "")
                            body = body.replace("b\"", "").replace("b'", "").replace('"', '').replace("   ", ' ').replace(
                                "  ", ' ').replace(" \\n<https://classroom.google.com/c/MTEyNDMxODgyMTE0>", "").replace("\\n", "\\n\\n")
                            body = body.replace("\\r\\n\\nHi MOHAMMAD,\\r\\n\\n", "").replace(" \\r\\n\\n<https://classroom.google.com/c/MTEyNDMxODgyMTE0>.\\r\\n", "").replace(
                                "\\r\\n\\nIf you don't want to receive emails from Classroom, you can unsubscribe \\r\\n\\n<https://classroom.google.com/s>.\\r\\n\\n\\r\\n\\nGoogle LLC\\r\\n\\n1600 Amphitheatre Pkwy\\r\\n\\nMountain View, CA 94043 USA\\r\\n\\n", "")
                            body = body.replace("\\r", "\r").replace(
                                "\\n", "\n").replace("\n\n", "\n").replace("\\\\", "\\")
                            body = body.replace("\\xe2", "").replace(
                                "\\x80", "").replace("\\x99", "").replace("\\x98", "")
                            body = body.replace(
                                "\\r\\nIf you don\\'t want to receive emails from Classroom, you can unsubscribe  \\r\\n<https://classroom.google.com/s>.\\r\\n\\r\\nGoogle LLC\\r\\n1600 Amphitheatre Pkwy\\r\\nMountain View, CA 94043 USA\\r\\n'", "")
                            body = body.replace("\\'", "")
                            body = body.replace(
                                "\\r\\nIf you don\\'t want to receive emails from Classroom, you can unsubscribe", "")
                            body = body.replace(
                                "If you dont want to receive emails from Classroom, you can unsubscribe\n <https://classroom.google.com/s>.\nGoogle LLC\n1600 Amphitheatre Pkwy\nMountain View, CA 94043 USA\n", "")

                            TEACHER_NAME = body.split("posted", 1)[0]
                            body = body.replace(TEACHER_NAME, "")
                            LINK = str(body.split("\r\nOPEN \r\n<", 1)[1])
                            LINK = LINK[:-1]
                            body = body.replace(LINK, "").replace("<", "").replace(">", "").replace(
                                'posted a new assignment in IX K\n\r\n', "").replace("\r\nOPEN \r\n", "")
                            if 'Due: ' in body:
                                body = body.replace("\n", "          ", 1)
                                DATE = body.split('          ')[0]
                                body = body.split('          ')[1]
                            else:
                                body = body
                                DATE = 'No Due Date Provided'
                                
                            service.users().messages().modify(userId='me', id=message['id'], body={
                                'addLabelIds': ['Label_8507504117657095973']}).execute()
                            repeat += 1
                        else:
                            service.users().messages().modify(userId='me', id=message['id'], body={
                                'addLabelIds': [LABEL_ID]}).execute()
                            pass
                    else:
                        service.users().messages().modify(userId='me', id=message['id'], body={
                            'addLabelIds': [LABEL_ID]}).execute()
                        pass
                else:
                    service.users().messages().modify(userId='me', id=message['id'], body={
                        'addLabelIds': ['Label_8507504117657095973']}).execute()
                    pass


if __name__ == '__main__':
    main()

此脚本从 gmail 获取最新的未读电子邮件。如果没有新电子邮件,它会立即结束脚本。如果有一封不是来自谷歌课堂的电子邮件,它将将该电子邮件标记为已读,然后再次重复该过程,直到没有新的未读电子邮件或找到来自谷歌课堂的电子邮件。如果有来自 google 课堂的新电子邮件,它会获取教师姓名 [TEACHER_NAME]、作业链接 [LINK]、截止日期 [DATE] 和作业详细信息 [正文],然后结束脚本

我想制作一个不同的 python 文件 (bot.py),它运行另一个包含上述脚本的 python 文件 (gmail.py) 10 次。每次运行 gmail.py 时,如果这些变量由 gmail.py 定义,bot.py 通过 discord.py 在不同的消息中发送这些变量中的每一个,如果它们不是由 gmail.py 定义的,则不执行任何操作。 bot.py 然后等待 1 分钟,然后再次重复整个过程。如何才能做到这一点?我应该从哪里开始?

【问题讨论】:

    标签: python-3.x discord discord.py gmail-api discord.py-rewrite


    【解决方案1】:

    您并没有真正“运行”python 文件,您应该导入文件(或文件中的函数)并运行该函数,但可以使用 for 循环多次运行。

    【讨论】:

      猜你喜欢
      • 2021-10-16
      • 2020-09-22
      • 2014-06-24
      • 2021-06-28
      • 2022-01-23
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多