本來是想用browser-use讓AI(Gemini)自行去分析的
但可能不太會用,只能抓到兩三筆資料 :(
執行上也稍微比較久,約2分鐘
import asyncio
import os
import sys
import logging
import io
import re
from dotenv import load_dotenv
from langchain_google_genai import ChatGoogleGenerativeAI
from pydantic import SecretStr
from typing import List
from browser_use import Agent, BrowserConfig, Controller
from browser_use.browser.browser import Browser
from browser_use.browser.context import BrowserContextConfig
from pydantic import BaseModel
# Define the output format as a Pydantic model
class Post(BaseModel):
post_title: str
post_sha256_code: str
class Posts(BaseModel):
posts: List[Post]
controller = Controller(output_model=Posts)
# Capture logging output
log_capture = io.StringIO()
logging.basicConfig(stream=log_capture, level=logging.INFO)
load_dotenv()
api_key = os.getenv('GEMINI_API_KEY')
if not api_key:
raise ValueError('GEMINI_API_KEY is not set')
llm = ChatGoogleGenerativeAI(model='gemini-2.0-flash-exp', api_key=SecretStr(api_key))
browser = Browser(
config=BrowserConfig(
new_context_config=BrowserContextConfig(
viewport_expansion=0,
)
)
)
async def run_search():
agent = Agent(
task='Go to https://download.qt.io/archive/qt/6.5/6.5.3/submodules/ and give me the sha256 code for *.tar.xz. the sha256 code is at Details',
llm=llm,
max_actions_per_step=4,
browser=browser,
controller=controller,
)
history = await agent.run()
# Extract SHA256 codes from log
log_content = log_capture.getvalue()
sha256_pattern = re.compile(r"SHA-256 hash(.*?): ([a-f0-9]+)")
sha256_matches = sha256_pattern.findall(log_content)
if sha256_matches:
with open("result.txt", "a") as f:
for filename, sha256 in sha256_matches:
f.write('\n--------------------------------\n')
f.write(f'1_Title: {filename}\n')
f.write(f'1_SHA256: {sha256}\n')
result = history.final_result()
if result:
parsed: Posts = Posts.model_validate_json(result)
with open("result.txt", "a") as f:
for post in parsed.posts:
f.write('\n--------------------------------\n')
f.write(f'2_Title: {post.post_title}\n')
f.write(f'2_SHA256: {post.post_sha256_code}\n')
else:
print('No result')
await agent.run(max_steps=125)
if __name__ == '__main__':
asyncio.run(run_search())
後來還是用爬的方式來做,又快又準
缺點,網頁格式變的話…
by perplexity.ai
import requests
import re
from urllib.parse import urljoin
from bs4 import BeautifulSoup
BASE_URL = "https://download.qt.io/archive/qt/6.5/6.5.3/submodules/"
def get_tar_xz_files():
"""Fetch all .tar.xz filenames from the index page"""
response = requests.get(BASE_URL)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
files = []
for link in soup.find_all('a'):
href = link.get('href')
if href and href.endswith('.tar.xz'):
files.append(href)
return files
def get_sha256_from_mirrorlist(filename):
"""Fetch SHA-256 from the mirrorlist for a given .tar.xz file"""
mirrorlist_url = urljoin(BASE_URL, f"{filename}.mirrorlist")
try:
response = requests.get(mirrorlist_url, timeout=10)
response.raise_for_status()
# Find first 64-character hex string
match = re.search(r'\b[a-fA-F0-9]{64}\b', response.text)
return match.group(0) if match else None
except requests.exceptions.RequestException as e:
print(f"⚠️ Error fetching mirrorlist for {filename}: {e}")
return None
def main():
tar_xz_files = get_tar_xz_files()
print(f"Found {len(tar_xz_files)} .tar.xz files:")
print("─" * 60)
for filename in tar_xz_files:
sha256 = get_sha256_from_mirrorlist(filename)
print(f"File: {filename}")
print(f"SHA-256: {sha256}" if sha256 else "No SHA-256 found")
print("─" * 60)
if __name__ == "__main__":
main()
輸出結果
$ python3 qt_sha256.py
Found 38 .tar.xz files:
────────────────────────────────────────────────────────────
File: qtwebview-everywhere-src-6.5.3.tar.xz
SHA-256: cf1cf14c9409aab9a904eb56e76a34cd98a447e6448dea47269f922b21e77149
────────────────────────────────────────────────────────────
File: qtwebsockets-everywhere-src-6.5.3.tar.xz
SHA-256: 04e2ae17594d56cf2930c99dbd2a97eb88ff514b445c17ff7b86e8978fc7a7c3
────────────────────────────────────────────────────────────
File: qtwebengine-everywhere-src-6.5.3.tar.xz
SHA-256: 2314ce9b0dd5f75f629077daad5a5781bac164d508ecff2ebad56ff2bc8745e5
────────────────────────────────────────────────────────────
File: qtwebchannel-everywhere-src-6.5.3.tar.xz
SHA-256: 129f89a6aba792c47f110582967f4f586457e7b63de3465e5f1dd210ce6bf04a
────────────────────────────────────────────────────────────
File: qtwayland-everywhere-src-6.5.3.tar.xz
SHA-256: f72a8588b7ff9b81bb311f2c8b541c11788b81003537b010360ca80eae52369f
────────────────────────────────────────────────────────────
File: qtvirtualkeyboard-everywhere-src-6.5.3.tar.xz
SHA-256: 31808f15126940d737db3c3e5c2183e502c8668b6b2943da5885d71c1b3ae62d
────────────────────────────────────────────────────────────
File: qttranslations-everywhere-src-6.5.3.tar.xz
SHA-256: 83b44c0ddcf9c28e836f63c21a3fea2fb2c24cb630eefc79984f5bec44e949e3
────────────────────────────────────────────────────────────
File: qttools-everywhere-src-6.5.3.tar.xz
SHA-256: fc91d32b3f696725bbb48b0df240c25b606bbee3bd22627cfcbee876a6405e37
────────────────────────────────────────────────────────────
File: qtsvg-everywhere-src-6.5.3.tar.xz
SHA-256: fc41c47b69ca1f80473cd4b11996394155781105345392961d064d04f95d5bef
────────────────────────────────────────────────────────────
File: qtspeech-everywhere-src-6.5.3.tar.xz
SHA-256: 79c2f42c4d921a7e73825ead5681b5b32eac52f5e180e1899bb86e68206b0b9c
────────────────────────────────────────────────────────────
File: qtshadertools-everywhere-src-6.5.3.tar.xz
SHA-256: 201b7b3a409f048e78c5defb90a70af423166313ad4386f8e6b83990ae0f3573
────────────────────────────────────────────────────────────
File: qtserialport-everywhere-src-6.5.3.tar.xz
SHA-256: 99cbad398cb1422884f36276d226b54c501df9cb8e70eb0bd887bf6180844eda
────────────────────────────────────────────────────────────
File: qtserialbus-everywhere-src-6.5.3.tar.xz
SHA-256: 216d9599150d77c4717ec017b89b53e8d936c7d101c464d98219dd0f32aad08d
────────────────────────────────────────────────────────────
File: qtsensors-everywhere-src-6.5.3.tar.xz
SHA-256: 19d1a7335a83124df886701ef2da389c3ba8e943ee7262c76c6d9b242e2dc293
────────────────────────────────────────────────────────────
File: qtscxml-everywhere-src-6.5.3.tar.xz
SHA-256: f3d8672ac05fe8155759086fa1f97568cd39caab5e6c93ea1af7f76e098aa751
────────────────────────────────────────────────────────────
File: qtremoteobjects-everywhere-src-6.5.3.tar.xz
SHA-256: 8d9c9e40fb8b092c25c5bd3a4ab0fa316a2b64d7733d9d54604bc5b40446e7a1
────────────────────────────────────────────────────────────
File: qtquicktimeline-everywhere-src-6.5.3.tar.xz
SHA-256: fb3e4cec57d88f8130f31288b3f405dacfcae2e60d67c8030bea0ddfca2e7b5b
────────────────────────────────────────────────────────────
File: qtquickeffectmaker-everywhere-src-6.5.3.tar.xz
SHA-256: b9679bbad1cccb1433fd66b4c95950c5930c0813b486b53c29148059a8aa9ca7
────────────────────────────────────────────────────────────
File: qtquick3dphysics-everywhere-src-6.5.3.tar.xz
SHA-256: 3291301d243ff39febc96d6641eb4b44feeef43087c475cbb0b22dc910a5a4ba
────────────────────────────────────────────────────────────
File: qtquick3d-everywhere-src-6.5.3.tar.xz
SHA-256: 6682aa603f308de409b26f3d2665f3467d722e6f2e8d8d022fcd44c57888ce5d
────────────────────────────────────────────────────────────
File: qtpositioning-everywhere-src-6.5.3.tar.xz
SHA-256: ab1a099b2b3e7330398b2ab2b4420a3c32904d74ce4515ebb8e2cb83209d6d8f
────────────────────────────────────────────────────────────
File: qtnetworkauth-everywhere-src-6.5.3.tar.xz
SHA-256: 36b45d75595fcd8886f54fb66253dd0db5f0bd10624360bf84a48625c008a702
────────────────────────────────────────────────────────────
File: qtmultimedia-everywhere-src-6.5.3.tar.xz
SHA-256: ed64f3d2bb98c20cd12df19dbf84dc0233d9fcb2078fea812adf42eef9a0ff27
────────────────────────────────────────────────────────────
File: qtlottie-everywhere-src-6.5.3.tar.xz
SHA-256: 3d2c4685b104c01c341fed9528f56d63a69d8ee6d5996bc55100720637a95722
────────────────────────────────────────────────────────────
File: qtlocation-everywhere-src-6.5.3.tar.xz
SHA-256: 530cd1d597bfa7018cddd243594b47ee4252544b577ce1e9976c7253ca64e7cc
────────────────────────────────────────────────────────────
File: qtlanguageserver-everywhere-src-6.5.3.tar.xz
SHA-256: c0c0c174c0554c932bc4e4f4c08a69f28e05f5608d92fe4ae2c7986b237a218a
────────────────────────────────────────────────────────────
File: qtimageformats-everywhere-src-6.5.3.tar.xz
SHA-256: 49c026c49a738ed024c072a4b205cdc1235507da4a2d0ea740bd574fff138ccb
────────────────────────────────────────────────────────────
File: qthttpserver-everywhere-src-6.5.3.tar.xz
SHA-256: 055489552177e2182837153f52a51290213bc76ac2f1131a57f5cc341c566c47
────────────────────────────────────────────────────────────
File: qtgrpc-everywhere-src-6.5.3.tar.xz
SHA-256: 6ebf7a73daa6388e15e95a1de021dc4d097fe0f6b71b106178c388cc7ec18b83
────────────────────────────────────────────────────────────
File: qtdoc-everywhere-src-6.5.3.tar.xz
SHA-256: ef08bcf8daec21c37e23fc39e696f1e067dff29b751fb924bb53c189d80783cc
────────────────────────────────────────────────────────────
File: qtdeclarative-everywhere-src-6.5.3.tar.xz
SHA-256: 404dd6d2d206bb882ecd6622f0c708c9d6bd724a4d83776e13c49761c159d215
────────────────────────────────────────────────────────────
File: qtdatavis3d-everywhere-src-6.5.3.tar.xz
SHA-256: 11b6c0b06e18dcdfbc652ff185d3be16c034052d240c3befa917d3bb463dc061
────────────────────────────────────────────────────────────
File: qtconnectivity-everywhere-src-6.5.3.tar.xz
SHA-256: 242231b06071eff72c8b2a39e54bf813f7eed3ef53473d2eb711603634be3f5b
────────────────────────────────────────────────────────────
File: qtcharts-everywhere-src-6.5.3.tar.xz
SHA-256: 4a9b800e0af5bfded97592aa5836cfd761bf4de1ada414a603951f021d752ed9
────────────────────────────────────────────────────────────
File: qtbase-everywhere-src-6.5.3.tar.xz
SHA-256: df2f4a230be4ea04f9798f2c19ab1413a3b8ec6a80bef359f50284235307b546
────────────────────────────────────────────────────────────
File: qtactiveqt-everywhere-src-6.5.3.tar.xz
SHA-256: 32ac51da95ed081f33f5644cd2f26b3a6714d303edb8f994c412f08225605cd1
────────────────────────────────────────────────────────────
File: qt5compat-everywhere-src-6.5.3.tar.xz
SHA-256: eeb2a9e27771e15aaa7935f61a8024b46cc8e2044ae0ceacff2754c0cb806464
────────────────────────────────────────────────────────────
File: qt3d-everywhere-src-6.5.3.tar.xz
SHA-256: 0d369f2028fd5208cb664ce39708e450005755187f4ac24fdbda7a6c3938fddc
────────────────────────────────────────────────────────────
6.5.5
Found 39 .tar.xz files:
────────────────────────────────────────────────────────────
File: tqtc-qt5-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: cc1e0dee921fbbd663eed19db89566f4005a109b189b4c6dc3002077640792eb
────────────────────────────────────────────────────────────
File: qtwebview-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 95fdf7cb78ad0f269f53aaf95eaa30b2ff3330bdb669c5cc2719282cc5f46f72
────────────────────────────────────────────────────────────
File: qtwebsockets-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 2e0b1be17d8cd16cce7907f5a52a372d6ed5ab4525f72764b34ebcee3a3f0077
────────────────────────────────────────────────────────────
File: qtwebengine-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 1adba6eab8131eb64e9f5e58149f17ac4bf49932ed3898fb2aa6d0e9b7f2bca5
────────────────────────────────────────────────────────────
File: qtwebchannel-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 6c461afe29a8deb62a0b63cad7bff6d5f727ef92989c6233c83552336c767156
────────────────────────────────────────────────────────────
File: qtwayland-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: b95a5ae15f9b06b5341227d8972c7e083d1cfba71d30fe3b6815994fd7adef74
────────────────────────────────────────────────────────────
File: qtvirtualkeyboard-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 8eb44842938536d253b49aa68e412e31d3ea150ed1da770c8f2b552cef76d57f
────────────────────────────────────────────────────────────
File: qttranslations-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 76d6585126decee4e67ff82258216f57311ae01134c3ff02fad4326bcf46c650
────────────────────────────────────────────────────────────
File: qttools-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 023517b8364add8be5caa2b15f4df41c5d0039455c0fade00944eb56b400ef0e
────────────────────────────────────────────────────────────
File: qtsvg-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 4470c916c360dd39a7f9834fcbf3c066f1a906296483bae4c6cdc3f236081d38
────────────────────────────────────────────────────────────
File: qtspeech-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: a23e145600be21a04297c87d0557e78f0e61f862f33e66c88eb7ed4add67411a
────────────────────────────────────────────────────────────
File: qtshadertools-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: a40da6d125d7727489090d71d3dc21427e37ebe475206b790f4e1ffb00d4060f
────────────────────────────────────────────────────────────
File: qtserialport-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 7e97147e9a16b1071a42ade46865085ed09702f2e586f2327106946dd7471864
────────────────────────────────────────────────────────────
File: qtserialbus-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 70e1e5d3e7725cb1f212cba343b22f636fffffc2a35fb2187901d5d0e577b62c
────────────────────────────────────────────────────────────
File: qtsensors-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: e18ce7612d9954322bb0d044b000ce479921dcf7f4b912a7f90a082a1df59e77
────────────────────────────────────────────────────────────
File: qtscxml-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 40f7ac43f0a340ca610395f8ef59bec6071f18b8f9b33a53bebd8eefa2b6bff2
────────────────────────────────────────────────────────────
File: qtremoteobjects-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: ba57aaf5593f6e644cce8313bc363ec9eb0c3f2bfd168f4c51054a150acbffd2
────────────────────────────────────────────────────────────
File: qtquicktimeline-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: bcdc1e94b9d43f5fa49af52f26518546ec50317b77175125a5fee6b164ffcc4a
────────────────────────────────────────────────────────────
File: qtquickeffectmaker-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 206f17224b3f0efc9e3bb44a1169bb099a287a0775302f80bc6b45df65a8c6a0
────────────────────────────────────────────────────────────
File: qtquick3dphysics-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: a467dd5f829f713d88dcfb2e89d34fc3823708435a354601e4808f2e7b3f7d5b
────────────────────────────────────────────────────────────
File: qtquick3d-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: fb371c7a1dc29235aad40edfb1fee790dd73eb9d9d894f1f21dba0dffcc78245
────────────────────────────────────────────────────────────
File: qtpositioning-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 6bf1c05704f300905380be42601435aa893271698dac11c14987676676415377
────────────────────────────────────────────────────────────
File: qtnetworkauth-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: d73373b03a3ce19e006cd2a48a994ea4e737d1629c3c438f230537c414550c1b
────────────────────────────────────────────────────────────
File: qtmultimedia-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 0544f4cddaa964c3c3b1196bb6452bb8fdc56860a1c14a1d87f2d4f29ff71ff7
────────────────────────────────────────────────────────────
File: qtlottie-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: ceb8513044bd4c5728c4cd0eca8f415cab6aed56111d1fca6ac0b9af4a54a828
────────────────────────────────────────────────────────────
File: qtlocation-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: c8675107f46f5fda79161632103d79248b251267db5e169140344389d03a891f
────────────────────────────────────────────────────────────
File: qtlanguageserver-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 79fe7036683a393d06f37af5883eb1a1dc1f8552ac31059dbac34fbc70a59394
────────────────────────────────────────────────────────────
File: qtimageformats-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: d8353a09aab68b2fec9d611e1af5fc00a6bff76fd3a9475d745147837e1558ea
────────────────────────────────────────────────────────────
File: qthttpserver-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 648c9a58fab5897a7ed5f489280ed42fea3d95805cdac7ebbd73fea18b9f58db
────────────────────────────────────────────────────────────
File: qtgrpc-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 6d78a685bb24e18ca876315efee77cd995ec271f1db36c58cdac3ce70c029706
────────────────────────────────────────────────────────────
File: qtdoc-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 791eb1439d6431d737abada4f467136bb2f1672fd1dd55e928dffa3e9c53c1dc
────────────────────────────────────────────────────────────
File: qtdeclarative-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 97fc8b5941252a8efa4739db2541b94d3904b4cee167049d520c7545426ccc21
────────────────────────────────────────────────────────────
File: qtdatavis3d-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 5d0af346fb2827fc5ae6cd32804ef393668a495de52fcdfaa9275e99094beb70
────────────────────────────────────────────────────────────
File: qtconnectivity-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 7b01a67783f1224d011870859d868d53a53fe95b88d337c43d10d5567e32ac6f
────────────────────────────────────────────────────────────
File: qtcharts-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 1a85c421a45c329f9eb4dd3a27a844a59d52744bbba33c15636e446e676d8752
────────────────────────────────────────────────────────────
File: qtbase-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: ab2df52881a33e777670cae9bc49a8d082ef9d113911c358f620381a5b448332
────────────────────────────────────────────────────────────
File: qtactiveqt-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: d0b493e01c12fb74182a2ae92746ef6a850aae8c2da045cbba185320e1bbc76c
────────────────────────────────────────────────────────────
File: qt5compat-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: f2e5513b3fb71dabe21e98b84591ab5df71cd30a60c7aaeefd186368f834e4d5
────────────────────────────────────────────────────────────
File: qt3d-everywhere-opensource-src-6.5.5.tar.xz
SHA-256: 471a17b5fe06e83cc5ed7d94595a95ef9a31878e67fe610d0005e2e354e7c8cf
────────────────────────────────────────────────────────────
沒有留言:
張貼留言