Add files via upload

master
JesterHey 2 years ago committed by GitHub
parent 4d78f7f0dd
commit 60506e0d4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -4,6 +4,7 @@
import oss2
import os
import json
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 云端存储的文件名称都是shixun_id.json,并且要保证都是有答案的.
# 阿里云 OSS 配置
access_key_id = 'LTAI5t927vdUFZa9NRnWfrL3'
@ -29,9 +30,21 @@ def upload(name):
if 'answer' not in j.keys() or j['answer'] == '':
# 断言查询结果并抛出异常
assert False,'答案为空,不予上传'
bucket.put_object_from_file(name, name)
# 再检查文件是否存在,如果不存在,则上传
if not is_exist(name):
bucket.put_object_from_file(name, name)
def delete(name):
bucket.delete_object(name)
# 先检查文件是否存在,如果存在,则删除
if is_exist(name):
bucket.delete_object(name)
if __name__ == '__main__':
# 测试用
# print(is_exist('18503.json'))
# download('18503.json')
# delete('18503.json')
for obj in oss2.ObjectIterator(bucket):
print(obj.key)
delete('18503.json')

@ -1,5 +1,7 @@
import json
with open('demo.json','r',encoding='utf-8') as f:
with open('18503.json','r',encoding='utf-8') as f:
data = json.load(f)
for i,j in enumerate(data.items()):
print(i,j[-1])
for i,j in data.items():
print(j['answer'])
print('-'*50)

@ -0,0 +1,48 @@
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QTextEdit
from PyQt5.QtCore import QTimer
class TypewriterEffectApp(QWidget):
def __init__(self, filepath):
super().__init__()
self.filepath = filepath
self.initUI()
self.startTyping()
def initUI(self):
# 设置窗口布局和控件
layout = QVBoxLayout(self)
self.textEdit = QTextEdit(self)
self.textEdit.setReadOnly(True)
layout.addWidget(self.textEdit)
# 设置窗口
self.setWindowTitle("Typewriter Effect")
self.setGeometry(300, 300, 600, 400)
def startTyping(self):
# 读取文件内容
with open(self.filepath, 'r') as file:
self.content = file.read()
# 设置定时器逐字显示文本
self.index = 0
self.timer = QTimer(self)
self.timer.timeout.connect(self.displayNextCharacter)
self.timer.start(100) # 设置间隔(毫秒)
def displayNextCharacter(self):
if self.index < len(self.content):
self.textEdit.insertPlainText(self.content[self.index])
self.index += 1
else:
self.timer.stop()
def main():
app = QApplication(sys.argv)
ex = TypewriterEffectApp('path_to_text_file.txt') # 替换为您的文件路径
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()

@ -0,0 +1,5 @@
为了在您的代码中加入光标闪烁效果,我们可以使用一个额外的定时器来控制一个虚拟光标(例如一个竖线符号 '|')的显示和隐藏。这样,您的应用程序在显示文本的同时,也会模拟一个正在输入的效果。
以下是修改后的代码:
修改后的代码

