├── README.md └── try_moonshot ├── file_location.txt ├── prompts.txt ├── try_chrome.exe └── try_chrome.py /README.md: -------------------------------------------------------------------------------- 1 |
有一天想把本研究领域的文章都找出来看一看,到本领域顶刊一搜,光是这一个期刊近三年的都有近百篇,真的不想挨篇挨篇读,想起了苏剑林苏神做的papers.cool网站的用AI帮忙总结论文再筛选论文的思路,想做个可以快速读我自己下载的论文集的程序
4 |本意是想直接调用kimi的API帮我读论文的程序,然后发现API太贵了,但kimi网页版免费,就结合chrome和python写了这么个东西
5 |可以通过kimi的帮助达到快速过滤论文的目的
6 | 7 |哈哈哈虚晃一枪,不需要配置环境,直接压缩包下载解压就行
10 | 11 |1. 将要读的文献放到一个文件夹下,记下绝对路径为path
14 |2. 将try_chrome.exe和file_location.txt、prompts.txt放到同一个目录下
15 |3. 将file_location.txt文件中的路径改成刚刚记下的绝对路径path
16 |4. 可以在prompts.txt里修改想问的问题
17 | 18 |1. 双击try_chrome.exe
21 |2. chrome弹出微信登录的时候登录一下
22 |3. try_chrome.exe当前目录下会生成txt文件夹,读论文输出会以txt形式记录下来
23 | 24 | 25 | 26 |tips:
27 | 28 |如果论文只有几篇,不如直接自己用kimi,论文多达几十篇以上的时候再考虑用本脚本
29 |运行的时候不要关闭后台,这个是模拟人工操作网页做的,关后台之后应该运行不了
30 |kimi是一个免费的网站,大伙尽量不要滥用,会给该网站造成太大压力
31 |AI辅助读论文只是一个帮助快速筛选的过程,真正要对论文有理解还是要看原文
32 |代码写的比较简陋,可能会出现bug,出问题请留言
33 | -------------------------------------------------------------------------------- /try_moonshot/file_location.txt: -------------------------------------------------------------------------------- 1 | C:\Users\NUOSEN\Desktop\变化检测\CD -------------------------------------------------------------------------------- /try_moonshot/prompts.txt: -------------------------------------------------------------------------------- 1 | 这篇论文试图解决什么问题? 2 | 有哪些相关研究? 3 | 论文如何解决这个问题? 4 | 论文做了哪些实验? 5 | 有什么可以进一步探索的点? 6 | 总结一下论文的主要内容 -------------------------------------------------------------------------------- /try_moonshot/try_chrome.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timks-wonder/try_moonshot/666df1306a0007852070515c82027d0f852a5fca/try_moonshot/try_chrome.exe -------------------------------------------------------------------------------- /try_moonshot/try_chrome.py: -------------------------------------------------------------------------------- 1 | import os 2 | from pathlib import Path 3 | 4 | from selenium import webdriver 5 | from selenium.webdriver.common.by import By 6 | import time 7 | import pywinauto 8 | from pywinauto.keyboard import send_keys 9 | from selenium.webdriver.support.wait import WebDriverWait 10 | from selenium.webdriver.support import expected_conditions as EC 11 | 12 | 13 | def get_filename(path, filetype): 14 | name = [] 15 | for root, dirs, files in os.walk(path): 16 | for i in files: 17 | if os.path.splitext(i)[1] == filetype: 18 | name.append(i) 19 | return name 20 | 21 | 22 | with open("./file_location.txt", "r", encoding='utf-8') as f: 23 | path = f.readline() 24 | files = get_filename(path, '.pdf') 25 | nf = len(files) 26 | with open("./prompts.txt", "r", encoding='utf-8') as f: 27 | prompts = f.readlines() 28 | prompts = [line.strip("\n") for line in prompts] 29 | np = len(prompts) 30 | txt_file = Path('./txt') 31 | txt_file.mkdir(parents=True, exist_ok=True) 32 | 33 | 34 | driver = webdriver.Chrome() 35 | driver.get('https://kimi.moonshot.cn/') 36 | time.sleep(2) 37 | 38 | 39 | is_finish_login = (By.CLASS_NAME, 'MuiButtonBase-root') 40 | is_login = EC.visibility_of_element_located(is_finish_login) 41 | is_finish_send = (By.CSS_SELECTOR, 'button[data-testid="msh-chatinput-send-button"]') 42 | is_send = EC.element_to_be_clickable(is_finish_send) 43 | is_finish_output = (By.CSS_SELECTOR, 'button[data-testid="msh-chat-segment-reAnswer"]') 44 | is_output = EC.text_to_be_present_in_element(is_finish_output, text_='再试一次') 45 | 46 | 47 | # 登录 48 | time.sleep(2) 49 | file_input = driver.find_element(by=By.CSS_SELECTOR, value='label[data-testid="msh-chatinput-upload-button"]') 50 | file_input.click() 51 | WebDriverWait(driver=driver, timeout=600, poll_frequency=0.5, ignored_exceptions=None).until_not(method=is_login) 52 | 53 | 54 | for index in range(nf): 55 | file = files[index] 56 | if index > 0: 57 | new_page = driver.find_element(by=By.CSS_SELECTOR, value='button[data-testid="msh-header-newchat-btn"]') 58 | new_page.click() 59 | time.sleep(5) 60 | file_input = driver.find_element(by=By.CSS_SELECTOR, value='label[data-testid="msh-chatinput-upload-button"]') 61 | 62 | file_input.click() 63 | app = pywinauto.Desktop() 64 | dlg = app["打开"] 65 | dlg["Toolbar3"].click() 66 | send_keys(path, with_spaces=True) 67 | send_keys("{VK_RETURN}") 68 | dlg["文件名(&N):Edit"].type_keys(f"{file}", with_spaces=True) 69 | dlg["打开(&O)"].click() 70 | WebDriverWait(driver=driver, timeout=600, poll_frequency=0.5, ignored_exceptions=None).until(method=is_send) 71 | prompt = prompts[0] 72 | texts = [] 73 | question_input = driver.find_element(by=By.CSS_SELECTOR, value='span[data-slate-node="text"]') 74 | question_input.send_keys(f'{prompt}') 75 | send_button = driver.find_element(by=By.CSS_SELECTOR, value='button[data-testid="msh-chatinput-send-button"]') 76 | send_button.click() 77 | WebDriverWait(driver=driver, timeout=600, poll_frequency=0.5, ignored_exceptions=None).until(method=is_output) 78 | driver.execute_script("window.scrollTo(0,document.body.scrollHeight)") 79 | get_text = driver.find_element(by=By.XPATH, value=f'//*[@data-index="{2}"]/div/div/div/' 80 | f'div[@class="container___qPAJp"]/div/div/' 81 | f'div[@class="markdown___BV5oI"]') 82 | texts.append(get_text.text) 83 | for p in range(np-1): 84 | prompt = prompts[p+1] 85 | # 输入prompt 86 | question_input = driver.find_element(by=By.CSS_SELECTOR, value='span[data-slate-node="text"]') 87 | question_input.send_keys(f'{prompt}') 88 | time.sleep(1) 89 | send_button = driver.find_element(by=By.CSS_SELECTOR, value='button[data-testid="msh-chatinput-send-button"]') 90 | send_button.click() 91 | time.sleep(4) 92 | WebDriverWait(driver=driver, timeout=600, poll_frequency=0.5, ignored_exceptions=None).until(method=is_output) 93 | try: 94 | down_roll = driver.find_element(by=By.CLASS_NAME, value="css-1i8oban") 95 | down_roll.click() 96 | except: 97 | pass 98 | get_text = driver.find_element(by=By.XPATH, value=f'//*[@data-index="{(p+2)*2}"]/div/div/div/' 99 | f'div[@class="container___qPAJp"]/div/div/' 100 | f'div[@class="markdown___BV5oI"]') 101 | texts.append(get_text.text) 102 | 103 | WebDriverWait(driver=driver, timeout=600, poll_frequency=0.5, ignored_exceptions=None).until(method=is_output) 104 | for t in range(np): 105 | prompt = prompts[t] 106 | text = texts[t] 107 | with open(f'./txt/{file.split(".")[0]}.txt', 'a') as f: 108 | f.write(prompt) 109 | f.write(':\n') 110 | f.write(text) 111 | f.write('\n\n') 112 | --------------------------------------------------------------------------------