From 798e299d04e012994177396a56ce1a3313068d1b Mon Sep 17 00:00:00 2001 From: Qiea <1310371422@qq.com> Date: Sun, 22 Dec 2024 01:07:54 +0800 Subject: [PATCH] Initial commit --- .gitattributes | 2 + .gitignore | 162 +++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 2 + Thread.py | 73 ++++++++++++++++++++++ main.py | 24 ++++++++ test.py | 16 +++++ tools.py | 127 ++++++++++++++++++++++++++++++++++++++ 7 files changed, 406 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 README.md create mode 100644 Thread.py create mode 100644 main.py create mode 100644 test.py create mode 100644 tools.py diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2c4a966 --- /dev/null +++ b/.gitignore @@ -0,0 +1,162 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ +/.idea +/img diff --git a/README.md b/README.md new file mode 100644 index 0000000..2735454 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# GetQQInfo + 我超,盒 diff --git a/Thread.py b/Thread.py new file mode 100644 index 0000000..b4a0f38 --- /dev/null +++ b/Thread.py @@ -0,0 +1,73 @@ +import threading +import pymysql +from tools import * + + +class UploadThread(threading.Thread): + def __init__(self, uploadqqnumber): + super().__init__() + self.uploadqqnumber = uploadqqnumber + self.conn = pymysql.connect( + host='192.168.9.1', # 你的 MySQL 主机 + user='root', # 你的 MySQL 用户 + password='123456', # 你的 MySQL 密码 + database='qqinfo' # 你要连接的数据库 + ) + + + def conn_close(self): + self.conn.close() + + + def run(self): + print(f'我是上传线程{self.uploadqqnumber}') + if download_image(self.uploadqqnumber): + Hash(self.conn).tomysql(self.uploadqqnumber) + print('上传成功') + remove_image(self.uploadqqnumber) + + + +class FindThread(threading.Thread): + def __init__(self, TargetImageHash): + super().__init__() + self.TargetImageHash = TargetImageHash + self.conn = pymysql.connect( + host='192.168.9.1', # 你的 MySQL 主机 + user='root', # 你的 MySQL 用户 + password='123456', # 你的 MySQL 密码 + database='qqinfo' # 你要连接的数据库 + ) + + + def conn_close(self): + self.conn.close() + + + def run(self): + print(f'我是查询线程{self.TargetImageHash}') + res = Hash(self.conn).getqq(self.TargetImageHash) + if res != 'error': + print(f'查询成功,QQ号是: {res}') + exit() + + + +class ByNetFindThread(threading.Thread): + def __init__(self, TargetImageHash, findqqnumber): + super().__init__() + self.TargetImageHash = TargetImageHash + self.findqqnumber = findqqnumber + + + def run(self): + if download_image(self.findqqnumber): + FindImage = Image.open(str(f'./img/{self.findqqnumber}.jpg')) + FindImageHash = bytes.fromhex(str(imagehash.average_hash(FindImage))) + res = compare(self.TargetImageHash, FindImageHash) + if res-99.9 >= 0 : + print(f'找到QQ号了:{self.findqqnumber}') + os.rename(f'./img/{self.findqqnumber}.jpg',f'./img/congratulations_{self.findqqnumber}.jpg') + exit() + print(f'[{self.findqqnumber}]的相似度是:{res}') + remove_image(self.findqqnumber) \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..d06592a --- /dev/null +++ b/main.py @@ -0,0 +1,24 @@ +from Thread import pymysql, UploadThread, FindThread, ByNetFindThread , threading +from tools import imagehash, Image, download_image + +# download_image(1310371422) +TargetRange = [1310372220, 1310372400] +TargetImage = Image.open(str(f'./img/target3.jpg')) +TargetImageHash = bytes.fromhex(str(imagehash.average_hash(TargetImage))) +baseArr = TargetRange[0] + +if __name__ == '__main__': + + Thread = FindThread(TargetImageHash) + Thread.start() + + # while baseArr