@ -31,8 +31,6 @@ with open(json_name,'r',encoding='utf-8') as f:
用于构造请求的参数describe,require,code
向GPT提问的格式promot + 参数模板化的问题
'''
os.environ['http_proxy'] = 'http://127.0.0.1:10809'
os.environ['https_proxy'] = 'http://127.0.0.1:10809'
promot = '现在我想让你扮演一个Python程序员来解一个问题我的问题将由三个部分组成第一部分是问题的描述第二部分是问题的需求第三部分是问题的代码我需要你按照我的模板编写代码。并且你返回的代码应当是带有注释的'
#构造问题模板
@ -45,7 +43,8 @@ promot = '现在我想让你扮演一个Python程序员来解一个问题
# 初始化异步客户端
client = AsyncOpenAI(
api_key='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'
api_key='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',
base_url='https://api.op-enai.com/v1'
)
def get_answer_from_api(jsonfile:dict,client:AsyncOpenAI,promot:str) -> dict:
data = jsonfile
@ -74,10 +73,10 @@ def get_answer_from_api(jsonfile:dict,client:AsyncOpenAI,promot:str) -> dict:
tasks = [get_answer(cid,value) for cid,value in data.items()]
answers = await asyncio.gather(*tasks) # 返回一个列表,列表中的每个元素为每个异步任务的返回值
#由于异步获得的答案顺序不确定,需要处理,先把答案按照关卡id排序
answers.sort(key=lambda x:int(x.split('/')[0]))
answers = sorted(answers,key=lambda x:int(x.split('/')[0]))
# 在data的每个value中新增一个键值对键为answer值为答案并作为返回值返回
for i in range(len(answers)):
ansewer_data[list(ansewer_data.keys())[i]]['answer'] = answers[i]
ansewer_data[list(ansewer_data.keys())[i]]['answer'].split('/')[-1] = answers[i]
return ansewer_data

@ -190,3 +190,5 @@ def get_parameters(url:str,user_name:str,password:str):
else:
print('这不是一个实训作业')
exit()
get_parameters(url,user_name,password)

@ -16,7 +16,7 @@ class MyApp(QWidget):
def initUI(self):
# 加载背景图片
self.background = QPixmap('picture\\b2.png')
self.background = QPixmap('/Users/xuxiaolan/PycharmProjects/GPTPowered_EducoderHelper/picture/b2.png')
# 创建一个垂直布局
mainLayout = QVBoxLayout()

@ -0,0 +1,84 @@
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QTextEdit, QDesktopWidget, QScrollBar
from PyQt5.QtCore import QTimer
from PyQt5.QtGui import QFont
class TypewriterEffectApp(QWidget):
def __init__(self, filepaths):
super().__init__()
self.filepaths = filepaths
self.userIsScrolling = False
self.initUI()
self.startTyping()
def initUI(self):
layout = QVBoxLayout(self)
self.textEdit = QTextEdit(self)
self.textEdit.setReadOnly(True)
self.textEdit.setFont(QFont('Microsoft YaHei', 16))
layout.addWidget(self.textEdit)
self.setWindowSizeAndCenter()
# 连接滚动条的valueChanged信号
self.textEdit.verticalScrollBar().valueChanged.connect(self.onScrollBarValueChanged)
def setWindowSizeAndCenter(self):
screen = QDesktopWidget().availableGeometry()
self.resize(int(screen.width() * 0.75), int(screen.height() * 0.75))
self.centerWindow()
def centerWindow(self):
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
def startTyping(self):
self.content = ""
for filepath in self.filepaths:
with open(filepath, 'r') as file:
self.content += file.read() + "\n" + "-"*50 + "\n"
self.index = 0
self.timer = QTimer(self)
self.timer.timeout.connect(self.displayNextCharacter)
self.timer.start(5)
def displayNextCharacter(self):
if self.index < len(self.content):
char = self.content[self.index]
#如果char和下一个字符是\n那么就要执行换行
if char == '\n' and self.content[self.index+1] == '\n':
text_to_display = self.textEdit.toPlainText() + '\n\n'
self.index += 1
elif char == '\\t':
# 对制表符进行处理
text_to_display = self.textEdit.toPlainText() + '\t'
else:
# 普通字符
text_to_display = self.textEdit.toPlainText() + char
# 添加光标移除啦加了总是有神奇bug
#text_to_display += '|' if self.cursorVisible else ''
self.textEdit.setPlainText(text_to_display)
self.index += 1
self.textEdit.ensureCursorVisible() # 始终滚动到底部
else:
self.timer.stop()
#self.cursorTimer.stop() # 停止光标闪烁
def onScrollBarValueChanged(self, value):
scroll_bar = self.textEdit.verticalScrollBar()
self.userIsScrolling = value < scroll_bar.maximum()
def main():
app = QApplication(sys.argv)
filepaths = ['18503 copy.json'] # 替换为您的文件路径
ex = TypewriterEffectApp(filepaths)
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()

@ -38,7 +38,7 @@ class ImageWindow(QWidget):
def show_image():
app = QApplication(sys.argv)
ex = ImageWindow('picture\\b2txt.png') # 图片路径
ex = ImageWindow('/Users/xuxiaolan/PycharmProjects/GPTPowered_EducoderHelper/picture/b2txt.png') # 图片路径
ex.show()
sys.exit(app.exec_())

Loading…
Cancel
Save