Spaces:
Paused
Paused
Commit
·
2f158fd
1
Parent(s):
1d87caa
Application Install
Browse files- .github/workflows/codeql.yml +82 -0
- .gitignore +160 -0
- .nojekyll +0 -0
- .pre-commit-config.yaml +7 -0
- Dockerfile +21 -0
- LICENSE +19 -0
- README.md +53 -11
- SECURITY.md +21 -0
- banned_by_google.txt +769 -0
- database.py +91 -0
- functions.py +32 -0
- index.html +99 -0
- main.py +815 -0
- poetry.lock +752 -0
- requirements.txt +26 -0
- templates/config.py +7 -0
- templates/main.py +115 -0
- vercel.json +15 -0
.github/workflows/codeql.yml
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# For most projects, this workflow file will not need changing; you simply need
|
| 2 |
+
# to commit it to your repository.
|
| 3 |
+
#
|
| 4 |
+
# You may wish to alter this file to override the set of languages analyzed,
|
| 5 |
+
# or to provide custom queries or build logic.
|
| 6 |
+
#
|
| 7 |
+
# ******** NOTE ********
|
| 8 |
+
# We have attempted to detect the languages in your repository. Please check
|
| 9 |
+
# the `language` matrix defined below to confirm you have the correct set of
|
| 10 |
+
# supported CodeQL languages.
|
| 11 |
+
#
|
| 12 |
+
name: "CodeQL"
|
| 13 |
+
|
| 14 |
+
on:
|
| 15 |
+
push:
|
| 16 |
+
branches: [ "main" ]
|
| 17 |
+
pull_request:
|
| 18 |
+
# The branches below must be a subset of the branches above
|
| 19 |
+
branches: [ "main" ]
|
| 20 |
+
schedule:
|
| 21 |
+
- cron: '36 13 * * 1'
|
| 22 |
+
|
| 23 |
+
jobs:
|
| 24 |
+
analyze:
|
| 25 |
+
name: Analyze
|
| 26 |
+
# Runner size impacts CodeQL analysis time. To learn more, please see:
|
| 27 |
+
# - https://gh.io/recommended-hardware-resources-for-running-codeql
|
| 28 |
+
# - https://gh.io/supported-runners-and-hardware-resources
|
| 29 |
+
# - https://gh.io/using-larger-runners
|
| 30 |
+
# Consider using larger runners for possible analysis time improvements.
|
| 31 |
+
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
|
| 32 |
+
timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
|
| 33 |
+
permissions:
|
| 34 |
+
actions: read
|
| 35 |
+
contents: read
|
| 36 |
+
security-events: write
|
| 37 |
+
|
| 38 |
+
strategy:
|
| 39 |
+
fail-fast: false
|
| 40 |
+
matrix:
|
| 41 |
+
language: [ 'python' ]
|
| 42 |
+
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby', 'swift' ]
|
| 43 |
+
# Use only 'java' to analyze code written in Java, Kotlin or both
|
| 44 |
+
# Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
|
| 45 |
+
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
|
| 46 |
+
|
| 47 |
+
steps:
|
| 48 |
+
- name: Checkout repository
|
| 49 |
+
uses: actions/checkout@v3
|
| 50 |
+
|
| 51 |
+
# Initializes the CodeQL tools for scanning.
|
| 52 |
+
- name: Initialize CodeQL
|
| 53 |
+
uses: github/codeql-action/init@v2
|
| 54 |
+
with:
|
| 55 |
+
languages: ${{ matrix.language }}
|
| 56 |
+
# If you wish to specify custom queries, you can do so here or in a config file.
|
| 57 |
+
# By default, queries listed here will override any specified in a config file.
|
| 58 |
+
# Prefix the list here with "+" to use these queries and those in the config file.
|
| 59 |
+
|
| 60 |
+
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
| 61 |
+
# queries: security-extended,security-and-quality
|
| 62 |
+
|
| 63 |
+
|
| 64 |
+
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
|
| 65 |
+
# If this step fails, then you should remove it and run the build manually (see below)
|
| 66 |
+
- name: Autobuild
|
| 67 |
+
uses: github/codeql-action/autobuild@v2
|
| 68 |
+
|
| 69 |
+
# ℹ️ Command-line programs to run using the OS shell.
|
| 70 |
+
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
| 71 |
+
|
| 72 |
+
# If the Autobuild fails above, remove it and uncomment the following three lines.
|
| 73 |
+
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
|
| 74 |
+
|
| 75 |
+
# - run: |
|
| 76 |
+
# echo "Run, Build Application using script"
|
| 77 |
+
# ./location_of_script_within_repo/buildscript.sh
|
| 78 |
+
|
| 79 |
+
- name: Perform CodeQL Analysis
|
| 80 |
+
uses: github/codeql-action/analyze@v2
|
| 81 |
+
with:
|
| 82 |
+
category: "/language:${{matrix.language}}"
|
.gitignore
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Byte-compiled / optimized / DLL files
|
| 2 |
+
__pycache__/
|
| 3 |
+
*.py[cod]
|
| 4 |
+
*$py.class
|
| 5 |
+
|
| 6 |
+
# C extensions
|
| 7 |
+
*.so
|
| 8 |
+
|
| 9 |
+
# Distribution / packaging
|
| 10 |
+
.Python
|
| 11 |
+
build/
|
| 12 |
+
develop-eggs/
|
| 13 |
+
dist/
|
| 14 |
+
downloads/
|
| 15 |
+
eggs/
|
| 16 |
+
.eggs/
|
| 17 |
+
lib/
|
| 18 |
+
lib64/
|
| 19 |
+
parts/
|
| 20 |
+
sdist/
|
| 21 |
+
var/
|
| 22 |
+
wheels/
|
| 23 |
+
share/python-wheels/
|
| 24 |
+
*.egg-info/
|
| 25 |
+
.installed.cfg
|
| 26 |
+
*.egg
|
| 27 |
+
MANIFEST
|
| 28 |
+
|
| 29 |
+
# PyInstaller
|
| 30 |
+
# Usually these files are written by a python script from a template
|
| 31 |
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
| 32 |
+
*.manifest
|
| 33 |
+
*.spec
|
| 34 |
+
|
| 35 |
+
# Installer logs
|
| 36 |
+
pip-log.txt
|
| 37 |
+
pip-delete-this-directory.txt
|
| 38 |
+
|
| 39 |
+
# Unit test / coverage reports
|
| 40 |
+
htmlcov/
|
| 41 |
+
.tox/
|
| 42 |
+
.nox/
|
| 43 |
+
.coverage
|
| 44 |
+
.coverage.*
|
| 45 |
+
.cache
|
| 46 |
+
nosetests.xml
|
| 47 |
+
coverage.xml
|
| 48 |
+
*.cover
|
| 49 |
+
*.py,cover
|
| 50 |
+
.hypothesis/
|
| 51 |
+
.pytest_cache/
|
| 52 |
+
cover/
|
| 53 |
+
|
| 54 |
+
# Translations
|
| 55 |
+
*.mo
|
| 56 |
+
*.pot
|
| 57 |
+
|
| 58 |
+
# Django stuff:
|
| 59 |
+
*.log
|
| 60 |
+
local_settings.py
|
| 61 |
+
db.sqlite3
|
| 62 |
+
db.sqlite3-journal
|
| 63 |
+
|
| 64 |
+
# Flask stuff:
|
| 65 |
+
instance/
|
| 66 |
+
.webassets-cache
|
| 67 |
+
|
| 68 |
+
# Scrapy stuff:
|
| 69 |
+
.scrapy
|
| 70 |
+
|
| 71 |
+
# Sphinx documentation
|
| 72 |
+
docs/_build/
|
| 73 |
+
|
| 74 |
+
# PyBuilder
|
| 75 |
+
.pybuilder/
|
| 76 |
+
target/
|
| 77 |
+
|
| 78 |
+
# Jupyter Notebook
|
| 79 |
+
.ipynb_checkpoints
|
| 80 |
+
|
| 81 |
+
# IPython
|
| 82 |
+
profile_default/
|
| 83 |
+
ipython_config.py
|
| 84 |
+
|
| 85 |
+
# pyenv
|
| 86 |
+
# For a library or package, you might want to ignore these files since the code is
|
| 87 |
+
# intended to run in multiple environments; otherwise, check them in:
|
| 88 |
+
# .python-version
|
| 89 |
+
|
| 90 |
+
# pipenv
|
| 91 |
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
| 92 |
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
| 93 |
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
| 94 |
+
# install all needed dependencies.
|
| 95 |
+
#Pipfile.lock
|
| 96 |
+
|
| 97 |
+
# poetry
|
| 98 |
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
| 99 |
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
| 100 |
+
# commonly ignored for libraries.
|
| 101 |
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
| 102 |
+
#poetry.lock
|
| 103 |
+
|
| 104 |
+
# pdm
|
| 105 |
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
| 106 |
+
#pdm.lock
|
| 107 |
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
| 108 |
+
# in version control.
|
| 109 |
+
# https://pdm.fming.dev/#use-with-ide
|
| 110 |
+
.pdm.toml
|
| 111 |
+
|
| 112 |
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
| 113 |
+
__pypackages__/
|
| 114 |
+
|
| 115 |
+
# Celery stuff
|
| 116 |
+
celerybeat-schedule
|
| 117 |
+
celerybeat.pid
|
| 118 |
+
|
| 119 |
+
# SageMath parsed files
|
| 120 |
+
*.sage.py
|
| 121 |
+
|
| 122 |
+
# Environments
|
| 123 |
+
.env
|
| 124 |
+
.venv
|
| 125 |
+
env/
|
| 126 |
+
venv/
|
| 127 |
+
ENV/
|
| 128 |
+
env.bak/
|
| 129 |
+
venv.bak/
|
| 130 |
+
|
| 131 |
+
# Spyder project settings
|
| 132 |
+
.spyderproject
|
| 133 |
+
.spyproject
|
| 134 |
+
|
| 135 |
+
# Rope project settings
|
| 136 |
+
.ropeproject
|
| 137 |
+
|
| 138 |
+
# mkdocs documentation
|
| 139 |
+
/site
|
| 140 |
+
|
| 141 |
+
# mypy
|
| 142 |
+
.mypy_cache/
|
| 143 |
+
.dmypy.json
|
| 144 |
+
dmypy.json
|
| 145 |
+
|
| 146 |
+
# Pyre type checker
|
| 147 |
+
.pyre/
|
| 148 |
+
|
| 149 |
+
# pytype static type analyzer
|
| 150 |
+
.pytype/
|
| 151 |
+
|
| 152 |
+
# Cython debug symbols
|
| 153 |
+
cython_debug/
|
| 154 |
+
|
| 155 |
+
# PyCharm
|
| 156 |
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
| 157 |
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
| 158 |
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
| 159 |
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
| 160 |
+
#.idea/
|
.nojekyll
ADDED
|
File without changes
|
.pre-commit-config.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
repos:
|
| 2 |
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
| 3 |
+
rev: v4.5.0
|
| 4 |
+
hooks:
|
| 5 |
+
- id: check-yaml
|
| 6 |
+
- id: end-of-file-fixer
|
| 7 |
+
- id: trailing-whitespace
|
Dockerfile
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM rendyprojects/python:latest
|
| 2 |
+
|
| 3 |
+
WORKDIR /app/
|
| 4 |
+
|
| 5 |
+
RUN apt -qq update
|
| 6 |
+
RUN apt -qq install -y --no-install-recommends \
|
| 7 |
+
curl \
|
| 8 |
+
git \
|
| 9 |
+
gnupg2 \
|
| 10 |
+
unzip \
|
| 11 |
+
wget \
|
| 12 |
+
python3-pip \
|
| 13 |
+
ffmpeg \
|
| 14 |
+
neofetch
|
| 15 |
+
|
| 16 |
+
COPY . .
|
| 17 |
+
|
| 18 |
+
RUN pip3 install --upgrade pip setuptools
|
| 19 |
+
RUN pip3 install -r requirements.txt
|
| 20 |
+
|
| 21 |
+
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]
|
LICENSE
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Copyright (c) 2019-2023 The RyuzakiLib-API @xtdevs
|
| 2 |
+
|
| 3 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 4 |
+
of this software and associated documentation files (the "Software"), to deal
|
| 5 |
+
in the Software without restriction, including without limitation the rights
|
| 6 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 7 |
+
copies of the Software, and to permit persons to whom the Software is
|
| 8 |
+
furnished to do so, subject to the following conditions:
|
| 9 |
+
|
| 10 |
+
The above copyright notice and this permission notice shall be included in all
|
| 11 |
+
copies or substantial portions of the Software.
|
| 12 |
+
|
| 13 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 14 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 15 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 16 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 17 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 18 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 19 |
+
SOFTWARE.
|
README.md
CHANGED
|
@@ -1,11 +1,53 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
## RyuzakiLib API
|
| 2 |
+
|
| 3 |
+
## Disclaimer
|
| 4 |
+
```
|
| 5 |
+
⚠️ WARNING FOR YOU ️ ️⚠️
|
| 6 |
+
RyuzakiLib API is used to help your account activities on Telegram
|
| 7 |
+
We are not responsible for what you misuse in this repository
|
| 8 |
+
! Be careful when using this repository!
|
| 9 |
+
If one of the members misuses this repository, we are forced to ban you
|
| 10 |
+
Never ever abuse this repository
|
| 11 |
+
```
|
| 12 |
+
|
| 13 |
+
- Tutorial FastAPI
|
| 14 |
+
```python
|
| 15 |
+
from fastapi import FastAPI
|
| 16 |
+
from RyuzakiLib.hackertools.chatgpt import RendyDevChat
|
| 17 |
+
from RyuzakiLib.hackertools.openai import OpenAiToken
|
| 18 |
+
|
| 19 |
+
app = FastAPI()
|
| 20 |
+
|
| 21 |
+
@app.get("/read")
|
| 22 |
+
def hello():
|
| 23 |
+
return {"message": "Hello World"}
|
| 24 |
+
|
| 25 |
+
if __name__ == "__main__":
|
| 26 |
+
uvicorn.run(app, host="0.0.0.0")
|
| 27 |
+
```
|
| 28 |
+
|
| 29 |
+
### How to secret via Hosting Cloud
|
| 30 |
+
```.env
|
| 31 |
+
MONGO_URL=url
|
| 32 |
+
REVERSE_IMAGE_API=apikey
|
| 33 |
+
OCR_API_KEY=apikey
|
| 34 |
+
ONLY_DEVELOPER_API_KEYS=random
|
| 35 |
+
HUGGING_TOKEN=apikey
|
| 36 |
+
SOURCE_UNSPLASH_URL=url
|
| 37 |
+
SOURCE_OCR_URL=url
|
| 38 |
+
SOURCE_ALPHA_URL=url
|
| 39 |
+
SOURCE_WAIFU_URL=url
|
| 40 |
+
SOURCE_TIKTOK_WTF_URL=url
|
| 41 |
+
SOURCE_TIKTOK_TECH_URL=url
|
| 42 |
+
DEVELOPER_ID=0
|
| 43 |
+
```
|
| 44 |
+
### Troubleshoot
|
| 45 |
+
Sometimes errors occur, but we are here to help! This guide covers some of the most common issues we’ve seen and how you can resolve them. However, this guide isn’t meant to be a comprehensive collection of every 🤗 FastAPI issue. For more help with troubleshooting your issue, try:
|
| 46 |
+
* [Contact Support](https://t.me/xtdevs)
|
| 47 |
+
|
| 48 |
+
### Contributing
|
| 49 |
+
* [Fork the project](https://github.com/TeamKillerX/RyuzakiLib) and send pull requests
|
| 50 |
+
|
| 51 |
+
### Credits
|
| 52 |
+
* [](https://t.me/xtdevs)
|
| 53 |
+
* [FastApi](https://github.com/CYCNO/Direct-Download-API)
|
SECURITY.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Security Policy
|
| 2 |
+
|
| 3 |
+
## Supported Versions
|
| 4 |
+
|
| 5 |
+
Use this section to tell people about which versions of your project are
|
| 6 |
+
currently being supported with security updates.
|
| 7 |
+
|
| 8 |
+
| Version | Supported |
|
| 9 |
+
| ------- | ------------------ |
|
| 10 |
+
| 5.1.x | :white_check_mark: |
|
| 11 |
+
| 5.0.x | :x: |
|
| 12 |
+
| 4.0.x | :white_check_mark: |
|
| 13 |
+
| < 4.0 | :x: |
|
| 14 |
+
|
| 15 |
+
## Reporting a Vulnerability
|
| 16 |
+
|
| 17 |
+
Use this section to tell people how to report a vulnerability.
|
| 18 |
+
|
| 19 |
+
Tell them where to go, how often they can expect to get an update on a
|
| 20 |
+
reported vulnerability, what to expect if the vulnerability is accepted or
|
| 21 |
+
declined, etc.
|
banned_by_google.txt
ADDED
|
@@ -0,0 +1,769 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Free israel
|
| 2 |
+
Free Israel
|
| 3 |
+
Free isr4el
|
| 4 |
+
Free Isr4el
|
| 5 |
+
Free isr*el
|
| 6 |
+
Free Isr*el
|
| 7 |
+
Free isr**l
|
| 8 |
+
Free Isr**l
|
| 9 |
+
israel
|
| 10 |
+
Israel
|
| 11 |
+
israel.
|
| 12 |
+
Israel.
|
| 13 |
+
Isr*el
|
| 14 |
+
Isr**l
|
| 15 |
+
isr*el
|
| 16 |
+
isr**l
|
| 17 |
+
Isr4el
|
| 18 |
+
Isr4*l
|
| 19 |
+
isr4el
|
| 20 |
+
isr4*l
|
| 21 |
+
i.s.r.a.e.l.
|
| 22 |
+
I.s.r.a.e.l.
|
| 23 |
+
i.s.r.4.e.l.
|
| 24 |
+
I.s.r.4.e.l.
|
| 25 |
+
i.s.r.*.e.l.
|
| 26 |
+
I.s.r.*.e.l.
|
| 27 |
+
i.s.r.*.*.l
|
| 28 |
+
i.s.r.a.e.l
|
| 29 |
+
I.s.r.a.e.l
|
| 30 |
+
i.s.r.4.e.l
|
| 31 |
+
I.s.r.4.e.l
|
| 32 |
+
i.s.r.*.e.l
|
| 33 |
+
I.s.r.*.e.l
|
| 34 |
+
i.s.r.*.*.l
|
| 35 |
+
Free i.s.r.a.e.l
|
| 36 |
+
Free I.s.r.a.e.l
|
| 37 |
+
Free i.s.r.4.a.l
|
| 38 |
+
Free I.s.r.4.a.l
|
| 39 |
+
Free i.s.r.*.e.l
|
| 40 |
+
Free I.s.r.*.e.l
|
| 41 |
+
Free i.s.r.*.*.l
|
| 42 |
+
Free I.s.r.*.*.l
|
| 43 |
+
Support israel
|
| 44 |
+
Support Israel
|
| 45 |
+
Support Isr4el
|
| 46 |
+
Support isr*el
|
| 47 |
+
Support Isr*el
|
| 48 |
+
Support isr**l
|
| 49 |
+
Support Isr**l
|
| 50 |
+
bullshit
|
| 51 |
+
bull shit
|
| 52 |
+
bullshits
|
| 53 |
+
bullshitted
|
| 54 |
+
bullturds
|
| 55 |
+
bung
|
| 56 |
+
busty
|
| 57 |
+
butt
|
| 58 |
+
butt fuck
|
| 59 |
+
buttfuck
|
| 60 |
+
buttfucker
|
| 61 |
+
buttfucker
|
| 62 |
+
buttplug
|
| 63 |
+
c.0.c.k
|
| 64 |
+
c.o.c.k.
|
| 65 |
+
c.u.n.t
|
| 66 |
+
c0ck
|
| 67 |
+
c-0-c-k
|
| 68 |
+
c-u-n-t
|
| 69 |
+
cuntface
|
| 70 |
+
cunthunter
|
| 71 |
+
cuntlick
|
| 72 |
+
cuntlicker
|
| 73 |
+
stiffy
|
| 74 |
+
stoned
|
| 75 |
+
stroke
|
| 76 |
+
sucked
|
| 77 |
+
sucking
|
| 78 |
+
sumofabiatch
|
| 79 |
+
t1t
|
| 80 |
+
tampon
|
| 81 |
+
tard
|
| 82 |
+
tawdry
|
| 83 |
+
teabagging
|
| 84 |
+
teat
|
| 85 |
+
terd
|
| 86 |
+
teste
|
| 87 |
+
testee
|
| 88 |
+
testes
|
| 89 |
+
testicle
|
| 90 |
+
testis
|
| 91 |
+
thrust
|
| 92 |
+
thug
|
| 93 |
+
tinkle
|
| 94 |
+
tit
|
| 95 |
+
titfuck
|
| 96 |
+
titi
|
| 97 |
+
tits
|
| 98 |
+
tittiefucker
|
| 99 |
+
titties
|
| 100 |
+
titty
|
| 101 |
+
tittyfuck
|
| 102 |
+
tittyfucker
|
| 103 |
+
toke
|
| 104 |
+
toots
|
| 105 |
+
tramp
|
| 106 |
+
transsexual
|
| 107 |
+
trashy
|
| 108 |
+
tubgirl
|
| 109 |
+
turd
|
| 110 |
+
tush
|
| 111 |
+
twat
|
| 112 |
+
twats
|
| 113 |
+
ugly
|
| 114 |
+
undies
|
| 115 |
+
unwed
|
| 116 |
+
urinal
|
| 117 |
+
urine
|
| 118 |
+
uterus
|
| 119 |
+
uzi
|
| 120 |
+
vag
|
| 121 |
+
vagina
|
| 122 |
+
valium
|
| 123 |
+
viagra
|
| 124 |
+
virgin
|
| 125 |
+
vixen
|
| 126 |
+
vodka
|
| 127 |
+
vomit
|
| 128 |
+
voyeur
|
| 129 |
+
vulgar
|
| 130 |
+
vulva
|
| 131 |
+
wad
|
| 132 |
+
wang
|
| 133 |
+
wank
|
| 134 |
+
wanker
|
| 135 |
+
wazod
|
| 136 |
+
wedgie
|
| 137 |
+
weed
|
| 138 |
+
weenie
|
| 139 |
+
weewee
|
| 140 |
+
weiner
|
| 141 |
+
weirdo
|
| 142 |
+
wench
|
| 143 |
+
wetback
|
| 144 |
+
wh0re
|
| 145 |
+
wh0reface
|
| 146 |
+
whitey
|
| 147 |
+
whiz
|
| 148 |
+
whoralicious
|
| 149 |
+
whore
|
| 150 |
+
whorealicious
|
| 151 |
+
whored
|
| 152 |
+
whoreface
|
| 153 |
+
whorehopper
|
| 154 |
+
whorehouse
|
| 155 |
+
whores
|
| 156 |
+
whoring
|
| 157 |
+
wigger
|
| 158 |
+
womb
|
| 159 |
+
woody
|
| 160 |
+
wop
|
| 161 |
+
x-rated
|
| 162 |
+
xxx
|
| 163 |
+
yeasty
|
| 164 |
+
yobbo
|
| 165 |
+
zoophile
|
| 166 |
+
cyberfuc
|
| 167 |
+
cyberfuck
|
| 168 |
+
cyberfucked
|
| 169 |
+
cyberfucker
|
| 170 |
+
cyberfuckers
|
| 171 |
+
cyberfucking
|
| 172 |
+
towelhead
|
| 173 |
+
tramp
|
| 174 |
+
tranny
|
| 175 |
+
transsexual
|
| 176 |
+
trashy
|
| 177 |
+
tribadism
|
| 178 |
+
trumped
|
| 179 |
+
tub
|
| 180 |
+
tubgirl
|
| 181 |
+
turd
|
| 182 |
+
tush
|
| 183 |
+
tushy
|
| 184 |
+
tw4t
|
| 185 |
+
twat
|
| 186 |
+
twathead
|
| 187 |
+
twatlips
|
| 188 |
+
twats
|
| 189 |
+
twatty
|
| 190 |
+
twatwaffle
|
| 191 |
+
twink
|
| 192 |
+
twinkie
|
| 193 |
+
fingers with tongue
|
| 194 |
+
two girls one yobbo
|
| 195 |
+
zoophile
|
| 196 |
+
zoophilia
|
| 197 |
+
zubb
|
| 198 |
+
pussy
|
| 199 |
+
Pussy
|
| 200 |
+
P*ssy
|
| 201 |
+
Pussy.
|
| 202 |
+
pussy.
|
| 203 |
+
P.u.s.s.y
|
| 204 |
+
P.u.s.s.y.
|
| 205 |
+
p.u.s.s.y.
|
| 206 |
+
P.*.s.s.y.
|
| 207 |
+
p.*.s.s.y.
|
| 208 |
+
Kontol
|
| 209 |
+
k*nt*l.
|
| 210 |
+
K*nt*l.
|
| 211 |
+
kontol
|
| 212 |
+
kontole
|
| 213 |
+
k*nt*l
|
| 214 |
+
k0nt0l
|
| 215 |
+
K0nt0l
|
| 216 |
+
k0nt0l.
|
| 217 |
+
K0nt0l.
|
| 218 |
+
K.o.n.t.o.l
|
| 219 |
+
K.*.n.t.*l.
|
| 220 |
+
k.*.n.t.*l.
|
| 221 |
+
K.*.n.t.*l
|
| 222 |
+
k.*.n.t.*l
|
| 223 |
+
k.o.n.t.o.l.
|
| 224 |
+
K.o.n.t.o.l.
|
| 225 |
+
memek
|
| 226 |
+
m3m3k
|
| 227 |
+
M3m3k.
|
| 228 |
+
m3m3k.
|
| 229 |
+
M*m*k
|
| 230 |
+
Memek.
|
| 231 |
+
memek.
|
| 232 |
+
m*m*k.
|
| 233 |
+
m*m*k
|
| 234 |
+
M.e.m.e.k
|
| 235 |
+
M.e.m.e.k.
|
| 236 |
+
m.e.m.e.k.
|
| 237 |
+
M.*.m.*.k.
|
| 238 |
+
m.*.m.*.k.
|
| 239 |
+
M.*.m.*.k
|
| 240 |
+
m.*.m.*.k
|
| 241 |
+
anal
|
| 242 |
+
anus
|
| 243 |
+
arse
|
| 244 |
+
ass
|
| 245 |
+
ballsack
|
| 246 |
+
balls
|
| 247 |
+
bastard
|
| 248 |
+
bitch
|
| 249 |
+
biatch
|
| 250 |
+
bloody
|
| 251 |
+
blowjob
|
| 252 |
+
blow job
|
| 253 |
+
bollock
|
| 254 |
+
bollok
|
| 255 |
+
boner
|
| 256 |
+
boob
|
| 257 |
+
bugger
|
| 258 |
+
bum
|
| 259 |
+
butt
|
| 260 |
+
buttplug
|
| 261 |
+
clitoris
|
| 262 |
+
cock
|
| 263 |
+
coon
|
| 264 |
+
crap
|
| 265 |
+
cunt
|
| 266 |
+
dick
|
| 267 |
+
dildo
|
| 268 |
+
dyke
|
| 269 |
+
fag
|
| 270 |
+
feck
|
| 271 |
+
fellate
|
| 272 |
+
fellatio
|
| 273 |
+
felching
|
| 274 |
+
fuck
|
| 275 |
+
f u c k
|
| 276 |
+
fudgepacker
|
| 277 |
+
fudge packer
|
| 278 |
+
flange
|
| 279 |
+
Goddamn
|
| 280 |
+
God damn
|
| 281 |
+
hell
|
| 282 |
+
homo
|
| 283 |
+
jerk
|
| 284 |
+
jizz
|
| 285 |
+
knobend
|
| 286 |
+
knob end
|
| 287 |
+
labia
|
| 288 |
+
muff
|
| 289 |
+
nigger
|
| 290 |
+
nigga
|
| 291 |
+
penis
|
| 292 |
+
piss
|
| 293 |
+
poop
|
| 294 |
+
prick
|
| 295 |
+
pube
|
| 296 |
+
pussy
|
| 297 |
+
queer
|
| 298 |
+
scrotum
|
| 299 |
+
sex
|
| 300 |
+
shit
|
| 301 |
+
s hit
|
| 302 |
+
sh1t
|
| 303 |
+
slut
|
| 304 |
+
smegma
|
| 305 |
+
spunk
|
| 306 |
+
tit
|
| 307 |
+
tosser
|
| 308 |
+
turd
|
| 309 |
+
twat
|
| 310 |
+
vagina
|
| 311 |
+
wank
|
| 312 |
+
whore
|
| 313 |
+
ahole
|
| 314 |
+
anus
|
| 315 |
+
ash0le
|
| 316 |
+
ash0les
|
| 317 |
+
asholes
|
| 318 |
+
ass
|
| 319 |
+
Ass Monkey
|
| 320 |
+
Assface
|
| 321 |
+
assh0le
|
| 322 |
+
assh0lez
|
| 323 |
+
asshole
|
| 324 |
+
assholes
|
| 325 |
+
assholz
|
| 326 |
+
asswipe
|
| 327 |
+
azzhole
|
| 328 |
+
bassterds
|
| 329 |
+
bastard
|
| 330 |
+
bastards
|
| 331 |
+
bastardz
|
| 332 |
+
basterds
|
| 333 |
+
basterdz
|
| 334 |
+
Biatch
|
| 335 |
+
bitch
|
| 336 |
+
bitches
|
| 337 |
+
Blow Job
|
| 338 |
+
boffing
|
| 339 |
+
butthole
|
| 340 |
+
buttwipe
|
| 341 |
+
c0ck
|
| 342 |
+
c0cks
|
| 343 |
+
c0k
|
| 344 |
+
Carpet Muncher
|
| 345 |
+
cawk
|
| 346 |
+
cawks
|
| 347 |
+
Clit
|
| 348 |
+
cnts
|
| 349 |
+
cntz
|
| 350 |
+
cock
|
| 351 |
+
cockhead
|
| 352 |
+
cock-head
|
| 353 |
+
cocks
|
| 354 |
+
CockSucker
|
| 355 |
+
cock-sucker
|
| 356 |
+
crap
|
| 357 |
+
cum
|
| 358 |
+
cunt
|
| 359 |
+
cunts
|
| 360 |
+
cuntz
|
| 361 |
+
dick
|
| 362 |
+
dild0
|
| 363 |
+
dild0s
|
| 364 |
+
dildo
|
| 365 |
+
dildos
|
| 366 |
+
dilld0
|
| 367 |
+
dilld0s
|
| 368 |
+
dominatricks
|
| 369 |
+
dominatrics
|
| 370 |
+
dominatrix
|
| 371 |
+
dyke
|
| 372 |
+
enema
|
| 373 |
+
f u c k
|
| 374 |
+
f u c k e r
|
| 375 |
+
fag
|
| 376 |
+
fag1t
|
| 377 |
+
faget
|
| 378 |
+
fagg1t
|
| 379 |
+
faggit
|
| 380 |
+
faggot
|
| 381 |
+
fagit
|
| 382 |
+
fags
|
| 383 |
+
fagz
|
| 384 |
+
faig
|
| 385 |
+
faigs
|
| 386 |
+
fart
|
| 387 |
+
flipping the bird
|
| 388 |
+
fuck
|
| 389 |
+
fucker
|
| 390 |
+
fuckin
|
| 391 |
+
fucking
|
| 392 |
+
fucks
|
| 393 |
+
Fudge Packer
|
| 394 |
+
fuk
|
| 395 |
+
Fukah
|
| 396 |
+
Fuken
|
| 397 |
+
fuker
|
| 398 |
+
Fukin
|
| 399 |
+
Fukk
|
| 400 |
+
Fukkah
|
| 401 |
+
Fukken
|
| 402 |
+
Fukker
|
| 403 |
+
Fukkin
|
| 404 |
+
g00k
|
| 405 |
+
gay
|
| 406 |
+
gayboy
|
| 407 |
+
gaygirl
|
| 408 |
+
gays
|
| 409 |
+
gayz
|
| 410 |
+
God-damned
|
| 411 |
+
h00r
|
| 412 |
+
h0ar
|
| 413 |
+
h0re
|
| 414 |
+
hells
|
| 415 |
+
hoar
|
| 416 |
+
hoor
|
| 417 |
+
hoore
|
| 418 |
+
jackoff
|
| 419 |
+
jap
|
| 420 |
+
japs
|
| 421 |
+
jerk-off
|
| 422 |
+
jisim
|
| 423 |
+
jiss
|
| 424 |
+
jizm
|
| 425 |
+
jizz
|
| 426 |
+
knob
|
| 427 |
+
knobs
|
| 428 |
+
knobz
|
| 429 |
+
kunt
|
| 430 |
+
kunts
|
| 431 |
+
kuntz
|
| 432 |
+
Lesbian
|
| 433 |
+
Lezzian
|
| 434 |
+
Lipshits
|
| 435 |
+
Lipshitz
|
| 436 |
+
masochist
|
| 437 |
+
masokist
|
| 438 |
+
massterbait
|
| 439 |
+
masstrbait
|
| 440 |
+
masstrbate
|
| 441 |
+
masterbaiter
|
| 442 |
+
masterbate
|
| 443 |
+
masterbates
|
| 444 |
+
Motha Fucker
|
| 445 |
+
Motha Fuker
|
| 446 |
+
Motha Fukkah
|
| 447 |
+
Motha Fukker
|
| 448 |
+
Mother Fucker
|
| 449 |
+
Mother Fukah
|
| 450 |
+
Mother Fuker
|
| 451 |
+
Mother Fukkah
|
| 452 |
+
Mother Fukker
|
| 453 |
+
mother-fucker
|
| 454 |
+
Mutha Fucker
|
| 455 |
+
Mutha Fukah
|
| 456 |
+
Mutha Fuker
|
| 457 |
+
Mutha Fukkah
|
| 458 |
+
Mutha Fukker
|
| 459 |
+
n1gr
|
| 460 |
+
nastt
|
| 461 |
+
nigger;
|
| 462 |
+
nigur;
|
| 463 |
+
niiger;
|
| 464 |
+
niigr;
|
| 465 |
+
orafis
|
| 466 |
+
orgasim;
|
| 467 |
+
orgasm
|
| 468 |
+
orgasum
|
| 469 |
+
oriface
|
| 470 |
+
orifice
|
| 471 |
+
orifiss
|
| 472 |
+
packi
|
| 473 |
+
packie
|
| 474 |
+
packy
|
| 475 |
+
paki
|
| 476 |
+
pakie
|
| 477 |
+
paky
|
| 478 |
+
pecker
|
| 479 |
+
peeenus
|
| 480 |
+
peeenusss
|
| 481 |
+
peenus
|
| 482 |
+
peinus
|
| 483 |
+
pen1s
|
| 484 |
+
penas
|
| 485 |
+
penis
|
| 486 |
+
penis-breath
|
| 487 |
+
penus
|
| 488 |
+
penuus
|
| 489 |
+
Phuc
|
| 490 |
+
Phuck
|
| 491 |
+
Phuk
|
| 492 |
+
Phuker
|
| 493 |
+
Phukker
|
| 494 |
+
polac
|
| 495 |
+
polack
|
| 496 |
+
polak
|
| 497 |
+
Poonani
|
| 498 |
+
pr1c
|
| 499 |
+
pr1ck
|
| 500 |
+
pr1k
|
| 501 |
+
pusse
|
| 502 |
+
pussee
|
| 503 |
+
pussy
|
| 504 |
+
puuke
|
| 505 |
+
puuker
|
| 506 |
+
queer
|
| 507 |
+
queers
|
| 508 |
+
queerz
|
| 509 |
+
qweers
|
| 510 |
+
qweerz
|
| 511 |
+
qweir
|
| 512 |
+
recktum
|
| 513 |
+
rectum
|
| 514 |
+
retard
|
| 515 |
+
sadist
|
| 516 |
+
scank
|
| 517 |
+
schlong
|
| 518 |
+
screwing
|
| 519 |
+
semen
|
| 520 |
+
sex
|
| 521 |
+
sexy
|
| 522 |
+
Sh!t
|
| 523 |
+
sh1t
|
| 524 |
+
sh1ter
|
| 525 |
+
sh1ts
|
| 526 |
+
sh1tter
|
| 527 |
+
sh1tz
|
| 528 |
+
shit
|
| 529 |
+
shits
|
| 530 |
+
shitter
|
| 531 |
+
Shitty
|
| 532 |
+
Shity
|
| 533 |
+
shitz
|
| 534 |
+
Shyt
|
| 535 |
+
Shyte
|
| 536 |
+
Shytty
|
| 537 |
+
Shyty
|
| 538 |
+
skanck
|
| 539 |
+
skank
|
| 540 |
+
skankee
|
| 541 |
+
skankey
|
| 542 |
+
skanks
|
| 543 |
+
Skanky
|
| 544 |
+
slut
|
| 545 |
+
sluts
|
| 546 |
+
Slutty
|
| 547 |
+
slutz
|
| 548 |
+
son-of-a-bitch
|
| 549 |
+
tit
|
| 550 |
+
turd
|
| 551 |
+
va1jina
|
| 552 |
+
vag1na
|
| 553 |
+
vagiina
|
| 554 |
+
vagina
|
| 555 |
+
vaj1na
|
| 556 |
+
vajina
|
| 557 |
+
vullva
|
| 558 |
+
vulva
|
| 559 |
+
w0p
|
| 560 |
+
wh00r
|
| 561 |
+
wh0re
|
| 562 |
+
whore
|
| 563 |
+
xrated
|
| 564 |
+
xxx
|
| 565 |
+
b!+ch
|
| 566 |
+
bitch
|
| 567 |
+
blowjob
|
| 568 |
+
clit
|
| 569 |
+
arschloch
|
| 570 |
+
fuck
|
| 571 |
+
shit
|
| 572 |
+
ass
|
| 573 |
+
asshole
|
| 574 |
+
b!tch
|
| 575 |
+
b17ch
|
| 576 |
+
b1tch
|
| 577 |
+
bastard
|
| 578 |
+
bi+ch
|
| 579 |
+
boiolas
|
| 580 |
+
buceta
|
| 581 |
+
c0ck
|
| 582 |
+
cawk
|
| 583 |
+
chink
|
| 584 |
+
cipa
|
| 585 |
+
clits
|
| 586 |
+
cock
|
| 587 |
+
cum
|
| 588 |
+
cunt
|
| 589 |
+
dildo
|
| 590 |
+
dirsa
|
| 591 |
+
ejakulate
|
| 592 |
+
fatass
|
| 593 |
+
fcuk
|
| 594 |
+
fuk
|
| 595 |
+
fux0r
|
| 596 |
+
hoer
|
| 597 |
+
hore
|
| 598 |
+
jism
|
| 599 |
+
kawk
|
| 600 |
+
l3itch
|
| 601 |
+
l3i+ch
|
| 602 |
+
lesbian
|
| 603 |
+
masturbate
|
| 604 |
+
masterbat*
|
| 605 |
+
masterbat3
|
| 606 |
+
motherfucker
|
| 607 |
+
s.o.b.
|
| 608 |
+
mofo
|
| 609 |
+
nazi
|
| 610 |
+
nigga
|
| 611 |
+
nigger
|
| 612 |
+
nutsack
|
| 613 |
+
phuck
|
| 614 |
+
pimpis
|
| 615 |
+
pusse
|
| 616 |
+
pussy
|
| 617 |
+
scrotum
|
| 618 |
+
sh!t
|
| 619 |
+
shemale
|
| 620 |
+
shi+
|
| 621 |
+
sh!+
|
| 622 |
+
slut
|
| 623 |
+
smut
|
| 624 |
+
teets
|
| 625 |
+
tits
|
| 626 |
+
boobs
|
| 627 |
+
b00bs
|
| 628 |
+
teez
|
| 629 |
+
testical
|
| 630 |
+
testicle
|
| 631 |
+
titt
|
| 632 |
+
w00se
|
| 633 |
+
jackoff
|
| 634 |
+
wank
|
| 635 |
+
whoar
|
| 636 |
+
whore
|
| 637 |
+
*damn
|
| 638 |
+
*dyke
|
| 639 |
+
*fuck*
|
| 640 |
+
*shit*
|
| 641 |
+
@$$
|
| 642 |
+
amcik
|
| 643 |
+
andskota
|
| 644 |
+
arse*
|
| 645 |
+
assrammer
|
| 646 |
+
ayir
|
| 647 |
+
bi7ch
|
| 648 |
+
bitch*
|
| 649 |
+
bollock*
|
| 650 |
+
breasts
|
| 651 |
+
butt-pirate
|
| 652 |
+
cabron
|
| 653 |
+
cazzo
|
| 654 |
+
chraa
|
| 655 |
+
chuj
|
| 656 |
+
Cock*
|
| 657 |
+
cunt*
|
| 658 |
+
d4mn
|
| 659 |
+
daygo
|
| 660 |
+
dego
|
| 661 |
+
dick*
|
| 662 |
+
dike*
|
| 663 |
+
dupa
|
| 664 |
+
dziwka
|
| 665 |
+
ejackulate
|
| 666 |
+
Ekrem*
|
| 667 |
+
Ekto
|
| 668 |
+
enculer
|
| 669 |
+
faen
|
| 670 |
+
fag*
|
| 671 |
+
fanculo
|
| 672 |
+
fanny
|
| 673 |
+
feces
|
| 674 |
+
feg
|
| 675 |
+
Felcher
|
| 676 |
+
ficken
|
| 677 |
+
fitt*
|
| 678 |
+
Flikker
|
| 679 |
+
foreskin
|
| 680 |
+
Fotze
|
| 681 |
+
Fu(*
|
| 682 |
+
fuk*
|
| 683 |
+
futkretzn
|
| 684 |
+
gay
|
| 685 |
+
gook
|
| 686 |
+
guiena
|
| 687 |
+
h0r
|
| 688 |
+
h4x0r
|
| 689 |
+
hell
|
| 690 |
+
helvete
|
| 691 |
+
hoer*
|
| 692 |
+
honkey
|
| 693 |
+
Huevon
|
| 694 |
+
hui
|
| 695 |
+
injun
|
| 696 |
+
jizz
|
| 697 |
+
kanker*
|
| 698 |
+
kike
|
| 699 |
+
klootzak
|
| 700 |
+
kraut
|
| 701 |
+
knulle
|
| 702 |
+
kuk
|
| 703 |
+
kuksuger
|
| 704 |
+
Kurac
|
| 705 |
+
kurwa
|
| 706 |
+
kusi*
|
| 707 |
+
kyrpa*
|
| 708 |
+
lesbo
|
| 709 |
+
mamhoon
|
| 710 |
+
masturbat*
|
| 711 |
+
merd*
|
| 712 |
+
mibun
|
| 713 |
+
monkleigh
|
| 714 |
+
mouliewop
|
| 715 |
+
muie
|
| 716 |
+
mulkku
|
| 717 |
+
muschi
|
| 718 |
+
nazis
|
| 719 |
+
nepesaurio
|
| 720 |
+
nigger*
|
| 721 |
+
orospu
|
| 722 |
+
paska*
|
| 723 |
+
perse
|
| 724 |
+
picka
|
| 725 |
+
pierdol*
|
| 726 |
+
pillu*
|
| 727 |
+
pimmel
|
| 728 |
+
piss*
|
| 729 |
+
pizda
|
| 730 |
+
poontsee
|
| 731 |
+
poop
|
| 732 |
+
porn
|
| 733 |
+
p0rn
|
| 734 |
+
pr0n
|
| 735 |
+
preteen
|
| 736 |
+
pula
|
| 737 |
+
pule
|
| 738 |
+
puta
|
| 739 |
+
puto
|
| 740 |
+
qahbeh
|
| 741 |
+
queef*
|
| 742 |
+
rautenberg
|
| 743 |
+
schaffer
|
| 744 |
+
scheiss*
|
| 745 |
+
schlampe
|
| 746 |
+
schmuck
|
| 747 |
+
screw
|
| 748 |
+
sh!t*
|
| 749 |
+
sharmuta
|
| 750 |
+
sharmute
|
| 751 |
+
shipal
|
| 752 |
+
shiz
|
| 753 |
+
skribz
|
| 754 |
+
skurwysyn
|
| 755 |
+
sphencter
|
| 756 |
+
spic
|
| 757 |
+
spierdalaj
|
| 758 |
+
splooge
|
| 759 |
+
b00b*
|
| 760 |
+
testicle*
|
| 761 |
+
titt*
|
| 762 |
+
twat
|
| 763 |
+
vittu
|
| 764 |
+
wank*
|
| 765 |
+
wetback*
|
| 766 |
+
wichser
|
| 767 |
+
wop*
|
| 768 |
+
yed
|
| 769 |
+
zabourah
|
database.py
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
# Copyright 2020-2023 (c) Randy W @xtdevs, @xtsea
|
| 4 |
+
#
|
| 5 |
+
# from : https://github.com/TeamKillerX
|
| 6 |
+
# Channel : @RendyProjects
|
| 7 |
+
# This program is free software: you can redistribute it and/or modify
|
| 8 |
+
# it under the terms of the GNU Affero General Public License as published by
|
| 9 |
+
# the Free Software Foundation, either version 3 of the License, or
|
| 10 |
+
# (at your option) any later version.
|
| 11 |
+
#
|
| 12 |
+
# This program is distributed in the hope that it will be useful,
|
| 13 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 14 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
| 15 |
+
# GNU Affero General Public License for more details.
|
| 16 |
+
#
|
| 17 |
+
# You should have received a copy of the GNU Affero General Public License
|
| 18 |
+
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
| 19 |
+
|
| 20 |
+
import os
|
| 21 |
+
from dotenv import load_dotenv
|
| 22 |
+
from pymongo import MongoClient
|
| 23 |
+
|
| 24 |
+
load_dotenv()
|
| 25 |
+
MONGO_URL = os.environ["MONGO_URL"]
|
| 26 |
+
|
| 27 |
+
client_mongo = MongoClient(MONGO_URL)
|
| 28 |
+
db = client_mongo["tiktokbot"]
|
| 29 |
+
collection = db["users"]
|
| 30 |
+
|
| 31 |
+
RAMDOM_STATUS = [
|
| 32 |
+
"civilian",
|
| 33 |
+
"wanted",
|
| 34 |
+
"undercover",
|
| 35 |
+
"rogue_agent",
|
| 36 |
+
"innocent",
|
| 37 |
+
"fugitive",
|
| 38 |
+
"covert_operator"
|
| 39 |
+
]
|
| 40 |
+
|
| 41 |
+
def remove_sibyl_system_banned(user_id):
|
| 42 |
+
update_doc = {
|
| 43 |
+
"sibyl_ban": None,
|
| 44 |
+
"reason_sibyl": None,
|
| 45 |
+
"is_banned_sibly": None,
|
| 46 |
+
"date_joined_sib": None,
|
| 47 |
+
"sibyl_userid": None
|
| 48 |
+
}
|
| 49 |
+
return collection.update_one({"user_id": user_id}, {"$unset": update_doc}, upsert=True)
|
| 50 |
+
|
| 51 |
+
def new_sibyl_system_banned(user_id, name, reason, date_joined):
|
| 52 |
+
update_doc = {
|
| 53 |
+
"sibyl_ban": name,
|
| 54 |
+
"reason_sibyl": reason,
|
| 55 |
+
"is_banned_sibly": True,
|
| 56 |
+
"date_joined_sib": date_joined,
|
| 57 |
+
"sibyl_userid": user_id
|
| 58 |
+
}
|
| 59 |
+
return collection.update_one({"user_id": user_id}, {"$set": update_doc}, upsert=True)
|
| 60 |
+
|
| 61 |
+
def get_sibyl_system_banned(user_id):
|
| 62 |
+
user = collection.find_one({"user_id": user_id})
|
| 63 |
+
if user:
|
| 64 |
+
sibyl_name = user.get("sibyl_ban")
|
| 65 |
+
reason = user.get("reason_sibyl")
|
| 66 |
+
is_banned = user.get("is_banned_sibly")
|
| 67 |
+
date_joined = user.get("date_joined_sib")
|
| 68 |
+
sibyl_user_id = user.get("sibyl_userid")
|
| 69 |
+
return sibyl_name, reason, is_banned, date_joined, sibyl_user_id
|
| 70 |
+
else:
|
| 71 |
+
return None
|
| 72 |
+
|
| 73 |
+
def get_all_banned():
|
| 74 |
+
banned_users = []
|
| 75 |
+
|
| 76 |
+
users = collection.find({})
|
| 77 |
+
|
| 78 |
+
for user_id in users:
|
| 79 |
+
reason = user_id.get("reason_sibyl")
|
| 80 |
+
user_id = user_id.get("sibyl_userid")
|
| 81 |
+
banned_users.append({"user_id": user_id, "reason": reason})
|
| 82 |
+
return banned_users
|
| 83 |
+
|
| 84 |
+
def get_all_api_keys():
|
| 85 |
+
user = collection.find({})
|
| 86 |
+
api_keys = []
|
| 87 |
+
for x in user:
|
| 88 |
+
api_key = x.get("ryuzaki_api_key")
|
| 89 |
+
if api_key:
|
| 90 |
+
api_keys.append(api_key)
|
| 91 |
+
return api_keys
|
functions.py
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
# Copyright 2020-2023 (c) Randy W @xtdevs, @xtsea
|
| 4 |
+
#
|
| 5 |
+
# from : https://github.com/TeamKillerX
|
| 6 |
+
# Channel : @RendyProjects
|
| 7 |
+
# This program is free software: you can redistribute it and/or modify
|
| 8 |
+
# it under the terms of the GNU Affero General Public License as published by
|
| 9 |
+
# the Free Software Foundation, either version 3 of the License, or
|
| 10 |
+
# (at your option) any later version.
|
| 11 |
+
#
|
| 12 |
+
# This program is distributed in the hope that it will be useful,
|
| 13 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 14 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
| 15 |
+
# GNU Affero General Public License for more details.
|
| 16 |
+
#
|
| 17 |
+
# You should have received a copy of the GNU Affero General Public License
|
| 18 |
+
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
| 19 |
+
|
| 20 |
+
import requests
|
| 21 |
+
import os
|
| 22 |
+
from dotenv import load_dotenv
|
| 23 |
+
|
| 24 |
+
load_dotenv()
|
| 25 |
+
HUGGING_TOKEN = os.environ["HUGGING_TOKEN"]
|
| 26 |
+
SOURCE_ALPHA_URL = os.environ["SOURCE_ALPHA_URL"]
|
| 27 |
+
|
| 28 |
+
def ryuzaki_ai_text(text):
|
| 29 |
+
API_URL = SOURCE_ALPHA_URL
|
| 30 |
+
headers = {"Authorization": f"Bearer {HUGGING_TOKEN}"}
|
| 31 |
+
response = requests.post(API_URL, headers=headers, json={"inputs": text})
|
| 32 |
+
return response.json()
|
index.html
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
|
| 4 |
+
<head>
|
| 5 |
+
<meta charset="UTF-8">
|
| 6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 7 |
+
<title>API</title>
|
| 8 |
+
<style>
|
| 9 |
+
body {
|
| 10 |
+
margin: 0;
|
| 11 |
+
}
|
| 12 |
+
iframe {
|
| 13 |
+
position: fixed;
|
| 14 |
+
z-index: 10;
|
| 15 |
+
border: none;
|
| 16 |
+
top: 0;
|
| 17 |
+
right: 0;
|
| 18 |
+
bottom: 0;
|
| 19 |
+
left: 0;
|
| 20 |
+
width: 100%;
|
| 21 |
+
height: 100%;
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
::-webkit-scrollbar {
|
| 25 |
+
width: 10px;
|
| 26 |
+
height: 10px;
|
| 27 |
+
display: none;
|
| 28 |
+
}
|
| 29 |
+
::-webkit-scrollbar-button:start:decrement,
|
| 30 |
+
::-webkit-scrollbar-button:end:increment {
|
| 31 |
+
height: 30px;
|
| 32 |
+
background-color: transparent;
|
| 33 |
+
}
|
| 34 |
+
::-webkit-scrollbar-track-piece {
|
| 35 |
+
background-color: #3b3b3b;
|
| 36 |
+
-webkit-border-radius: 16px;
|
| 37 |
+
}
|
| 38 |
+
::-webkit-scrollbar-thumb:vertical {
|
| 39 |
+
height: 50px;
|
| 40 |
+
background-color: #666;
|
| 41 |
+
border: 1px solid #eee;
|
| 42 |
+
-webkit-border-radius: 6px;
|
| 43 |
+
}
|
| 44 |
+
.loading-spinner {
|
| 45 |
+
display: flex;
|
| 46 |
+
justify-content: center;
|
| 47 |
+
align-items: center;
|
| 48 |
+
height: 100vh;
|
| 49 |
+
opacity: 1;
|
| 50 |
+
transition: opacity .8s ease-out;
|
| 51 |
+
}
|
| 52 |
+
|
| 53 |
+
.loading-spinner.hidden {
|
| 54 |
+
opacity: 0;
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
+
.loading-spinner>div {
|
| 58 |
+
width: 30px;
|
| 59 |
+
height: 30px;
|
| 60 |
+
background: linear-gradient(90deg, #2870EA 10.79%, #1B4AEF 87.08%);
|
| 61 |
+
|
| 62 |
+
border-radius: 100%;
|
| 63 |
+
display: inline-block;
|
| 64 |
+
animation: sk-bouncedelay 1.4s infinite ease-in-out both;
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
.loading-spinner .bounce1 {
|
| 68 |
+
animation-delay: -0.32s;
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
.loading-spinner .bounce2 {
|
| 72 |
+
animation-delay: -0.16s;
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
@keyframes sk-bouncedelay {
|
| 76 |
+
|
| 77 |
+
0%,
|
| 78 |
+
80%,
|
| 79 |
+
100% {
|
| 80 |
+
transform: scale(0);
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
40% {
|
| 84 |
+
transform: scale(1.0);
|
| 85 |
+
}
|
| 86 |
+
}
|
| 87 |
+
</style>
|
| 88 |
+
</head>
|
| 89 |
+
|
| 90 |
+
<body>
|
| 91 |
+
<iframe src="https://randydev-ryuzaki-api.hf.space/" frameborder="0" onload="document.querySelector('.loading-spinner').classList.add('hidden')"></iframe>
|
| 92 |
+
<div class="loading-spinner">
|
| 93 |
+
<div class="bounce1"></div>
|
| 94 |
+
<div class="bounce2"></div>
|
| 95 |
+
<div class="bounce3"></div>
|
| 96 |
+
</div>
|
| 97 |
+
</body>
|
| 98 |
+
|
| 99 |
+
</html>
|
main.py
ADDED
|
@@ -0,0 +1,815 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
# Copyright 2020-2023 (c) Randy W @xtdevs, @xtsea
|
| 4 |
+
#
|
| 5 |
+
# from : https://github.com/TeamKillerX
|
| 6 |
+
# Channel : @RendyProjects
|
| 7 |
+
# This program is free software: you can redistribute it and/or modify
|
| 8 |
+
# it under the terms of the GNU Affero General Public License as published by
|
| 9 |
+
# the Free Software Foundation, either version 3 of the License, or
|
| 10 |
+
# (at your option) any later version.
|
| 11 |
+
#
|
| 12 |
+
# This program is distributed in the hope that it will be useful,
|
| 13 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 14 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
| 15 |
+
# GNU Affero General Public License for more details.
|
| 16 |
+
#
|
| 17 |
+
# You should have received a copy of the GNU Affero General Public License
|
| 18 |
+
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
| 19 |
+
|
| 20 |
+
import requests
|
| 21 |
+
import json
|
| 22 |
+
import base64
|
| 23 |
+
import re
|
| 24 |
+
import uvicorn
|
| 25 |
+
import os
|
| 26 |
+
import shutil
|
| 27 |
+
import random
|
| 28 |
+
import g4f
|
| 29 |
+
import tempfile
|
| 30 |
+
import io
|
| 31 |
+
from io import BytesIO
|
| 32 |
+
from datetime import datetime as dt
|
| 33 |
+
from dotenv import load_dotenv
|
| 34 |
+
from bs4 import BeautifulSoup
|
| 35 |
+
|
| 36 |
+
from typing import Union
|
| 37 |
+
from typing_extensions import Annotated
|
| 38 |
+
from typing import Annotated, Union
|
| 39 |
+
|
| 40 |
+
from pydantic import BaseModel
|
| 41 |
+
from base64 import b64decode as kc
|
| 42 |
+
from base64 import b64decode
|
| 43 |
+
from random import choice
|
| 44 |
+
from gpytranslate import SyncTranslator
|
| 45 |
+
from httpx import AsyncClient
|
| 46 |
+
from telegraph import Telegraph, upload_file
|
| 47 |
+
from pathlib import Path
|
| 48 |
+
from serpapi import GoogleSearch
|
| 49 |
+
|
| 50 |
+
from fastapi import FastAPI, UploadFile, File
|
| 51 |
+
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
|
| 52 |
+
from fastapi import Depends, FastAPI, HTTPException, status
|
| 53 |
+
from fastapi.responses import StreamingResponse
|
| 54 |
+
from fastapi import HTTPException
|
| 55 |
+
from fastapi import FastAPI, Request, Header
|
| 56 |
+
from fastapi import Body, Query
|
| 57 |
+
from fastapi.staticfiles import StaticFiles
|
| 58 |
+
from fastapi.templating import Jinja2Templates
|
| 59 |
+
from fastapi.responses import FileResponse
|
| 60 |
+
|
| 61 |
+
from RyuzakiLib.hackertools.chatgpt import RendyDevChat
|
| 62 |
+
from RyuzakiLib.hackertools.openai_api import OpenAiToken
|
| 63 |
+
from RyuzakiLib.mental import BadWordsList
|
| 64 |
+
from RyuzakiLib.spamwatch.clients import SibylBan
|
| 65 |
+
|
| 66 |
+
import logging
|
| 67 |
+
import database as db
|
| 68 |
+
import functions as code
|
| 69 |
+
|
| 70 |
+
logging.basicConfig(level=logging.ERROR)
|
| 71 |
+
|
| 72 |
+
# I DON'T KNOW LIKE THIS HACKER
|
| 73 |
+
load_dotenv()
|
| 74 |
+
REVERSE_IMAGE_API = os.environ["REVERSE_IMAGE_API"]
|
| 75 |
+
OCR_API_KEY = os.environ["OCR_API_KEY"]
|
| 76 |
+
ONLY_DEVELOPER_API_KEYS = os.environ["ONLY_DEVELOPER_API_KEYS"]
|
| 77 |
+
HUGGING_TOKEN = os.environ["HUGGING_TOKEN"]
|
| 78 |
+
SOURCE_UNSPLASH_URL = os.environ["SOURCE_UNSPLASH_URL"]
|
| 79 |
+
SOURCE_OCR_URL = os.environ["SOURCE_OCR_URL"]
|
| 80 |
+
SOURCE_ALPHA_URL = os.environ["SOURCE_ALPHA_URL"]
|
| 81 |
+
SOURCE_WAIFU_URL = "https://api.waifu.pics"
|
| 82 |
+
SOURCE_TIKTOK_WTF_URL = os.environ["SOURCE_TIKTOK_WTF_URL"]
|
| 83 |
+
SOURCE_TIKTOK_TECH_URL = os.environ["SOURCE_TIKTOK_TECH_URL"]
|
| 84 |
+
DEVELOPER_ID = os.environ["DEVELOPER_ID"]
|
| 85 |
+
|
| 86 |
+
description = """
|
| 87 |
+
~ Developed written and powered by
|
| 88 |
+
- Ryuzaki Library: [Library Here](https://github.com/TeamKillerX/RyuzakiLib)
|
| 89 |
+
"""
|
| 90 |
+
|
| 91 |
+
app = FastAPI(
|
| 92 |
+
title="UFoP-API",
|
| 93 |
+
description=description,
|
| 94 |
+
version="0.1.0",
|
| 95 |
+
terms_of_service="Use It Only For Personal Project Else I Need To Delete The Api",
|
| 96 |
+
contact={
|
| 97 |
+
"name": "🌀ʊʄ⊕ք🌀",
|
| 98 |
+
"url": "https://t.me/UFoPInfo",
|
| 99 |
+
},
|
| 100 |
+
docs_url="/"
|
| 101 |
+
)
|
| 102 |
+
|
| 103 |
+
def validate_api_key(api_key: str = Header(...)):
|
| 104 |
+
USERS_API_KEYS = db.get_all_api_keys()
|
| 105 |
+
if api_key not in USERS_API_KEYS:
|
| 106 |
+
raise HTTPException(status_code=401, detail="Invalid API key")
|
| 107 |
+
|
| 108 |
+
def validate_api_key_only_devs(api_key: str = Header(...)):
|
| 109 |
+
if api_key not in ONLY_DEVELOPER_API_KEYS:
|
| 110 |
+
raise HTTPException(status_code=401, detail="Invalid API key")
|
| 111 |
+
|
| 112 |
+
|
| 113 |
+
@app.get("/UFoP/getbanlist")
|
| 114 |
+
def sibyl_get_all_banlist():
|
| 115 |
+
banned_users = db.get_all_banned()
|
| 116 |
+
return {
|
| 117 |
+
"status": "True",
|
| 118 |
+
"randydev": {
|
| 119 |
+
"results": banned_users
|
| 120 |
+
}
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
+
@app.get("/UFoP/blacklist-words")
|
| 124 |
+
def blacklist_words():
|
| 125 |
+
try:
|
| 126 |
+
BLACKLIST_WORDS = BadWordsList()
|
| 127 |
+
results_all = BLACKLIST_WORDS.banned_by_google(file_txt="banned_by_google.txt", storage=True)
|
| 128 |
+
return {"status": "true", "results": results_all}
|
| 129 |
+
except Exception as e:
|
| 130 |
+
return {"status": "false", "message": f"Internal server error: {str(e)}"}
|
| 131 |
+
|
| 132 |
+
@app.delete("/UFoP/bandel")
|
| 133 |
+
def sibyl_system_delete(
|
| 134 |
+
user_id: int = Query(..., description="User ID in query parameter only developer"),
|
| 135 |
+
api_key: None = Depends(validate_api_key_only_devs)
|
| 136 |
+
):
|
| 137 |
+
try:
|
| 138 |
+
_, _, _, _, sibyl_user_id = db.get_sibyl_system_banned(user_id)
|
| 139 |
+
|
| 140 |
+
if sibyl_user_id:
|
| 141 |
+
db.remove_sibyl_system_banned(user_id)
|
| 142 |
+
return {"status": "true", "message": f"Successfully removed {user_id} from the Sibyl ban list."}
|
| 143 |
+
else:
|
| 144 |
+
return {"status": "false", "message": "Not found user"}
|
| 145 |
+
except Exception as e:
|
| 146 |
+
return {"status": "false", "message": f"Internal server error: {str(e)}"}
|
| 147 |
+
|
| 148 |
+
@app.post("/UFoP/banner")
|
| 149 |
+
def sibyl_system_ban(
|
| 150 |
+
user_id: int = Query(..., description="User ID in query parameter"),
|
| 151 |
+
reason: str = Query(..., description="Reason in query parameter"),
|
| 152 |
+
api_key: None = Depends(validate_api_key_only_devs)
|
| 153 |
+
):
|
| 154 |
+
if user_id == int(DEVELOPER_ID):
|
| 155 |
+
return {"status": "false", "message": "Only Developer"}
|
| 156 |
+
|
| 157 |
+
try:
|
| 158 |
+
date_joined = str(dt.now())
|
| 159 |
+
sibyl_ban = random.choice(db.RAMDOM_STATUS)
|
| 160 |
+
ban_data = db.get_sibyl_system_banned(user_id)
|
| 161 |
+
|
| 162 |
+
if ban_data is not None:
|
| 163 |
+
_, _, is_banned, _, sibyl_user_id = ban_data
|
| 164 |
+
return {"status": "false", "message": "User is already banned"}
|
| 165 |
+
|
| 166 |
+
db.new_sibyl_system_banned(user_id, sibyl_ban, reason, date_joined)
|
| 167 |
+
|
| 168 |
+
return {
|
| 169 |
+
"status": "true",
|
| 170 |
+
"randydev": {
|
| 171 |
+
"user_id": user_id,
|
| 172 |
+
"sibyl_name": sibyl_ban,
|
| 173 |
+
"reason": reason,
|
| 174 |
+
"date_joined": date_joined,
|
| 175 |
+
"message": f"Successfully banned {user_id} from the Sibyl ban list."
|
| 176 |
+
}
|
| 177 |
+
}
|
| 178 |
+
except Exception as e:
|
| 179 |
+
logging.error(f"Error in sibyl_system_ban: {e}")
|
| 180 |
+
return {"status": "false", "message": "Internal server error"}
|
| 181 |
+
|
| 182 |
+
@app.get("/UFoP/bans")
|
| 183 |
+
def sibyl_system(
|
| 184 |
+
user_id: int = Query(..., description="User ID in query parameter"),
|
| 185 |
+
api_key: None = Depends(validate_api_key) or Depends(validate_api_key_only_devs)
|
| 186 |
+
):
|
| 187 |
+
result = db.get_sibyl_system_banned(user_id)
|
| 188 |
+
if result is not None:
|
| 189 |
+
sibyl_name, reason, is_banned, date_joined, sibyl_user_id = result
|
| 190 |
+
return {
|
| 191 |
+
"status": "true",
|
| 192 |
+
"randydev": {
|
| 193 |
+
"sibyl_name": sibyl_name,
|
| 194 |
+
"reason": reason,
|
| 195 |
+
"is_banned": is_banned,
|
| 196 |
+
"date_joined": date_joined,
|
| 197 |
+
"sibyl_user_id": sibyl_user_id
|
| 198 |
+
}
|
| 199 |
+
}
|
| 200 |
+
else:
|
| 201 |
+
return {"status": "false", "message": "Not Found User"}
|
| 202 |
+
|
| 203 |
+
@app.get("/ryuzaki/ai")
|
| 204 |
+
def ryuzaki_ai(
|
| 205 |
+
text: str = Query(..., description="text in query parameter"),
|
| 206 |
+
api_key: None = Depends(validate_api_key_only_devs)
|
| 207 |
+
):
|
| 208 |
+
try:
|
| 209 |
+
response_data = code.ryuzaki_ai_text(text)
|
| 210 |
+
|
| 211 |
+
if isinstance(response_data, list) and len(response_data) > 0:
|
| 212 |
+
first_result = response_data[0]
|
| 213 |
+
if "generated_text" in first_result:
|
| 214 |
+
message = first_result["generated_text"]
|
| 215 |
+
return {
|
| 216 |
+
"status": "true",
|
| 217 |
+
"randydev": {
|
| 218 |
+
"ryuzaki_text": message
|
| 219 |
+
}
|
| 220 |
+
}
|
| 221 |
+
|
| 222 |
+
return {"status": "false", "message": "Invalid response format"}
|
| 223 |
+
|
| 224 |
+
except Exception as e:
|
| 225 |
+
return {"status": "false", "message": f"error: {e}"}
|
| 226 |
+
|
| 227 |
+
@app.get("/ryuzaki/unsplash")
|
| 228 |
+
async def get_image_unsplash(query: str, size: str="500x500"):
|
| 229 |
+
url = SOURCE_UNSPLASH_URL
|
| 230 |
+
image_url = f"{url}/?{query}/{size}"
|
| 231 |
+
|
| 232 |
+
try:
|
| 233 |
+
response = requests.get(image_url)
|
| 234 |
+
response.raise_for_status()
|
| 235 |
+
except requests.exceptions.RequestException as e:
|
| 236 |
+
raise HTTPException(status_code=500, detail=f"Error fetching image: {e}")
|
| 237 |
+
|
| 238 |
+
return StreamingResponse(BytesIO(response.content), media_type="image/jpeg")
|
| 239 |
+
|
| 240 |
+
@app.get("/ryuzaki/reverse")
|
| 241 |
+
def google_reverse(
|
| 242 |
+
engine: str="google_reverse_image",
|
| 243 |
+
image_url: str=None,
|
| 244 |
+
language: str="en",
|
| 245 |
+
google_lang: str="us",
|
| 246 |
+
api_key: None = Depends(validate_api_key)
|
| 247 |
+
):
|
| 248 |
+
params = {
|
| 249 |
+
"api_key": REVERSE_IMAGE_API,
|
| 250 |
+
"engine": engine,
|
| 251 |
+
"image_url": image_url,
|
| 252 |
+
"hl": language,
|
| 253 |
+
"gl": google_lang
|
| 254 |
+
}
|
| 255 |
+
try:
|
| 256 |
+
search = GoogleSearch(params)
|
| 257 |
+
results = search.get_dict()
|
| 258 |
+
link = results["search_metadata"]["google_reverse_image_url"]
|
| 259 |
+
total_time_taken = results["search_metadata"]["total_time_taken"]
|
| 260 |
+
create_at = results["search_metadata"]["created_at"]
|
| 261 |
+
processed_at = results["search_metadata"]["processed_at"]
|
| 262 |
+
return {
|
| 263 |
+
"status": "true",
|
| 264 |
+
"randydev": {
|
| 265 |
+
"link": link,
|
| 266 |
+
"total_time_taken": total_time_taken,
|
| 267 |
+
"create_at": create_at,
|
| 268 |
+
"processed_at": processed_at
|
| 269 |
+
}
|
| 270 |
+
}
|
| 271 |
+
except Exception as e:
|
| 272 |
+
return {"status": "false", "message": f"Error {e}"}
|
| 273 |
+
|
| 274 |
+
@app.get("/ryuzaki/ocr")
|
| 275 |
+
def ocr_space_url(
|
| 276 |
+
url: str = Query(..., description="URL in query parameter"),
|
| 277 |
+
overlay: bool=False,
|
| 278 |
+
language: str = Query("eng", description="Language in query parameter"),
|
| 279 |
+
api_key: None = Depends(validate_api_key)
|
| 280 |
+
):
|
| 281 |
+
payload = {
|
| 282 |
+
"url": url,
|
| 283 |
+
"isOverlayRequired": overlay,
|
| 284 |
+
"apikey": OCR_API_KEY,
|
| 285 |
+
"language": language
|
| 286 |
+
}
|
| 287 |
+
try:
|
| 288 |
+
response = requests.post(SOURCE_OCR_URL, data=payload)
|
| 289 |
+
response.raise_for_status()
|
| 290 |
+
test_url = response.content.decode()
|
| 291 |
+
except requests.exceptions.RequestException as e:
|
| 292 |
+
return f"Error: {str(e)}"
|
| 293 |
+
try:
|
| 294 |
+
parsed_response = json.loads(test_url)
|
| 295 |
+
if "ParsedResults" in parsed_response and len(parsed_response["ParsedResults"]) > 0:
|
| 296 |
+
return {
|
| 297 |
+
"status": "true",
|
| 298 |
+
"randydev":{
|
| 299 |
+
"text": parsed_response["ParsedResults"][0]["ParsedText"]
|
| 300 |
+
}
|
| 301 |
+
}
|
| 302 |
+
else:
|
| 303 |
+
return {"status": "false", "message": "Error response."}
|
| 304 |
+
except (json.JSONDecodeError, KeyError):
|
| 305 |
+
return "Error parsing the OCR response."
|
| 306 |
+
|
| 307 |
+
@app.get("/ryuzaki/chatgpt4")
|
| 308 |
+
def chatgpt4_support(
|
| 309 |
+
query: str=None,
|
| 310 |
+
api_key: None = Depends(validate_api_key)
|
| 311 |
+
):
|
| 312 |
+
try:
|
| 313 |
+
response = g4f.ChatCompletion.create(
|
| 314 |
+
model=g4f.models.gpt_4,
|
| 315 |
+
messages=[{"role": "user", "content": query}],
|
| 316 |
+
)
|
| 317 |
+
return {
|
| 318 |
+
"status": "true",
|
| 319 |
+
"randydev":{
|
| 320 |
+
"message": response
|
| 321 |
+
}
|
| 322 |
+
}
|
| 323 |
+
except:
|
| 324 |
+
return {"status": "false", "message": "Error response."}
|
| 325 |
+
|
| 326 |
+
@app.post("/ryuzaki/chatgpt-model")
|
| 327 |
+
def chatgpt_model(
|
| 328 |
+
query: str=None,
|
| 329 |
+
model_id: int=1,
|
| 330 |
+
is_models: bool=True
|
| 331 |
+
):
|
| 332 |
+
try:
|
| 333 |
+
response = RendyDevChat(query).get_response_model(model_id=model_id, is_models=is_models)
|
| 334 |
+
return {
|
| 335 |
+
"status": "true",
|
| 336 |
+
"randydev":{
|
| 337 |
+
"message": response
|
| 338 |
+
}
|
| 339 |
+
}
|
| 340 |
+
except:
|
| 341 |
+
return {"status": "false", "message": "Error response."}
|
| 342 |
+
|
| 343 |
+
async def get_data(username):
|
| 344 |
+
base_msg = ""
|
| 345 |
+
async with AsyncClient() as gpx:
|
| 346 |
+
req = (await gpx.get(f"https://api.github.com/users/{username}")).json()
|
| 347 |
+
try:
|
| 348 |
+
avatar = req["avatar_url"]
|
| 349 |
+
twitter = req['twitter_username']
|
| 350 |
+
base_msg += "**❆ Gitub Information ❆** \n\n"
|
| 351 |
+
base_msg += f"**Profile Url:** {req['html_url']} \n"
|
| 352 |
+
base_msg += f"**Name:** `{req['name']}` \n"
|
| 353 |
+
base_msg += f"**Username:** `{req['login']}` \n"
|
| 354 |
+
base_msg += f"**User ID:** `{req['id']}` \n"
|
| 355 |
+
base_msg += f"**Location:** `{req['location']}` \n"
|
| 356 |
+
base_msg += f"**Company:** `{req['company']}` \n"
|
| 357 |
+
base_msg += f"**Blog:** `{req['name']}` \n"
|
| 358 |
+
base_msg += f"**Twitter:** `{f'https://twitter.com/{twitter}' if twitter else 'None'}` \n"
|
| 359 |
+
base_msg += f"**Bio:** `{req['bio']}` \n"
|
| 360 |
+
base_msg += f"**Public Repos:** `{req['public_repos']}` \n"
|
| 361 |
+
base_msg += f"**Public Gists:** `{req['public_gists']}` \n"
|
| 362 |
+
base_msg += f"**Followers:** `{req['followers']}` \n"
|
| 363 |
+
base_msg += f"**Following:** `{req['following']}` \n"
|
| 364 |
+
base_msg += f"**Created At:** `{req['created_at']}` \n"
|
| 365 |
+
base_msg += f"**Update At:** `{req['updated_at']}` \n"
|
| 366 |
+
return [base_msg, avatar]
|
| 367 |
+
except Exception as e:
|
| 368 |
+
base_msg += f"**An error occured while parsing the data!** \n\n**Traceback:** \n `{e}` \n\n`Make sure that you've sent the command with the correct username!`"
|
| 369 |
+
return [base_msg, "https://telegra.ph//file/32f69c18190666ea96553.jpg"]
|
| 370 |
+
|
| 371 |
+
@app.get("/ryuzaki/github")
|
| 372 |
+
async def github(username: str=None):
|
| 373 |
+
try:
|
| 374 |
+
details = await get_data(username)
|
| 375 |
+
return {
|
| 376 |
+
"status": "true",
|
| 377 |
+
"randydev":{
|
| 378 |
+
"avatar": details[1],
|
| 379 |
+
"results": details[0]
|
| 380 |
+
}
|
| 381 |
+
}
|
| 382 |
+
except:
|
| 383 |
+
return {"status": "false", "message": "Error response."}
|
| 384 |
+
|
| 385 |
+
@app.get("/ryuzaki/webshot")
|
| 386 |
+
def webshot(
|
| 387 |
+
url: str=None,
|
| 388 |
+
quality: str="1920x1080",
|
| 389 |
+
type_mine: str="JPEG",
|
| 390 |
+
pixels: str="1024",
|
| 391 |
+
cast: str="Z100"
|
| 392 |
+
):
|
| 393 |
+
try:
|
| 394 |
+
required_url = f"https://mini.s-shot.ru/{quality}/{type_mine}/{pixels}/{cast}/?{url}"
|
| 395 |
+
return {
|
| 396 |
+
"status": "true",
|
| 397 |
+
"randydev":{
|
| 398 |
+
"image_url": required_url
|
| 399 |
+
}
|
| 400 |
+
}
|
| 401 |
+
except:
|
| 402 |
+
return {"status": "false", "message": "Error response."}
|
| 403 |
+
|
| 404 |
+
@app.get("/ryuzaki/chatbot")
|
| 405 |
+
def chatbot(
|
| 406 |
+
query: str=None,
|
| 407 |
+
user_id: int=None,
|
| 408 |
+
bot_name: str=None,
|
| 409 |
+
bot_username: str=None
|
| 410 |
+
):
|
| 411 |
+
api_url = b64decode("aHR0cHM6Ly9hcGkuc2Fmb25lLmRldi9jaGF0Ym90").decode("utf-8")
|
| 412 |
+
params = {
|
| 413 |
+
"query": query,
|
| 414 |
+
"user_id": user_id,
|
| 415 |
+
"bot_name": bot_name,
|
| 416 |
+
"bot_master": bot_username
|
| 417 |
+
}
|
| 418 |
+
x = requests.get(f"{api_url}", params=params)
|
| 419 |
+
if x.status_code != 200:
|
| 420 |
+
return "Error api request"
|
| 421 |
+
try:
|
| 422 |
+
y = x.json()
|
| 423 |
+
response = y["response"]
|
| 424 |
+
return {
|
| 425 |
+
"status": "true",
|
| 426 |
+
"randydev":{
|
| 427 |
+
"message": response
|
| 428 |
+
}
|
| 429 |
+
}
|
| 430 |
+
except:
|
| 431 |
+
return {"status": "false", "message": "Error response."}
|
| 432 |
+
|
| 433 |
+
@app.get("/ryuzaki/waifu")
|
| 434 |
+
def waifu_pics(
|
| 435 |
+
types: str="sfw",
|
| 436 |
+
category: str="neko"
|
| 437 |
+
):
|
| 438 |
+
waifu_api = f"{SOURCE_WAIFU_URL}/{types}"
|
| 439 |
+
waifu_param = f"{waifu_api}/{category}"
|
| 440 |
+
|
| 441 |
+
response = requests.get(waifu_param)
|
| 442 |
+
|
| 443 |
+
if response.status_code != 200:
|
| 444 |
+
return "Sorry, there was an error processing your request. Please try again later"
|
| 445 |
+
data_waifu = response.json()
|
| 446 |
+
try:
|
| 447 |
+
waifu_image_url = data_waifu["url"]
|
| 448 |
+
except Exception as e:
|
| 449 |
+
return f"Error request {e}"
|
| 450 |
+
if waifu_image_url:
|
| 451 |
+
try:
|
| 452 |
+
return {
|
| 453 |
+
"status": "true",
|
| 454 |
+
"randydev":{
|
| 455 |
+
"image_url": waifu_image_url
|
| 456 |
+
}
|
| 457 |
+
}
|
| 458 |
+
except:
|
| 459 |
+
return {"status": "false", "message": "Error response"}
|
| 460 |
+
else:
|
| 461 |
+
return {"status": "false", "message": "Error response."}
|
| 462 |
+
|
| 463 |
+
@app.get("/ryuzaki/rayso")
|
| 464 |
+
def make_rayso(
|
| 465 |
+
code=None,
|
| 466 |
+
title: str="Ryuzaki Dev",
|
| 467 |
+
theme: str=None,
|
| 468 |
+
setlang: str="en",
|
| 469 |
+
auto_translate: bool=None,
|
| 470 |
+
ryuzaki_dark: bool=None
|
| 471 |
+
):
|
| 472 |
+
trans = SyncTranslator()
|
| 473 |
+
api_url = b64decode("aHR0cHM6Ly9hcGkuc2Fmb25lLm1lL3JheXNv").decode("utf-8")
|
| 474 |
+
if auto_translate:
|
| 475 |
+
source = trans.detect(code)
|
| 476 |
+
translation = trans(code, sourcelang=source, targetlang=setlang)
|
| 477 |
+
code = translation.text
|
| 478 |
+
else:
|
| 479 |
+
code = code
|
| 480 |
+
if ryuzaki_dark:
|
| 481 |
+
x = requests.post(
|
| 482 |
+
f"{api_url}",
|
| 483 |
+
json={
|
| 484 |
+
"code": code,
|
| 485 |
+
"title": title,
|
| 486 |
+
"theme": theme,
|
| 487 |
+
"darkMode": True
|
| 488 |
+
}
|
| 489 |
+
)
|
| 490 |
+
if x.status_code != 200:
|
| 491 |
+
return "Error api Gay"
|
| 492 |
+
data = x.json()
|
| 493 |
+
try:
|
| 494 |
+
image_data = base64.b64decode(data["image"])
|
| 495 |
+
return {
|
| 496 |
+
"status": "true",
|
| 497 |
+
"data":{
|
| 498 |
+
"image": image_data
|
| 499 |
+
}
|
| 500 |
+
}
|
| 501 |
+
except:
|
| 502 |
+
return {"status": "false", "message": "Error response"}
|
| 503 |
+
else:
|
| 504 |
+
x = requests.post(
|
| 505 |
+
f"{api_url}",
|
| 506 |
+
json={
|
| 507 |
+
"code": code,
|
| 508 |
+
"title": title,
|
| 509 |
+
"theme": theme,
|
| 510 |
+
"darkMode": False
|
| 511 |
+
}
|
| 512 |
+
)
|
| 513 |
+
if x.status_code != 200:
|
| 514 |
+
return "Error api Gay"
|
| 515 |
+
data = x.json()
|
| 516 |
+
try:
|
| 517 |
+
image_data = base64.b64decode(data["image"])
|
| 518 |
+
return {
|
| 519 |
+
"status": "true",
|
| 520 |
+
"data":{
|
| 521 |
+
"image": image_data
|
| 522 |
+
}
|
| 523 |
+
}
|
| 524 |
+
except:
|
| 525 |
+
return {"status": "false", "message": "Error response"}
|
| 526 |
+
|
| 527 |
+
@app.get("/ryuzaki/ipcheck")
|
| 528 |
+
def whois_ip_address(ip_address: str=None):
|
| 529 |
+
apikey = kc("M0QwN0UyRUFBRjU1OTQwQUY0NDczNEMzRjJBQzdDMUE=").decode("utf-8")
|
| 530 |
+
location_link = "https"
|
| 531 |
+
location_api = "api.ip2location.io"
|
| 532 |
+
location_key = f"key={apikey}"
|
| 533 |
+
location_search = f"ip={ip_address}"
|
| 534 |
+
location_param = (
|
| 535 |
+
f"{location_link}://{location_api}/?{location_key}&{location_search}"
|
| 536 |
+
)
|
| 537 |
+
response = requests.get(location_param)
|
| 538 |
+
if response.status_code != 200:
|
| 539 |
+
return "Sorry, there was an error processing your request. Please try again later"
|
| 540 |
+
data_location = response.json()
|
| 541 |
+
try:
|
| 542 |
+
location_ip = data_location["ip"]
|
| 543 |
+
location_code = data_location["country_code"]
|
| 544 |
+
location_name = data_location["country_name"]
|
| 545 |
+
location_region = data_location["region_name"]
|
| 546 |
+
location_city = data_location["city_name"]
|
| 547 |
+
location_zip = data_location["zip_code"]
|
| 548 |
+
location_zone = data_location["time_zone"]
|
| 549 |
+
location_card = data_location["as"]
|
| 550 |
+
except Exception as e:
|
| 551 |
+
return f"error {e}"
|
| 552 |
+
if (
|
| 553 |
+
location_ip
|
| 554 |
+
and location_code
|
| 555 |
+
and location_name
|
| 556 |
+
and location_region
|
| 557 |
+
and location_city
|
| 558 |
+
and location_zip
|
| 559 |
+
and location_zone
|
| 560 |
+
and location_card
|
| 561 |
+
):
|
| 562 |
+
return {
|
| 563 |
+
"ip_address": location_ip,
|
| 564 |
+
"country_code": location_code,
|
| 565 |
+
"region_name": location_region,
|
| 566 |
+
"city_name": location_city,
|
| 567 |
+
"zip_code": location_zip,
|
| 568 |
+
"time_zone": location_zone,
|
| 569 |
+
"as": location_card
|
| 570 |
+
}
|
| 571 |
+
else:
|
| 572 |
+
return {"status": "false", "message": "Invalid ip address"}
|
| 573 |
+
|
| 574 |
+
@app.get("/ryuzaki/tiktok_douyin")
|
| 575 |
+
def tiktok_douyin(tiktok_url: str=None):
|
| 576 |
+
response = requests.get(f"{SOURCE_TIKTOK_WTF_URL}={tiktok_url}")
|
| 577 |
+
if response.status_code != 200:
|
| 578 |
+
return "Error request:"
|
| 579 |
+
try:
|
| 580 |
+
download_video = response.json()["aweme_list"][0]["video"]["play_addr"]["url_list"][0]
|
| 581 |
+
download_audio = response.json()["aweme_list"][0]["music"]["play_url"]["url_list"][0]
|
| 582 |
+
description = response.json()["aweme_list"][0]["desc"]
|
| 583 |
+
author = response.json()["aweme_list"][0]["author"]["nickname"]
|
| 584 |
+
request = response.json()["aweme_list"][0]["author"]["signature"]
|
| 585 |
+
return {
|
| 586 |
+
"status": "true",
|
| 587 |
+
"randydev": {
|
| 588 |
+
"video_url": download_video,
|
| 589 |
+
"music_url": download_audio,
|
| 590 |
+
"description": description,
|
| 591 |
+
"author": author,
|
| 592 |
+
"request": request
|
| 593 |
+
}
|
| 594 |
+
}
|
| 595 |
+
except:
|
| 596 |
+
return {"status": "false", "message": "Error request"}
|
| 597 |
+
|
| 598 |
+
@app.get("/ryuzaki/tiktok")
|
| 599 |
+
def tiktok_downloader(tiktok_url: Union[str, None] = None, only_video: bool=None):
|
| 600 |
+
api_devs = SOURCE_TIKTOK_TECH_URL
|
| 601 |
+
parameter = f"tiktok?url={tiktok_url}"
|
| 602 |
+
api_url = f"{api_devs}/{parameter}"
|
| 603 |
+
response = requests.get(api_url)
|
| 604 |
+
|
| 605 |
+
if response.status_code != 200:
|
| 606 |
+
return "Error: Unable to fetch data from the TikTok API"
|
| 607 |
+
try:
|
| 608 |
+
results = response.json()
|
| 609 |
+
caption = results.get("result", {}).get("desc", "")
|
| 610 |
+
if only_video:
|
| 611 |
+
video_url = results.get("result", {}).get("withoutWaterMarkVideo", "")
|
| 612 |
+
if video_url:
|
| 613 |
+
return {
|
| 614 |
+
"download_url": video_url,
|
| 615 |
+
"caption": caption
|
| 616 |
+
}
|
| 617 |
+
else:
|
| 618 |
+
music_mp3 = results.get("result", {}).get("music", "")
|
| 619 |
+
if music_mp3:
|
| 620 |
+
return {
|
| 621 |
+
"music_url": music_mp3,
|
| 622 |
+
"caption": caption
|
| 623 |
+
}
|
| 624 |
+
return "Error: TikTok data not found or unsupported format"
|
| 625 |
+
except:
|
| 626 |
+
return {"status": "false", "message": "Invalid Link"}
|
| 627 |
+
|
| 628 |
+
@app.get("/ryuzaki/mediafire")
|
| 629 |
+
def mediafire(link: Union[str, None] = None):
|
| 630 |
+
try:
|
| 631 |
+
down_link = str(link)
|
| 632 |
+
mid = down_link.split('/', 5)
|
| 633 |
+
if mid[3] == "view":
|
| 634 |
+
mid[3] = "file"
|
| 635 |
+
down_link = '/'.join(mid)
|
| 636 |
+
print(down_link)
|
| 637 |
+
r = requests.get(down_link)
|
| 638 |
+
soup = BeautifulSoup(r.content, "html.parser")
|
| 639 |
+
a_href = soup.find("a", {"class": "input popsok"}).get("href")
|
| 640 |
+
a = str(a_href)
|
| 641 |
+
id = link.split('/', 5)[4]
|
| 642 |
+
a_byte = soup.find("a", {"class": "input popsok"}).get_text()
|
| 643 |
+
a_name = soup.find("div", {"class": "dl-btn-label"}).get_text()
|
| 644 |
+
details = soup.find("ul", {"class": "details"})
|
| 645 |
+
li_items = details.find_all('li')[1]
|
| 646 |
+
some = li_items.find_all("span")[0].get_text().split()
|
| 647 |
+
dat = list(some)
|
| 648 |
+
down = a_byte.replace(" ", "").strip()
|
| 649 |
+
time = dat[1]
|
| 650 |
+
date = dat[0]
|
| 651 |
+
byte = down.split("(", 1)[1].split(")", 1)[0]
|
| 652 |
+
name = a_name.replace(" ", "").strip()
|
| 653 |
+
return {
|
| 654 |
+
"status": "true",
|
| 655 |
+
"data": {
|
| 656 |
+
"file": {
|
| 657 |
+
"url": {
|
| 658 |
+
'directDownload': a,
|
| 659 |
+
"original": link,
|
| 660 |
+
},
|
| 661 |
+
"metadata": {
|
| 662 |
+
"id": id,
|
| 663 |
+
"name": name,
|
| 664 |
+
"size": {
|
| 665 |
+
"readable": byte
|
| 666 |
+
},
|
| 667 |
+
"DateAndTime": {
|
| 668 |
+
"time": time,
|
| 669 |
+
"date": date
|
| 670 |
+
}
|
| 671 |
+
}
|
| 672 |
+
}
|
| 673 |
+
}
|
| 674 |
+
}
|
| 675 |
+
|
| 676 |
+
except:
|
| 677 |
+
return "{'status': 'false', 'message': 'Invalid Link'}"
|
| 678 |
+
|
| 679 |
+
|
| 680 |
+
@app.get("/ryuzaki/gdrive")
|
| 681 |
+
def gdrive(link: Union[str, None] = None):
|
| 682 |
+
try:
|
| 683 |
+
down = link.split('/', 6)
|
| 684 |
+
url = f'https://drive.google.com/uc?export=download&id={down[5]}'
|
| 685 |
+
session = requests.Session()
|
| 686 |
+
|
| 687 |
+
response = session.get(url, stream=True)
|
| 688 |
+
headers = response.headers
|
| 689 |
+
content_disp = headers.get('content-disposition')
|
| 690 |
+
filename = None
|
| 691 |
+
if content_disp:
|
| 692 |
+
match = re.search(r'filename="(.+)"', content_disp)
|
| 693 |
+
if match:
|
| 694 |
+
filename = match.group(1)
|
| 695 |
+
|
| 696 |
+
content_length = headers.get('content-length')
|
| 697 |
+
last_modified = headers.get('last-modified')
|
| 698 |
+
content_type = headers.get('content-type')
|
| 699 |
+
|
| 700 |
+
return {
|
| 701 |
+
"status": "true",
|
| 702 |
+
"data": {
|
| 703 |
+
"file": {
|
| 704 |
+
"url": {
|
| 705 |
+
'directDownload': url,
|
| 706 |
+
"original": link,
|
| 707 |
+
},
|
| 708 |
+
"metadata": {
|
| 709 |
+
"id":
|
| 710 |
+
down[5],
|
| 711 |
+
"name":
|
| 712 |
+
filename if filename else 'No filename provided by the server.',
|
| 713 |
+
"size": {
|
| 714 |
+
"readable":
|
| 715 |
+
f'{round(int(content_length) / (1024 * 1024), 2)} MB' if
|
| 716 |
+
content_length else 'No content length provided by the server.',
|
| 717 |
+
"type":
|
| 718 |
+
content_type
|
| 719 |
+
if content_type else 'No content type provided by the server.'
|
| 720 |
+
},
|
| 721 |
+
"DateAndTime":
|
| 722 |
+
last_modified if last_modified else
|
| 723 |
+
'No last modified date provided by the server.',
|
| 724 |
+
}
|
| 725 |
+
}
|
| 726 |
+
}
|
| 727 |
+
}
|
| 728 |
+
|
| 729 |
+
except:
|
| 730 |
+
return "{'status': 'false', 'message': 'Invalid Link'}"
|
| 731 |
+
|
| 732 |
+
@app.get("/ryuzaki/anonfiles")
|
| 733 |
+
def anonfiles(link: Union[str, None] = None):
|
| 734 |
+
try:
|
| 735 |
+
r = requests.get(link)
|
| 736 |
+
soup = BeautifulSoup(r.content, "html.parser")
|
| 737 |
+
a_href = soup.find("a", {"id": "download-url"}).get("href")
|
| 738 |
+
a = str(a_href)
|
| 739 |
+
id = link.split('/', 4)[3]
|
| 740 |
+
jsondata = requests.get(
|
| 741 |
+
f'https://api.anonfiles.com/v2/file/{id}/info').json()
|
| 742 |
+
jsondata['data']['file']['url']['directDownload'] = a
|
| 743 |
+
del jsondata['data']['file']['url']['full']
|
| 744 |
+
|
| 745 |
+
return jsondata
|
| 746 |
+
except:
|
| 747 |
+
return "{'status': 'false', 'message': 'Invalid Link'}"
|
| 748 |
+
|
| 749 |
+
@app.get("/ryuzaki/filechan")
|
| 750 |
+
def filechan(link: Union[str, None] = None):
|
| 751 |
+
try:
|
| 752 |
+
r = requests.get(link)
|
| 753 |
+
soup = BeautifulSoup(r.content, "html.parser")
|
| 754 |
+
a_href = soup.find("a", {"id": "download-url"}).get("href")
|
| 755 |
+
a = str(a_href)
|
| 756 |
+
id = link.split('/', 4)[3]
|
| 757 |
+
jsondata = requests.get(
|
| 758 |
+
f'https://api.filechan.org/v2/file/{id}/info').json()
|
| 759 |
+
jsondata['data']['file']['url']['directDownload'] = a
|
| 760 |
+
del jsondata['data']['file']['url']['full']
|
| 761 |
+
|
| 762 |
+
return jsondata
|
| 763 |
+
except:
|
| 764 |
+
return "{'status': 'false', 'message': 'Invalid Link'}"
|
| 765 |
+
|
| 766 |
+
@app.get("/ryuzaki/letsupload")
|
| 767 |
+
def letsupload(link: Union[str, None] = None):
|
| 768 |
+
try:
|
| 769 |
+
r = requests.get(link)
|
| 770 |
+
soup = BeautifulSoup(r.content, "html.parser")
|
| 771 |
+
a_href = soup.find("a", {"id": "download-url"}).get("href")
|
| 772 |
+
a = str(a_href)
|
| 773 |
+
id = link.split('/', 4)[3]
|
| 774 |
+
jsondata = requests.get(
|
| 775 |
+
f'https://api.letsupload.cc/v2/file/{id}/info').json()
|
| 776 |
+
jsondata['data']['file']['url']['directDownload'] = a
|
| 777 |
+
del jsondata['data']['file']['url']['full']
|
| 778 |
+
|
| 779 |
+
return jsondata
|
| 780 |
+
except:
|
| 781 |
+
return "{'status': 'false', 'message': 'Invalid Link'}"
|
| 782 |
+
|
| 783 |
+
@app.get("/ryuzaki/megaupload")
|
| 784 |
+
def megaupload(link: Union[str, None] = None):
|
| 785 |
+
try:
|
| 786 |
+
r = requests.get(link)
|
| 787 |
+
soup = BeautifulSoup(r.content, "html.parser")
|
| 788 |
+
a_href = soup.find("a", {"id": "download-url"}).get("href")
|
| 789 |
+
a = str(a_href)
|
| 790 |
+
id = link.split('/', 4)[3]
|
| 791 |
+
jsondata = requests.get(
|
| 792 |
+
f'https://api.megaupload.nz/v2/file/{id}/info').json()
|
| 793 |
+
jsondata['data']['file']['url']['directDownload'] = a
|
| 794 |
+
del jsondata['data']['file']['url']['full']
|
| 795 |
+
|
| 796 |
+
return jsondata
|
| 797 |
+
except:
|
| 798 |
+
return "{'status': 'false', 'message': 'Invalid Link'}"
|
| 799 |
+
|
| 800 |
+
@app.get("/ryuzaki/myfile")
|
| 801 |
+
def myfile(link: Union[str, None] = None):
|
| 802 |
+
try:
|
| 803 |
+
r = requests.get(link)
|
| 804 |
+
soup = BeautifulSoup(r.content, "html.parser")
|
| 805 |
+
a_href = soup.find("a", {"id": "download-url"}).get("href")
|
| 806 |
+
a = str(a_href)
|
| 807 |
+
id = link.split('/', 4)[3]
|
| 808 |
+
jsondata = requests.get(
|
| 809 |
+
f'https://api.myfile.is/v2/file/{id}/info').json()
|
| 810 |
+
jsondata['data']['file']['url']['directDownload'] = a
|
| 811 |
+
del jsondata['data']['file']['url']['full']
|
| 812 |
+
|
| 813 |
+
return jsondata
|
| 814 |
+
except:
|
| 815 |
+
return "{'status': 'false', 'message': 'Invalid Link'}"
|
poetry.lock
ADDED
|
@@ -0,0 +1,752 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand.
|
| 2 |
+
|
| 3 |
+
[[package]]
|
| 4 |
+
name = "annotated-types"
|
| 5 |
+
version = "0.6.0"
|
| 6 |
+
description = "Reusable constraint types to use with typing.Annotated"
|
| 7 |
+
optional = false
|
| 8 |
+
python-versions = ">=3.8"
|
| 9 |
+
files = [
|
| 10 |
+
{file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"},
|
| 11 |
+
{file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"},
|
| 12 |
+
]
|
| 13 |
+
|
| 14 |
+
[[package]]
|
| 15 |
+
name = "anyio"
|
| 16 |
+
version = "3.7.1"
|
| 17 |
+
description = "High level compatibility layer for multiple asynchronous event loop implementations"
|
| 18 |
+
optional = false
|
| 19 |
+
python-versions = ">=3.7"
|
| 20 |
+
files = [
|
| 21 |
+
{file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"},
|
| 22 |
+
{file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"},
|
| 23 |
+
]
|
| 24 |
+
|
| 25 |
+
[package.dependencies]
|
| 26 |
+
exceptiongroup = {version = "*", markers = "python_version < \"3.11\""}
|
| 27 |
+
idna = ">=2.8"
|
| 28 |
+
sniffio = ">=1.1"
|
| 29 |
+
|
| 30 |
+
[package.extras]
|
| 31 |
+
doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"]
|
| 32 |
+
test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"]
|
| 33 |
+
trio = ["trio (<0.22)"]
|
| 34 |
+
|
| 35 |
+
[[package]]
|
| 36 |
+
name = "beautifulsoup4"
|
| 37 |
+
version = "4.12.2"
|
| 38 |
+
description = "Screen-scraping library"
|
| 39 |
+
optional = false
|
| 40 |
+
python-versions = ">=3.6.0"
|
| 41 |
+
files = [
|
| 42 |
+
{file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"},
|
| 43 |
+
{file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"},
|
| 44 |
+
]
|
| 45 |
+
|
| 46 |
+
[package.dependencies]
|
| 47 |
+
soupsieve = ">1.2"
|
| 48 |
+
|
| 49 |
+
[package.extras]
|
| 50 |
+
html5lib = ["html5lib"]
|
| 51 |
+
lxml = ["lxml"]
|
| 52 |
+
|
| 53 |
+
[[package]]
|
| 54 |
+
name = "beautifultable"
|
| 55 |
+
version = "1.1.0"
|
| 56 |
+
description = "Print text tables for terminals"
|
| 57 |
+
optional = false
|
| 58 |
+
python-versions = "*"
|
| 59 |
+
files = [
|
| 60 |
+
{file = "beautifultable-1.1.0-py2.py3-none-any.whl", hash = "sha256:b34053a581976c4c23064bb0e918a7f6f22273cf196c787946db323a6a2b7d84"},
|
| 61 |
+
{file = "beautifultable-1.1.0.tar.gz", hash = "sha256:040bc987444965678f4ffdfa2f17ac357f1a13e5875b161c9a1899b375319d17"},
|
| 62 |
+
]
|
| 63 |
+
|
| 64 |
+
[package.dependencies]
|
| 65 |
+
wcwidth = "*"
|
| 66 |
+
|
| 67 |
+
[package.extras]
|
| 68 |
+
all = ["pandas"]
|
| 69 |
+
dev = ["pandas"]
|
| 70 |
+
|
| 71 |
+
[[package]]
|
| 72 |
+
name = "bs4"
|
| 73 |
+
version = "0.0.1"
|
| 74 |
+
description = "Dummy package for Beautiful Soup"
|
| 75 |
+
optional = false
|
| 76 |
+
python-versions = "*"
|
| 77 |
+
files = [
|
| 78 |
+
{file = "bs4-0.0.1.tar.gz", hash = "sha256:36ecea1fd7cc5c0c6e4a1ff075df26d50da647b75376626cc186e2212886dd3a"},
|
| 79 |
+
]
|
| 80 |
+
|
| 81 |
+
[package.dependencies]
|
| 82 |
+
beautifulsoup4 = "*"
|
| 83 |
+
|
| 84 |
+
[[package]]
|
| 85 |
+
name = "certifi"
|
| 86 |
+
version = "2023.11.17"
|
| 87 |
+
description = "Python package for providing Mozilla's CA Bundle."
|
| 88 |
+
optional = false
|
| 89 |
+
python-versions = ">=3.6"
|
| 90 |
+
files = [
|
| 91 |
+
{file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"},
|
| 92 |
+
{file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"},
|
| 93 |
+
]
|
| 94 |
+
|
| 95 |
+
[[package]]
|
| 96 |
+
name = "charset-normalizer"
|
| 97 |
+
version = "3.3.2"
|
| 98 |
+
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
|
| 99 |
+
optional = false
|
| 100 |
+
python-versions = ">=3.7.0"
|
| 101 |
+
files = [
|
| 102 |
+
{file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
|
| 103 |
+
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
|
| 104 |
+
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
|
| 105 |
+
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
|
| 106 |
+
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
|
| 107 |
+
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
|
| 108 |
+
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
|
| 109 |
+
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
|
| 110 |
+
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
|
| 111 |
+
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
|
| 112 |
+
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
|
| 113 |
+
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
|
| 114 |
+
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
|
| 115 |
+
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
|
| 116 |
+
{file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
|
| 117 |
+
{file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
|
| 118 |
+
{file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
|
| 119 |
+
{file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
|
| 120 |
+
{file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
|
| 121 |
+
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
|
| 122 |
+
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
|
| 123 |
+
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
|
| 124 |
+
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
|
| 125 |
+
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
|
| 126 |
+
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
|
| 127 |
+
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
|
| 128 |
+
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
|
| 129 |
+
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
|
| 130 |
+
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
|
| 131 |
+
{file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
|
| 132 |
+
{file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
|
| 133 |
+
{file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
|
| 134 |
+
{file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
|
| 135 |
+
{file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
|
| 136 |
+
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
|
| 137 |
+
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
|
| 138 |
+
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
|
| 139 |
+
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
|
| 140 |
+
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
|
| 141 |
+
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
|
| 142 |
+
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
|
| 143 |
+
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
|
| 144 |
+
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
|
| 145 |
+
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
|
| 146 |
+
{file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
|
| 147 |
+
{file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
|
| 148 |
+
{file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
|
| 149 |
+
{file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
|
| 150 |
+
{file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
|
| 151 |
+
{file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
|
| 152 |
+
{file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
|
| 153 |
+
{file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
|
| 154 |
+
{file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
|
| 155 |
+
{file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
|
| 156 |
+
{file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
|
| 157 |
+
{file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
|
| 158 |
+
{file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
|
| 159 |
+
{file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
|
| 160 |
+
{file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
|
| 161 |
+
{file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
|
| 162 |
+
{file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
|
| 163 |
+
{file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
|
| 164 |
+
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
|
| 165 |
+
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
|
| 166 |
+
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
|
| 167 |
+
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
|
| 168 |
+
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
|
| 169 |
+
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
|
| 170 |
+
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
|
| 171 |
+
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
|
| 172 |
+
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
|
| 173 |
+
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
|
| 174 |
+
{file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
|
| 175 |
+
{file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
|
| 176 |
+
{file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
|
| 177 |
+
{file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
|
| 178 |
+
{file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
|
| 179 |
+
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
|
| 180 |
+
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
|
| 181 |
+
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
|
| 182 |
+
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
|
| 183 |
+
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
|
| 184 |
+
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
|
| 185 |
+
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
|
| 186 |
+
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
|
| 187 |
+
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
|
| 188 |
+
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
|
| 189 |
+
{file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
|
| 190 |
+
{file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
|
| 191 |
+
{file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
|
| 192 |
+
]
|
| 193 |
+
|
| 194 |
+
[[package]]
|
| 195 |
+
name = "click"
|
| 196 |
+
version = "8.1.7"
|
| 197 |
+
description = "Composable command line interface toolkit"
|
| 198 |
+
optional = false
|
| 199 |
+
python-versions = ">=3.7"
|
| 200 |
+
files = [
|
| 201 |
+
{file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
|
| 202 |
+
{file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
|
| 203 |
+
]
|
| 204 |
+
|
| 205 |
+
[package.dependencies]
|
| 206 |
+
colorama = {version = "*", markers = "platform_system == \"Windows\""}
|
| 207 |
+
|
| 208 |
+
[[package]]
|
| 209 |
+
name = "colorama"
|
| 210 |
+
version = "0.4.6"
|
| 211 |
+
description = "Cross-platform colored terminal text."
|
| 212 |
+
optional = false
|
| 213 |
+
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
|
| 214 |
+
files = [
|
| 215 |
+
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
|
| 216 |
+
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
| 217 |
+
]
|
| 218 |
+
|
| 219 |
+
[[package]]
|
| 220 |
+
name = "consultor"
|
| 221 |
+
version = "0.2.0"
|
| 222 |
+
description = "Consultor te ayuda a explorar las diferentes carreras y cursos que las universidades ofrecen"
|
| 223 |
+
optional = false
|
| 224 |
+
python-versions = "*"
|
| 225 |
+
files = [
|
| 226 |
+
{file = "consultor-0.2.0-py2.py3-none-any.whl", hash = "sha256:18dd8bc503660c27679a6e13c6a1d14426c8e1e3ebda1f7d287440916c2a8891"},
|
| 227 |
+
]
|
| 228 |
+
|
| 229 |
+
[package.dependencies]
|
| 230 |
+
beautifultable = "*"
|
| 231 |
+
pymongo = "*"
|
| 232 |
+
|
| 233 |
+
[[package]]
|
| 234 |
+
name = "dnspython"
|
| 235 |
+
version = "2.4.2"
|
| 236 |
+
description = "DNS toolkit"
|
| 237 |
+
optional = false
|
| 238 |
+
python-versions = ">=3.8,<4.0"
|
| 239 |
+
files = [
|
| 240 |
+
{file = "dnspython-2.4.2-py3-none-any.whl", hash = "sha256:57c6fbaaeaaf39c891292012060beb141791735dbb4004798328fc2c467402d8"},
|
| 241 |
+
{file = "dnspython-2.4.2.tar.gz", hash = "sha256:8dcfae8c7460a2f84b4072e26f1c9f4101ca20c071649cb7c34e8b6a93d58984"},
|
| 242 |
+
]
|
| 243 |
+
|
| 244 |
+
[package.extras]
|
| 245 |
+
dnssec = ["cryptography (>=2.6,<42.0)"]
|
| 246 |
+
doh = ["h2 (>=4.1.0)", "httpcore (>=0.17.3)", "httpx (>=0.24.1)"]
|
| 247 |
+
doq = ["aioquic (>=0.9.20)"]
|
| 248 |
+
idna = ["idna (>=2.1,<4.0)"]
|
| 249 |
+
trio = ["trio (>=0.14,<0.23)"]
|
| 250 |
+
wmi = ["wmi (>=1.5.1,<2.0.0)"]
|
| 251 |
+
|
| 252 |
+
[[package]]
|
| 253 |
+
name = "exceptiongroup"
|
| 254 |
+
version = "1.2.0"
|
| 255 |
+
description = "Backport of PEP 654 (exception groups)"
|
| 256 |
+
optional = false
|
| 257 |
+
python-versions = ">=3.7"
|
| 258 |
+
files = [
|
| 259 |
+
{file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
|
| 260 |
+
{file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"},
|
| 261 |
+
]
|
| 262 |
+
|
| 263 |
+
[package.extras]
|
| 264 |
+
test = ["pytest (>=6)"]
|
| 265 |
+
|
| 266 |
+
[[package]]
|
| 267 |
+
name = "fastapi"
|
| 268 |
+
version = "0.104.1"
|
| 269 |
+
description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
|
| 270 |
+
optional = false
|
| 271 |
+
python-versions = ">=3.8"
|
| 272 |
+
files = [
|
| 273 |
+
{file = "fastapi-0.104.1-py3-none-any.whl", hash = "sha256:752dc31160cdbd0436bb93bad51560b57e525cbb1d4bbf6f4904ceee75548241"},
|
| 274 |
+
{file = "fastapi-0.104.1.tar.gz", hash = "sha256:e5e4540a7c5e1dcfbbcf5b903c234feddcdcd881f191977a1c5dfd917487e7ae"},
|
| 275 |
+
]
|
| 276 |
+
|
| 277 |
+
[package.dependencies]
|
| 278 |
+
anyio = ">=3.7.1,<4.0.0"
|
| 279 |
+
pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0"
|
| 280 |
+
starlette = ">=0.27.0,<0.28.0"
|
| 281 |
+
typing-extensions = ">=4.8.0"
|
| 282 |
+
|
| 283 |
+
[package.extras]
|
| 284 |
+
all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.5)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
|
| 285 |
+
|
| 286 |
+
[[package]]
|
| 287 |
+
name = "functions"
|
| 288 |
+
version = "0.7.0"
|
| 289 |
+
description = "Functional programming in Python"
|
| 290 |
+
optional = false
|
| 291 |
+
python-versions = "*"
|
| 292 |
+
files = [
|
| 293 |
+
{file = "functions-0.7.0.tar.gz", hash = "sha256:5a36bd11d36bbce210fecddd9ff1a475a86035905818a4075d6c7ebb2f714181"},
|
| 294 |
+
]
|
| 295 |
+
|
| 296 |
+
[[package]]
|
| 297 |
+
name = "h11"
|
| 298 |
+
version = "0.14.0"
|
| 299 |
+
description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
|
| 300 |
+
optional = false
|
| 301 |
+
python-versions = ">=3.7"
|
| 302 |
+
files = [
|
| 303 |
+
{file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
|
| 304 |
+
{file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
|
| 305 |
+
]
|
| 306 |
+
|
| 307 |
+
[[package]]
|
| 308 |
+
name = "httpcore"
|
| 309 |
+
version = "1.0.2"
|
| 310 |
+
description = "A minimal low-level HTTP client."
|
| 311 |
+
optional = false
|
| 312 |
+
python-versions = ">=3.8"
|
| 313 |
+
files = [
|
| 314 |
+
{file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"},
|
| 315 |
+
{file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"},
|
| 316 |
+
]
|
| 317 |
+
|
| 318 |
+
[package.dependencies]
|
| 319 |
+
certifi = "*"
|
| 320 |
+
h11 = ">=0.13,<0.15"
|
| 321 |
+
|
| 322 |
+
[package.extras]
|
| 323 |
+
asyncio = ["anyio (>=4.0,<5.0)"]
|
| 324 |
+
http2 = ["h2 (>=3,<5)"]
|
| 325 |
+
socks = ["socksio (==1.*)"]
|
| 326 |
+
trio = ["trio (>=0.22.0,<0.23.0)"]
|
| 327 |
+
|
| 328 |
+
[[package]]
|
| 329 |
+
name = "httpx"
|
| 330 |
+
version = "0.25.2"
|
| 331 |
+
description = "The next generation HTTP client."
|
| 332 |
+
optional = false
|
| 333 |
+
python-versions = ">=3.8"
|
| 334 |
+
files = [
|
| 335 |
+
{file = "httpx-0.25.2-py3-none-any.whl", hash = "sha256:a05d3d052d9b2dfce0e3896636467f8a5342fb2b902c819428e1ac65413ca118"},
|
| 336 |
+
{file = "httpx-0.25.2.tar.gz", hash = "sha256:8b8fcaa0c8ea7b05edd69a094e63a2094c4efcb48129fb757361bc423c0ad9e8"},
|
| 337 |
+
]
|
| 338 |
+
|
| 339 |
+
[package.dependencies]
|
| 340 |
+
anyio = "*"
|
| 341 |
+
certifi = "*"
|
| 342 |
+
httpcore = "==1.*"
|
| 343 |
+
idna = "*"
|
| 344 |
+
sniffio = "*"
|
| 345 |
+
|
| 346 |
+
[package.extras]
|
| 347 |
+
brotli = ["brotli", "brotlicffi"]
|
| 348 |
+
cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
|
| 349 |
+
http2 = ["h2 (>=3,<5)"]
|
| 350 |
+
socks = ["socksio (==1.*)"]
|
| 351 |
+
|
| 352 |
+
[[package]]
|
| 353 |
+
name = "idna"
|
| 354 |
+
version = "3.6"
|
| 355 |
+
description = "Internationalized Domain Names in Applications (IDNA)"
|
| 356 |
+
optional = false
|
| 357 |
+
python-versions = ">=3.5"
|
| 358 |
+
files = [
|
| 359 |
+
{file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"},
|
| 360 |
+
{file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"},
|
| 361 |
+
]
|
| 362 |
+
|
| 363 |
+
[[package]]
|
| 364 |
+
name = "pydantic"
|
| 365 |
+
version = "2.5.2"
|
| 366 |
+
description = "Data validation using Python type hints"
|
| 367 |
+
optional = false
|
| 368 |
+
python-versions = ">=3.7"
|
| 369 |
+
files = [
|
| 370 |
+
{file = "pydantic-2.5.2-py3-none-any.whl", hash = "sha256:80c50fb8e3dcecfddae1adbcc00ec5822918490c99ab31f6cf6140ca1c1429f0"},
|
| 371 |
+
{file = "pydantic-2.5.2.tar.gz", hash = "sha256:ff177ba64c6faf73d7afa2e8cad38fd456c0dbe01c9954e71038001cd15a6edd"},
|
| 372 |
+
]
|
| 373 |
+
|
| 374 |
+
[package.dependencies]
|
| 375 |
+
annotated-types = ">=0.4.0"
|
| 376 |
+
pydantic-core = "2.14.5"
|
| 377 |
+
typing-extensions = ">=4.6.1"
|
| 378 |
+
|
| 379 |
+
[package.extras]
|
| 380 |
+
email = ["email-validator (>=2.0.0)"]
|
| 381 |
+
|
| 382 |
+
[[package]]
|
| 383 |
+
name = "pydantic-core"
|
| 384 |
+
version = "2.14.5"
|
| 385 |
+
description = ""
|
| 386 |
+
optional = false
|
| 387 |
+
python-versions = ">=3.7"
|
| 388 |
+
files = [
|
| 389 |
+
{file = "pydantic_core-2.14.5-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:7e88f5696153dc516ba6e79f82cc4747e87027205f0e02390c21f7cb3bd8abfd"},
|
| 390 |
+
{file = "pydantic_core-2.14.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4641e8ad4efb697f38a9b64ca0523b557c7931c5f84e0fd377a9a3b05121f0de"},
|
| 391 |
+
{file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:774de879d212db5ce02dfbf5b0da9a0ea386aeba12b0b95674a4ce0593df3d07"},
|
| 392 |
+
{file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ebb4e035e28f49b6f1a7032920bb9a0c064aedbbabe52c543343d39341a5b2a3"},
|
| 393 |
+
{file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b53e9ad053cd064f7e473a5f29b37fc4cc9dc6d35f341e6afc0155ea257fc911"},
|
| 394 |
+
{file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aa1768c151cf562a9992462239dfc356b3d1037cc5a3ac829bb7f3bda7cc1f9"},
|
| 395 |
+
{file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eac5c82fc632c599f4639a5886f96867ffced74458c7db61bc9a66ccb8ee3113"},
|
| 396 |
+
{file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2ae91f50ccc5810b2f1b6b858257c9ad2e08da70bf890dee02de1775a387c66"},
|
| 397 |
+
{file = "pydantic_core-2.14.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6b9ff467ffbab9110e80e8c8de3bcfce8e8b0fd5661ac44a09ae5901668ba997"},
|
| 398 |
+
{file = "pydantic_core-2.14.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:61ea96a78378e3bd5a0be99b0e5ed00057b71f66115f5404d0dae4819f495093"},
|
| 399 |
+
{file = "pydantic_core-2.14.5-cp310-none-win32.whl", hash = "sha256:bb4c2eda937a5e74c38a41b33d8c77220380a388d689bcdb9b187cf6224c9720"},
|
| 400 |
+
{file = "pydantic_core-2.14.5-cp310-none-win_amd64.whl", hash = "sha256:b7851992faf25eac90bfcb7bfd19e1f5ffa00afd57daec8a0042e63c74a4551b"},
|
| 401 |
+
{file = "pydantic_core-2.14.5-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:4e40f2bd0d57dac3feb3a3aed50f17d83436c9e6b09b16af271b6230a2915459"},
|
| 402 |
+
{file = "pydantic_core-2.14.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ab1cdb0f14dc161ebc268c09db04d2c9e6f70027f3b42446fa11c153521c0e88"},
|
| 403 |
+
{file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aae7ea3a1c5bb40c93cad361b3e869b180ac174656120c42b9fadebf685d121b"},
|
| 404 |
+
{file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:60b7607753ba62cf0739177913b858140f11b8af72f22860c28eabb2f0a61937"},
|
| 405 |
+
{file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2248485b0322c75aee7565d95ad0e16f1c67403a470d02f94da7344184be770f"},
|
| 406 |
+
{file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:823fcc638f67035137a5cd3f1584a4542d35a951c3cc68c6ead1df7dac825c26"},
|
| 407 |
+
{file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96581cfefa9123accc465a5fd0cc833ac4d75d55cc30b633b402e00e7ced00a6"},
|
| 408 |
+
{file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a33324437018bf6ba1bb0f921788788641439e0ed654b233285b9c69704c27b4"},
|
| 409 |
+
{file = "pydantic_core-2.14.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9bd18fee0923ca10f9a3ff67d4851c9d3e22b7bc63d1eddc12f439f436f2aada"},
|
| 410 |
+
{file = "pydantic_core-2.14.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:853a2295c00f1d4429db4c0fb9475958543ee80cfd310814b5c0ef502de24dda"},
|
| 411 |
+
{file = "pydantic_core-2.14.5-cp311-none-win32.whl", hash = "sha256:cb774298da62aea5c80a89bd58c40205ab4c2abf4834453b5de207d59d2e1651"},
|
| 412 |
+
{file = "pydantic_core-2.14.5-cp311-none-win_amd64.whl", hash = "sha256:e87fc540c6cac7f29ede02e0f989d4233f88ad439c5cdee56f693cc9c1c78077"},
|
| 413 |
+
{file = "pydantic_core-2.14.5-cp311-none-win_arm64.whl", hash = "sha256:57d52fa717ff445cb0a5ab5237db502e6be50809b43a596fb569630c665abddf"},
|
| 414 |
+
{file = "pydantic_core-2.14.5-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:e60f112ac88db9261ad3a52032ea46388378034f3279c643499edb982536a093"},
|
| 415 |
+
{file = "pydantic_core-2.14.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6e227c40c02fd873c2a73a98c1280c10315cbebe26734c196ef4514776120aeb"},
|
| 416 |
+
{file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0cbc7fff06a90bbd875cc201f94ef0ee3929dfbd5c55a06674b60857b8b85ed"},
|
| 417 |
+
{file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:103ef8d5b58596a731b690112819501ba1db7a36f4ee99f7892c40da02c3e189"},
|
| 418 |
+
{file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c949f04ecad823f81b1ba94e7d189d9dfb81edbb94ed3f8acfce41e682e48cef"},
|
| 419 |
+
{file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1452a1acdf914d194159439eb21e56b89aa903f2e1c65c60b9d874f9b950e5d"},
|
| 420 |
+
{file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb4679d4c2b089e5ef89756bc73e1926745e995d76e11925e3e96a76d5fa51fc"},
|
| 421 |
+
{file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cf9d3fe53b1ee360e2421be95e62ca9b3296bf3f2fb2d3b83ca49ad3f925835e"},
|
| 422 |
+
{file = "pydantic_core-2.14.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:70f4b4851dbb500129681d04cc955be2a90b2248d69273a787dda120d5cf1f69"},
|
| 423 |
+
{file = "pydantic_core-2.14.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:59986de5710ad9613ff61dd9b02bdd2f615f1a7052304b79cc8fa2eb4e336d2d"},
|
| 424 |
+
{file = "pydantic_core-2.14.5-cp312-none-win32.whl", hash = "sha256:699156034181e2ce106c89ddb4b6504c30db8caa86e0c30de47b3e0654543260"},
|
| 425 |
+
{file = "pydantic_core-2.14.5-cp312-none-win_amd64.whl", hash = "sha256:5baab5455c7a538ac7e8bf1feec4278a66436197592a9bed538160a2e7d11e36"},
|
| 426 |
+
{file = "pydantic_core-2.14.5-cp312-none-win_arm64.whl", hash = "sha256:e47e9a08bcc04d20975b6434cc50bf82665fbc751bcce739d04a3120428f3e27"},
|
| 427 |
+
{file = "pydantic_core-2.14.5-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:af36f36538418f3806048f3b242a1777e2540ff9efaa667c27da63d2749dbce0"},
|
| 428 |
+
{file = "pydantic_core-2.14.5-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:45e95333b8418ded64745f14574aa9bfc212cb4fbeed7a687b0c6e53b5e188cd"},
|
| 429 |
+
{file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e47a76848f92529879ecfc417ff88a2806438f57be4a6a8bf2961e8f9ca9ec7"},
|
| 430 |
+
{file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d81e6987b27bc7d101c8597e1cd2bcaa2fee5e8e0f356735c7ed34368c471550"},
|
| 431 |
+
{file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34708cc82c330e303f4ce87758828ef6e457681b58ce0e921b6e97937dd1e2a3"},
|
| 432 |
+
{file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:652c1988019752138b974c28f43751528116bcceadad85f33a258869e641d753"},
|
| 433 |
+
{file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e4d090e73e0725b2904fdbdd8d73b8802ddd691ef9254577b708d413bf3006e"},
|
| 434 |
+
{file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5c7d5b5005f177764e96bd584d7bf28d6e26e96f2a541fdddb934c486e36fd59"},
|
| 435 |
+
{file = "pydantic_core-2.14.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a71891847f0a73b1b9eb86d089baee301477abef45f7eaf303495cd1473613e4"},
|
| 436 |
+
{file = "pydantic_core-2.14.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a717aef6971208f0851a2420b075338e33083111d92041157bbe0e2713b37325"},
|
| 437 |
+
{file = "pydantic_core-2.14.5-cp37-none-win32.whl", hash = "sha256:de790a3b5aa2124b8b78ae5faa033937a72da8efe74b9231698b5a1dd9be3405"},
|
| 438 |
+
{file = "pydantic_core-2.14.5-cp37-none-win_amd64.whl", hash = "sha256:6c327e9cd849b564b234da821236e6bcbe4f359a42ee05050dc79d8ed2a91588"},
|
| 439 |
+
{file = "pydantic_core-2.14.5-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:ef98ca7d5995a82f43ec0ab39c4caf6a9b994cb0b53648ff61716370eadc43cf"},
|
| 440 |
+
{file = "pydantic_core-2.14.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6eae413494a1c3f89055da7a5515f32e05ebc1a234c27674a6956755fb2236f"},
|
| 441 |
+
{file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcf4e6d85614f7a4956c2de5a56531f44efb973d2fe4a444d7251df5d5c4dcfd"},
|
| 442 |
+
{file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6637560562134b0e17de333d18e69e312e0458ee4455bdad12c37100b7cad706"},
|
| 443 |
+
{file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77fa384d8e118b3077cccfcaf91bf83c31fe4dc850b5e6ee3dc14dc3d61bdba1"},
|
| 444 |
+
{file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16e29bad40bcf97aac682a58861249ca9dcc57c3f6be22f506501833ddb8939c"},
|
| 445 |
+
{file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531f4b4252fac6ca476fbe0e6f60f16f5b65d3e6b583bc4d87645e4e5ddde331"},
|
| 446 |
+
{file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:074f3d86f081ce61414d2dc44901f4f83617329c6f3ab49d2bc6c96948b2c26b"},
|
| 447 |
+
{file = "pydantic_core-2.14.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c2adbe22ab4babbca99c75c5d07aaf74f43c3195384ec07ccbd2f9e3bddaecec"},
|
| 448 |
+
{file = "pydantic_core-2.14.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0f6116a558fd06d1b7c2902d1c4cf64a5bd49d67c3540e61eccca93f41418124"},
|
| 449 |
+
{file = "pydantic_core-2.14.5-cp38-none-win32.whl", hash = "sha256:fe0a5a1025eb797752136ac8b4fa21aa891e3d74fd340f864ff982d649691867"},
|
| 450 |
+
{file = "pydantic_core-2.14.5-cp38-none-win_amd64.whl", hash = "sha256:079206491c435b60778cf2b0ee5fd645e61ffd6e70c47806c9ed51fc75af078d"},
|
| 451 |
+
{file = "pydantic_core-2.14.5-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:a6a16f4a527aae4f49c875da3cdc9508ac7eef26e7977952608610104244e1b7"},
|
| 452 |
+
{file = "pydantic_core-2.14.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:abf058be9517dc877227ec3223f0300034bd0e9f53aebd63cf4456c8cb1e0863"},
|
| 453 |
+
{file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49b08aae5013640a3bfa25a8eebbd95638ec3f4b2eaf6ed82cf0c7047133f03b"},
|
| 454 |
+
{file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c2d97e906b4ff36eb464d52a3bc7d720bd6261f64bc4bcdbcd2c557c02081ed2"},
|
| 455 |
+
{file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3128e0bbc8c091ec4375a1828d6118bc20404883169ac95ffa8d983b293611e6"},
|
| 456 |
+
{file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88e74ab0cdd84ad0614e2750f903bb0d610cc8af2cc17f72c28163acfcf372a4"},
|
| 457 |
+
{file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c339dabd8ee15f8259ee0f202679b6324926e5bc9e9a40bf981ce77c038553db"},
|
| 458 |
+
{file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3387277f1bf659caf1724e1afe8ee7dbc9952a82d90f858ebb931880216ea955"},
|
| 459 |
+
{file = "pydantic_core-2.14.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ba6b6b3846cfc10fdb4c971980a954e49d447cd215ed5a77ec8190bc93dd7bc5"},
|
| 460 |
+
{file = "pydantic_core-2.14.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ca61d858e4107ce5e1330a74724fe757fc7135190eb5ce5c9d0191729f033209"},
|
| 461 |
+
{file = "pydantic_core-2.14.5-cp39-none-win32.whl", hash = "sha256:ec1e72d6412f7126eb7b2e3bfca42b15e6e389e1bc88ea0069d0cc1742f477c6"},
|
| 462 |
+
{file = "pydantic_core-2.14.5-cp39-none-win_amd64.whl", hash = "sha256:c0b97ec434041827935044bbbe52b03d6018c2897349670ff8fe11ed24d1d4ab"},
|
| 463 |
+
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:79e0a2cdbdc7af3f4aee3210b1172ab53d7ddb6a2d8c24119b5706e622b346d0"},
|
| 464 |
+
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:678265f7b14e138d9a541ddabbe033012a2953315739f8cfa6d754cc8063e8ca"},
|
| 465 |
+
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b15e855ae44f0c6341ceb74df61b606e11f1087e87dcb7482377374aac6abe"},
|
| 466 |
+
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09b0e985fbaf13e6b06a56d21694d12ebca6ce5414b9211edf6f17738d82b0f8"},
|
| 467 |
+
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ad873900297bb36e4b6b3f7029d88ff9829ecdc15d5cf20161775ce12306f8a"},
|
| 468 |
+
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:2d0ae0d8670164e10accbeb31d5ad45adb71292032d0fdb9079912907f0085f4"},
|
| 469 |
+
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d37f8ec982ead9ba0a22a996129594938138a1503237b87318392a48882d50b7"},
|
| 470 |
+
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:35613015f0ba7e14c29ac6c2483a657ec740e5ac5758d993fdd5870b07a61d8b"},
|
| 471 |
+
{file = "pydantic_core-2.14.5-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ab4ea451082e684198636565224bbb179575efc1658c48281b2c866bfd4ddf04"},
|
| 472 |
+
{file = "pydantic_core-2.14.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ce601907e99ea5b4adb807ded3570ea62186b17f88e271569144e8cca4409c7"},
|
| 473 |
+
{file = "pydantic_core-2.14.5-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb2ed8b3fe4bf4506d6dab3b93b83bbc22237e230cba03866d561c3577517d18"},
|
| 474 |
+
{file = "pydantic_core-2.14.5-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70f947628e074bb2526ba1b151cee10e4c3b9670af4dbb4d73bc8a89445916b5"},
|
| 475 |
+
{file = "pydantic_core-2.14.5-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4bc536201426451f06f044dfbf341c09f540b4ebdb9fd8d2c6164d733de5e634"},
|
| 476 |
+
{file = "pydantic_core-2.14.5-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f4791cf0f8c3104ac668797d8c514afb3431bc3305f5638add0ba1a5a37e0d88"},
|
| 477 |
+
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:038c9f763e650712b899f983076ce783175397c848da04985658e7628cbe873b"},
|
| 478 |
+
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:27548e16c79702f1e03f5628589c6057c9ae17c95b4c449de3c66b589ead0520"},
|
| 479 |
+
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c97bee68898f3f4344eb02fec316db93d9700fb1e6a5b760ffa20d71d9a46ce3"},
|
| 480 |
+
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9b759b77f5337b4ea024f03abc6464c9f35d9718de01cfe6bae9f2e139c397e"},
|
| 481 |
+
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:439c9afe34638ace43a49bf72d201e0ffc1a800295bed8420c2a9ca8d5e3dbb3"},
|
| 482 |
+
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ba39688799094c75ea8a16a6b544eb57b5b0f3328697084f3f2790892510d144"},
|
| 483 |
+
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ccd4d5702bb90b84df13bd491be8d900b92016c5a455b7e14630ad7449eb03f8"},
|
| 484 |
+
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:81982d78a45d1e5396819bbb4ece1fadfe5f079335dd28c4ab3427cd95389944"},
|
| 485 |
+
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:7f8210297b04e53bc3da35db08b7302a6a1f4889c79173af69b72ec9754796b8"},
|
| 486 |
+
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:8c8a8812fe6f43a3a5b054af6ac2d7b8605c7bcab2804a8a7d68b53f3cd86e00"},
|
| 487 |
+
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:206ed23aecd67c71daf5c02c3cd19c0501b01ef3cbf7782db9e4e051426b3d0d"},
|
| 488 |
+
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2027d05c8aebe61d898d4cffd774840a9cb82ed356ba47a90d99ad768f39789"},
|
| 489 |
+
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40180930807ce806aa71eda5a5a5447abb6b6a3c0b4b3b1b1962651906484d68"},
|
| 490 |
+
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:615a0a4bff11c45eb3c1996ceed5bdaa2f7b432425253a7c2eed33bb86d80abc"},
|
| 491 |
+
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5e412d717366e0677ef767eac93566582518fe8be923361a5c204c1a62eaafe"},
|
| 492 |
+
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:513b07e99c0a267b1d954243845d8a833758a6726a3b5d8948306e3fe14675e3"},
|
| 493 |
+
{file = "pydantic_core-2.14.5.tar.gz", hash = "sha256:6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71"},
|
| 494 |
+
]
|
| 495 |
+
|
| 496 |
+
[package.dependencies]
|
| 497 |
+
typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
|
| 498 |
+
|
| 499 |
+
[[package]]
|
| 500 |
+
name = "pymongo"
|
| 501 |
+
version = "4.6.1"
|
| 502 |
+
description = "Python driver for MongoDB <http://www.mongodb.org>"
|
| 503 |
+
optional = false
|
| 504 |
+
python-versions = ">=3.7"
|
| 505 |
+
files = [
|
| 506 |
+
{file = "pymongo-4.6.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4344c30025210b9fa80ec257b0e0aab5aa1d5cca91daa70d82ab97b482cc038e"},
|
| 507 |
+
{file = "pymongo-4.6.1-cp310-cp310-manylinux1_i686.whl", hash = "sha256:1c5654bb8bb2bdb10e7a0bc3c193dd8b49a960b9eebc4381ff5a2043f4c3c441"},
|
| 508 |
+
{file = "pymongo-4.6.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:eaf2f65190c506def2581219572b9c70b8250615dc918b3b7c218361a51ec42e"},
|
| 509 |
+
{file = "pymongo-4.6.1-cp310-cp310-manylinux2014_i686.whl", hash = "sha256:262356ea5fcb13d35fb2ab6009d3927bafb9504ef02339338634fffd8a9f1ae4"},
|
| 510 |
+
{file = "pymongo-4.6.1-cp310-cp310-manylinux2014_ppc64le.whl", hash = "sha256:2dd2f6960ee3c9360bed7fb3c678be0ca2d00f877068556785ec2eb6b73d2414"},
|
| 511 |
+
{file = "pymongo-4.6.1-cp310-cp310-manylinux2014_s390x.whl", hash = "sha256:ff925f1cca42e933376d09ddc254598f8c5fcd36efc5cac0118bb36c36217c41"},
|
| 512 |
+
{file = "pymongo-4.6.1-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:3cadf7f4c8e94d8a77874b54a63c80af01f4d48c4b669c8b6867f86a07ba994f"},
|
| 513 |
+
{file = "pymongo-4.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55dac73316e7e8c2616ba2e6f62b750918e9e0ae0b2053699d66ca27a7790105"},
|
| 514 |
+
{file = "pymongo-4.6.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:154b361dcb358ad377d5d40df41ee35f1cc14c8691b50511547c12404f89b5cb"},
|
| 515 |
+
{file = "pymongo-4.6.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2940aa20e9cc328e8ddeacea8b9a6f5ddafe0b087fedad928912e787c65b4909"},
|
| 516 |
+
{file = "pymongo-4.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:010bc9aa90fd06e5cc52c8fac2c2fd4ef1b5f990d9638548dde178005770a5e8"},
|
| 517 |
+
{file = "pymongo-4.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e470fa4bace5f50076c32f4b3cc182b31303b4fefb9b87f990144515d572820b"},
|
| 518 |
+
{file = "pymongo-4.6.1-cp310-cp310-win32.whl", hash = "sha256:da08ea09eefa6b960c2dd9a68ec47949235485c623621eb1d6c02b46765322ac"},
|
| 519 |
+
{file = "pymongo-4.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:13d613c866f9f07d51180f9a7da54ef491d130f169e999c27e7633abe8619ec9"},
|
| 520 |
+
{file = "pymongo-4.6.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6a0ae7a48a6ef82ceb98a366948874834b86c84e288dbd55600c1abfc3ac1d88"},
|
| 521 |
+
{file = "pymongo-4.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bd94c503271e79917b27c6e77f7c5474da6930b3fb9e70a12e68c2dff386b9a"},
|
| 522 |
+
{file = "pymongo-4.6.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2d4ccac3053b84a09251da8f5350bb684cbbf8c8c01eda6b5418417d0a8ab198"},
|
| 523 |
+
{file = "pymongo-4.6.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:349093675a2d3759e4fb42b596afffa2b2518c890492563d7905fac503b20daa"},
|
| 524 |
+
{file = "pymongo-4.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88beb444fb438385e53dc9110852910ec2a22f0eab7dd489e827038fdc19ed8d"},
|
| 525 |
+
{file = "pymongo-4.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8e62d06e90f60ea2a3d463ae51401475568b995bafaffd81767d208d84d7bb1"},
|
| 526 |
+
{file = "pymongo-4.6.1-cp311-cp311-win32.whl", hash = "sha256:5556e306713e2522e460287615d26c0af0fe5ed9d4f431dad35c6624c5d277e9"},
|
| 527 |
+
{file = "pymongo-4.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:b10d8cda9fc2fcdcfa4a000aa10413a2bf8b575852cd07cb8a595ed09689ca98"},
|
| 528 |
+
{file = "pymongo-4.6.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b435b13bb8e36be11b75f7384a34eefe487fe87a6267172964628e2b14ecf0a7"},
|
| 529 |
+
{file = "pymongo-4.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e438417ce1dc5b758742e12661d800482200b042d03512a8f31f6aaa9137ad40"},
|
| 530 |
+
{file = "pymongo-4.6.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8b47ebd89e69fbf33d1c2df79759d7162fc80c7652dacfec136dae1c9b3afac7"},
|
| 531 |
+
{file = "pymongo-4.6.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bbed8cccebe1169d45cedf00461b2842652d476d2897fd1c42cf41b635d88746"},
|
| 532 |
+
{file = "pymongo-4.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c30a9e06041fbd7a7590693ec5e407aa8737ad91912a1e70176aff92e5c99d20"},
|
| 533 |
+
{file = "pymongo-4.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8729dbf25eb32ad0dc0b9bd5e6a0d0b7e5c2dc8ec06ad171088e1896b522a74"},
|
| 534 |
+
{file = "pymongo-4.6.1-cp312-cp312-win32.whl", hash = "sha256:3177f783ae7e08aaf7b2802e0df4e4b13903520e8380915e6337cdc7a6ff01d8"},
|
| 535 |
+
{file = "pymongo-4.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:00c199e1c593e2c8b033136d7a08f0c376452bac8a896c923fcd6f419e07bdd2"},
|
| 536 |
+
{file = "pymongo-4.6.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:13552ca505366df74e3e2f0a4f27c363928f3dff0eef9f281eb81af7f29bc3c5"},
|
| 537 |
+
{file = "pymongo-4.6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:77e0df59b1a4994ad30c6d746992ae887f9756a43fc25dec2db515d94cf0222d"},
|
| 538 |
+
{file = "pymongo-4.6.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3a7f02a58a0c2912734105e05dedbee4f7507e6f1bd132ebad520be0b11d46fd"},
|
| 539 |
+
{file = "pymongo-4.6.1-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:026a24a36394dc8930cbcb1d19d5eb35205ef3c838a7e619e04bd170713972e7"},
|
| 540 |
+
{file = "pymongo-4.6.1-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:3b287e814a01deddb59b88549c1e0c87cefacd798d4afc0c8bd6042d1c3d48aa"},
|
| 541 |
+
{file = "pymongo-4.6.1-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:9a710c184ba845afb05a6f876edac8f27783ba70e52d5eaf939f121fc13b2f59"},
|
| 542 |
+
{file = "pymongo-4.6.1-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:30b2c9caf3e55c2e323565d1f3b7e7881ab87db16997dc0cbca7c52885ed2347"},
|
| 543 |
+
{file = "pymongo-4.6.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff62ba8ff70f01ab4fe0ae36b2cb0b5d1f42e73dfc81ddf0758cd9f77331ad25"},
|
| 544 |
+
{file = "pymongo-4.6.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:547dc5d7f834b1deefda51aedb11a7af9c51c45e689e44e14aa85d44147c7657"},
|
| 545 |
+
{file = "pymongo-4.6.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1de3c6faf948f3edd4e738abdb4b76572b4f4fdfc1fed4dad02427e70c5a6219"},
|
| 546 |
+
{file = "pymongo-4.6.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2831e05ce0a4df10c4ac5399ef50b9a621f90894c2a4d2945dc5658765514ed"},
|
| 547 |
+
{file = "pymongo-4.6.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:144a31391a39a390efce0c5ebcaf4bf112114af4384c90163f402cec5ede476b"},
|
| 548 |
+
{file = "pymongo-4.6.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:33bb16a07d3cc4e0aea37b242097cd5f7a156312012455c2fa8ca396953b11c4"},
|
| 549 |
+
{file = "pymongo-4.6.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b7b1a83ce514700276a46af3d9e481ec381f05b64939effc9065afe18456a6b9"},
|
| 550 |
+
{file = "pymongo-4.6.1-cp37-cp37m-win32.whl", hash = "sha256:3071ec998cc3d7b4944377e5f1217c2c44b811fae16f9a495c7a1ce9b42fb038"},
|
| 551 |
+
{file = "pymongo-4.6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:2346450a075625c4d6166b40a013b605a38b6b6168ce2232b192a37fb200d588"},
|
| 552 |
+
{file = "pymongo-4.6.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:061598cbc6abe2f382ab64c9caa83faa2f4c51256f732cdd890bcc6e63bfb67e"},
|
| 553 |
+
{file = "pymongo-4.6.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:d483793a384c550c2d12cb794ede294d303b42beff75f3b3081f57196660edaf"},
|
| 554 |
+
{file = "pymongo-4.6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:f9756f1d25454ba6a3c2f1ef8b7ddec23e5cdeae3dc3c3377243ae37a383db00"},
|
| 555 |
+
{file = "pymongo-4.6.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:1ed23b0e2dac6f84f44c8494fbceefe6eb5c35db5c1099f56ab78fc0d94ab3af"},
|
| 556 |
+
{file = "pymongo-4.6.1-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:3d18a9b9b858ee140c15c5bfcb3e66e47e2a70a03272c2e72adda2482f76a6ad"},
|
| 557 |
+
{file = "pymongo-4.6.1-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:c258dbacfff1224f13576147df16ce3c02024a0d792fd0323ac01bed5d3c545d"},
|
| 558 |
+
{file = "pymongo-4.6.1-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:f7acc03a4f1154ba2643edeb13658d08598fe6e490c3dd96a241b94f09801626"},
|
| 559 |
+
{file = "pymongo-4.6.1-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:76013fef1c9cd1cd00d55efde516c154aa169f2bf059b197c263a255ba8a9ddf"},
|
| 560 |
+
{file = "pymongo-4.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f0e6a6c807fa887a0c51cc24fe7ea51bb9e496fe88f00d7930063372c3664c3"},
|
| 561 |
+
{file = "pymongo-4.6.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd1fa413f8b9ba30140de198e4f408ffbba6396864c7554e0867aa7363eb58b2"},
|
| 562 |
+
{file = "pymongo-4.6.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d219b4508f71d762368caec1fc180960569766049bbc4d38174f05e8ef2fe5b"},
|
| 563 |
+
{file = "pymongo-4.6.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27b81ecf18031998ad7db53b960d1347f8f29e8b7cb5ea7b4394726468e4295e"},
|
| 564 |
+
{file = "pymongo-4.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56816e43c92c2fa8c11dc2a686f0ca248bea7902f4a067fa6cbc77853b0f041e"},
|
| 565 |
+
{file = "pymongo-4.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef801027629c5b511cf2ba13b9be29bfee36ae834b2d95d9877818479cdc99ea"},
|
| 566 |
+
{file = "pymongo-4.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d4c2be9760b112b1caf649b4977b81b69893d75aa86caf4f0f398447be871f3c"},
|
| 567 |
+
{file = "pymongo-4.6.1-cp38-cp38-win32.whl", hash = "sha256:39d77d8bbb392fa443831e6d4ae534237b1f4eee6aa186f0cdb4e334ba89536e"},
|
| 568 |
+
{file = "pymongo-4.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:4497d49d785482cc1a44a0ddf8830b036a468c088e72a05217f5b60a9e025012"},
|
| 569 |
+
{file = "pymongo-4.6.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:69247f7a2835fc0984bbf0892e6022e9a36aec70e187fcfe6cae6a373eb8c4de"},
|
| 570 |
+
{file = "pymongo-4.6.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:7bb0e9049e81def6829d09558ad12d16d0454c26cabe6efc3658e544460688d9"},
|
| 571 |
+
{file = "pymongo-4.6.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:6a1810c2cbde714decf40f811d1edc0dae45506eb37298fd9d4247b8801509fe"},
|
| 572 |
+
{file = "pymongo-4.6.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:e2aced6fb2f5261b47d267cb40060b73b6527e64afe54f6497844c9affed5fd0"},
|
| 573 |
+
{file = "pymongo-4.6.1-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:d0355cff58a4ed6d5e5f6b9c3693f52de0784aa0c17119394e2a8e376ce489d4"},
|
| 574 |
+
{file = "pymongo-4.6.1-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:3c74f4725485f0a7a3862cfd374cc1b740cebe4c133e0c1425984bcdcce0f4bb"},
|
| 575 |
+
{file = "pymongo-4.6.1-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:9c79d597fb3a7c93d7c26924db7497eba06d58f88f58e586aa69b2ad89fee0f8"},
|
| 576 |
+
{file = "pymongo-4.6.1-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:8ec75f35f62571a43e31e7bd11749d974c1b5cd5ea4a8388725d579263c0fdf6"},
|
| 577 |
+
{file = "pymongo-4.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5e641f931c5cd95b376fd3c59db52770e17bec2bf86ef16cc83b3906c054845"},
|
| 578 |
+
{file = "pymongo-4.6.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9aafd036f6f2e5ad109aec92f8dbfcbe76cff16bad683eb6dd18013739c0b3ae"},
|
| 579 |
+
{file = "pymongo-4.6.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f2b856518bfcfa316c8dae3d7b412aecacf2e8ba30b149f5eb3b63128d703b9"},
|
| 580 |
+
{file = "pymongo-4.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec31adc2e988fd7db3ab509954791bbc5a452a03c85e45b804b4bfc31fa221d"},
|
| 581 |
+
{file = "pymongo-4.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9167e735379ec43d8eafa3fd675bfbb12e2c0464f98960586e9447d2cf2c7a83"},
|
| 582 |
+
{file = "pymongo-4.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1461199b07903fc1424709efafe379205bf5f738144b1a50a08b0396357b5abf"},
|
| 583 |
+
{file = "pymongo-4.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3094c7d2f820eecabadae76bfec02669567bbdd1730eabce10a5764778564f7b"},
|
| 584 |
+
{file = "pymongo-4.6.1-cp39-cp39-win32.whl", hash = "sha256:c91ea3915425bd4111cb1b74511cdc56d1d16a683a48bf2a5a96b6a6c0f297f7"},
|
| 585 |
+
{file = "pymongo-4.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:ef102a67ede70e1721fe27f75073b5314911dbb9bc27cde0a1c402a11531e7bd"},
|
| 586 |
+
{file = "pymongo-4.6.1.tar.gz", hash = "sha256:31dab1f3e1d0cdd57e8df01b645f52d43cc1b653ed3afd535d2891f4fc4f9712"},
|
| 587 |
+
]
|
| 588 |
+
|
| 589 |
+
[package.dependencies]
|
| 590 |
+
dnspython = ">=1.16.0,<3.0.0"
|
| 591 |
+
|
| 592 |
+
[package.extras]
|
| 593 |
+
aws = ["pymongo-auth-aws (<2.0.0)"]
|
| 594 |
+
encryption = ["certifi", "pymongo[aws]", "pymongocrypt (>=1.6.0,<2.0.0)"]
|
| 595 |
+
gssapi = ["pykerberos", "winkerberos (>=0.5.0)"]
|
| 596 |
+
ocsp = ["certifi", "cryptography (>=2.5)", "pyopenssl (>=17.2.0)", "requests (<3.0.0)", "service-identity (>=18.1.0)"]
|
| 597 |
+
snappy = ["python-snappy"]
|
| 598 |
+
test = ["pytest (>=7)"]
|
| 599 |
+
zstd = ["zstandard"]
|
| 600 |
+
|
| 601 |
+
[[package]]
|
| 602 |
+
name = "python-dotenv"
|
| 603 |
+
version = "1.0.0"
|
| 604 |
+
description = "Read key-value pairs from a .env file and set them as environment variables"
|
| 605 |
+
optional = false
|
| 606 |
+
python-versions = ">=3.8"
|
| 607 |
+
files = [
|
| 608 |
+
{file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"},
|
| 609 |
+
{file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"},
|
| 610 |
+
]
|
| 611 |
+
|
| 612 |
+
[package.extras]
|
| 613 |
+
cli = ["click (>=5.0)"]
|
| 614 |
+
|
| 615 |
+
[[package]]
|
| 616 |
+
name = "requests"
|
| 617 |
+
version = "2.31.0"
|
| 618 |
+
description = "Python HTTP for Humans."
|
| 619 |
+
optional = false
|
| 620 |
+
python-versions = ">=3.7"
|
| 621 |
+
files = [
|
| 622 |
+
{file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
|
| 623 |
+
{file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
|
| 624 |
+
]
|
| 625 |
+
|
| 626 |
+
[package.dependencies]
|
| 627 |
+
certifi = ">=2017.4.17"
|
| 628 |
+
charset-normalizer = ">=2,<4"
|
| 629 |
+
idna = ">=2.5,<4"
|
| 630 |
+
urllib3 = ">=1.21.1,<3"
|
| 631 |
+
|
| 632 |
+
[package.extras]
|
| 633 |
+
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
|
| 634 |
+
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
|
| 635 |
+
|
| 636 |
+
[[package]]
|
| 637 |
+
name = "sniffio"
|
| 638 |
+
version = "1.3.0"
|
| 639 |
+
description = "Sniff out which async library your code is running under"
|
| 640 |
+
optional = false
|
| 641 |
+
python-versions = ">=3.7"
|
| 642 |
+
files = [
|
| 643 |
+
{file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
|
| 644 |
+
{file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
|
| 645 |
+
]
|
| 646 |
+
|
| 647 |
+
[[package]]
|
| 648 |
+
name = "soupsieve"
|
| 649 |
+
version = "2.5"
|
| 650 |
+
description = "A modern CSS selector implementation for Beautiful Soup."
|
| 651 |
+
optional = false
|
| 652 |
+
python-versions = ">=3.8"
|
| 653 |
+
files = [
|
| 654 |
+
{file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"},
|
| 655 |
+
{file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"},
|
| 656 |
+
]
|
| 657 |
+
|
| 658 |
+
[[package]]
|
| 659 |
+
name = "starlette"
|
| 660 |
+
version = "0.27.0"
|
| 661 |
+
description = "The little ASGI library that shines."
|
| 662 |
+
optional = false
|
| 663 |
+
python-versions = ">=3.7"
|
| 664 |
+
files = [
|
| 665 |
+
{file = "starlette-0.27.0-py3-none-any.whl", hash = "sha256:918416370e846586541235ccd38a474c08b80443ed31c578a418e2209b3eef91"},
|
| 666 |
+
{file = "starlette-0.27.0.tar.gz", hash = "sha256:6a6b0d042acb8d469a01eba54e9cda6cbd24ac602c4cd016723117d6a7e73b75"},
|
| 667 |
+
]
|
| 668 |
+
|
| 669 |
+
[package.dependencies]
|
| 670 |
+
anyio = ">=3.4.0,<5"
|
| 671 |
+
|
| 672 |
+
[package.extras]
|
| 673 |
+
full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"]
|
| 674 |
+
|
| 675 |
+
[[package]]
|
| 676 |
+
name = "telegraph"
|
| 677 |
+
version = "2.2.0"
|
| 678 |
+
description = "Telegraph API wrapper"
|
| 679 |
+
optional = false
|
| 680 |
+
python-versions = "*"
|
| 681 |
+
files = [
|
| 682 |
+
{file = "telegraph-2.2.0-py3-none-any.whl", hash = "sha256:d20b2a5d7cfdd66890c8c3fd60aa8585cabb7c6b03579d3eb1cd8af056ed9971"},
|
| 683 |
+
{file = "telegraph-2.2.0.tar.gz", hash = "sha256:012908f18208c451c7189f4bda7c39a1369241ac436c7543bb6c3fccbe9cfd5d"},
|
| 684 |
+
]
|
| 685 |
+
|
| 686 |
+
[package.dependencies]
|
| 687 |
+
requests = "*"
|
| 688 |
+
|
| 689 |
+
[package.extras]
|
| 690 |
+
aio = ["httpx"]
|
| 691 |
+
|
| 692 |
+
[[package]]
|
| 693 |
+
name = "typing-extensions"
|
| 694 |
+
version = "4.8.0"
|
| 695 |
+
description = "Backported and Experimental Type Hints for Python 3.8+"
|
| 696 |
+
optional = false
|
| 697 |
+
python-versions = ">=3.8"
|
| 698 |
+
files = [
|
| 699 |
+
{file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"},
|
| 700 |
+
{file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"},
|
| 701 |
+
]
|
| 702 |
+
|
| 703 |
+
[[package]]
|
| 704 |
+
name = "urllib3"
|
| 705 |
+
version = "2.1.0"
|
| 706 |
+
description = "HTTP library with thread-safe connection pooling, file post, and more."
|
| 707 |
+
optional = false
|
| 708 |
+
python-versions = ">=3.8"
|
| 709 |
+
files = [
|
| 710 |
+
{file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"},
|
| 711 |
+
{file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"},
|
| 712 |
+
]
|
| 713 |
+
|
| 714 |
+
[package.extras]
|
| 715 |
+
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
|
| 716 |
+
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
|
| 717 |
+
zstd = ["zstandard (>=0.18.0)"]
|
| 718 |
+
|
| 719 |
+
[[package]]
|
| 720 |
+
name = "uvicorn"
|
| 721 |
+
version = "0.24.0.post1"
|
| 722 |
+
description = "The lightning-fast ASGI server."
|
| 723 |
+
optional = false
|
| 724 |
+
python-versions = ">=3.8"
|
| 725 |
+
files = [
|
| 726 |
+
{file = "uvicorn-0.24.0.post1-py3-none-any.whl", hash = "sha256:7c84fea70c619d4a710153482c0d230929af7bcf76c7bfa6de151f0a3a80121e"},
|
| 727 |
+
{file = "uvicorn-0.24.0.post1.tar.gz", hash = "sha256:09c8e5a79dc466bdf28dead50093957db184de356fcdc48697bad3bde4c2588e"},
|
| 728 |
+
]
|
| 729 |
+
|
| 730 |
+
[package.dependencies]
|
| 731 |
+
click = ">=7.0"
|
| 732 |
+
h11 = ">=0.8"
|
| 733 |
+
typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""}
|
| 734 |
+
|
| 735 |
+
[package.extras]
|
| 736 |
+
standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
|
| 737 |
+
|
| 738 |
+
[[package]]
|
| 739 |
+
name = "wcwidth"
|
| 740 |
+
version = "0.2.12"
|
| 741 |
+
description = "Measures the displayed width of unicode strings in a terminal"
|
| 742 |
+
optional = false
|
| 743 |
+
python-versions = "*"
|
| 744 |
+
files = [
|
| 745 |
+
{file = "wcwidth-0.2.12-py2.py3-none-any.whl", hash = "sha256:f26ec43d96c8cbfed76a5075dac87680124fa84e0855195a6184da9c187f133c"},
|
| 746 |
+
{file = "wcwidth-0.2.12.tar.gz", hash = "sha256:f01c104efdf57971bcb756f054dd58ddec5204dd15fa31d6503ea57947d97c02"},
|
| 747 |
+
]
|
| 748 |
+
|
| 749 |
+
[metadata]
|
| 750 |
+
lock-version = "2.0"
|
| 751 |
+
python-versions = ">=3.10.0,<3.11"
|
| 752 |
+
content-hash = "85b3654f68ecc1e6855d428a22c7d408d03d3e423d6701a05218d710a079e8fd"
|
requirements.txt
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
requests
|
| 2 |
+
pymongo
|
| 3 |
+
bs4
|
| 4 |
+
g4f
|
| 5 |
+
RyuzakiLib
|
| 6 |
+
uvicorn
|
| 7 |
+
gpytranslate
|
| 8 |
+
google-search-results
|
| 9 |
+
httpx
|
| 10 |
+
serpapi
|
| 11 |
+
telegraph
|
| 12 |
+
pathlib
|
| 13 |
+
anyio
|
| 14 |
+
certifi==2023.7.22
|
| 15 |
+
click
|
| 16 |
+
fastapi[all]
|
| 17 |
+
httpcore
|
| 18 |
+
httptools
|
| 19 |
+
httpx
|
| 20 |
+
pydantic
|
| 21 |
+
python-dotenv
|
| 22 |
+
pyyaml
|
| 23 |
+
typing-extensions
|
| 24 |
+
uvicorn[standard]
|
| 25 |
+
uvloop
|
| 26 |
+
stripe
|
templates/config.py
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
TITLE="title template"
|
| 2 |
+
DESCRIPTION="description template"
|
| 3 |
+
VERSION="0.0.1"
|
| 4 |
+
TERMS_OF_SERVICE="terms template"
|
| 5 |
+
DOCS_URL="/"
|
| 6 |
+
API_KEYS="" # get api key from @randydev_bot use /token_api_key
|
| 7 |
+
TELEGRAM_ID=0
|
templates/main.py
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
# Copyright 2020-2023 (c) Randy W @xtdevs, @xtsea
|
| 4 |
+
#
|
| 5 |
+
# from : https://github.com/TeamKillerX
|
| 6 |
+
# Channel : @RendyProjects
|
| 7 |
+
# This program is free software: you can redistribute it and/or modify
|
| 8 |
+
# it under the terms of the GNU Affero General Public License as published by
|
| 9 |
+
# the Free Software Foundation, either version 3 of the License, or
|
| 10 |
+
# (at your option) any later version.
|
| 11 |
+
#
|
| 12 |
+
# This program is distributed in the hope that it will be useful,
|
| 13 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 14 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
| 15 |
+
# GNU Affero General Public License for more details.
|
| 16 |
+
#
|
| 17 |
+
# You should have received a copy of the GNU Affero General Public License
|
| 18 |
+
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
| 19 |
+
|
| 20 |
+
import requests
|
| 21 |
+
import json
|
| 22 |
+
import base64
|
| 23 |
+
import re
|
| 24 |
+
import uvicorn
|
| 25 |
+
import os
|
| 26 |
+
import shutil
|
| 27 |
+
import random
|
| 28 |
+
import g4f
|
| 29 |
+
import tempfile
|
| 30 |
+
import io
|
| 31 |
+
from io import BytesIO
|
| 32 |
+
from datetime import datetime as dt
|
| 33 |
+
from dotenv import load_dotenv
|
| 34 |
+
from bs4 import BeautifulSoup
|
| 35 |
+
|
| 36 |
+
from typing import Union
|
| 37 |
+
from typing_extensions import Annotated
|
| 38 |
+
from typing import Annotated, Union
|
| 39 |
+
|
| 40 |
+
from pydantic import BaseModel
|
| 41 |
+
from base64 import b64decode as kc
|
| 42 |
+
from base64 import b64decode
|
| 43 |
+
from random import choice
|
| 44 |
+
from gpytranslate import SyncTranslator
|
| 45 |
+
from httpx import AsyncClient
|
| 46 |
+
from telegraph import Telegraph, upload_file
|
| 47 |
+
from pathlib import Path
|
| 48 |
+
from serpapi import GoogleSearch
|
| 49 |
+
|
| 50 |
+
from fastapi import FastAPI, UploadFile, File
|
| 51 |
+
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
|
| 52 |
+
from fastapi import Depends, FastAPI, HTTPException, status
|
| 53 |
+
from fastapi.responses import StreamingResponse
|
| 54 |
+
from fastapi import HTTPException
|
| 55 |
+
from fastapi import FastAPI, Request, Header
|
| 56 |
+
from fastapi import Body, Query
|
| 57 |
+
from fastapi.staticfiles import StaticFiles
|
| 58 |
+
from fastapi.templating import Jinja2Templates
|
| 59 |
+
from fastapi.responses import FileResponse
|
| 60 |
+
|
| 61 |
+
from templates.config import *
|
| 62 |
+
from RyuzakiLib.spamwatch.clients import SibylBan
|
| 63 |
+
|
| 64 |
+
logging.basicConfig(level=logging.ERROR)
|
| 65 |
+
|
| 66 |
+
app = FastAPI(
|
| 67 |
+
title=TITLE,
|
| 68 |
+
description=DESCRIPTION,
|
| 69 |
+
version=VERSION,
|
| 70 |
+
terms_of_service=TERMS_OF_SERVICE,
|
| 71 |
+
docs_url=DOCS_URL
|
| 72 |
+
)
|
| 73 |
+
|
| 74 |
+
@app.get("/test")
|
| 75 |
+
def hello_world():
|
| 76 |
+
return {"message": "hello world"}
|
| 77 |
+
|
| 78 |
+
@app.get("/ryuzaki/blacklist-words")
|
| 79 |
+
def blacklist_words():
|
| 80 |
+
try:
|
| 81 |
+
BLACKLIST_WORDS = BadWordsList()
|
| 82 |
+
results_all = BLACKLIST_WORDS.banned_by_google(file_txt="banned_by_google.txt", storage=True)
|
| 83 |
+
return {"status": "true", "results": results_all}
|
| 84 |
+
except Exception as e:
|
| 85 |
+
return {"status": "false", "message": f"Internal server error: {str(e)}"}
|
| 86 |
+
|
| 87 |
+
@app.post("/ryuzaki/sibylban")
|
| 88 |
+
def sibyl_system_ban(
|
| 89 |
+
user_id: int = Query(..., description="User ID in query parameter"),
|
| 90 |
+
reason: str = Query(..., description="Reason in query parameter"),
|
| 91 |
+
api_key: str = Query(..., description="Api key in query parameter")
|
| 92 |
+
):
|
| 93 |
+
if user_id != TELEGRAM_ID:
|
| 94 |
+
return {"status": "false", "message": "Only Developer"}
|
| 95 |
+
|
| 96 |
+
clients = SiblyBan(api_key=api_key)
|
| 97 |
+
try:
|
| 98 |
+
response = clients.get_ban(user_id=user_id, banlist=True)
|
| 99 |
+
sibyl_user_id = response.get("randydev", {}).get("sibyl_user_id")
|
| 100 |
+
if sibyl_user_id:
|
| 101 |
+
return {"status": "false", "message": "User is already banned"}
|
| 102 |
+
|
| 103 |
+
response_str = clients.add_ban(user_id=user_id, reason=reason, is_banned=True)
|
| 104 |
+
return {
|
| 105 |
+
"status": "true",
|
| 106 |
+
"results": {
|
| 107 |
+
"message": response_str
|
| 108 |
+
}
|
| 109 |
+
}
|
| 110 |
+
except Exception as e:
|
| 111 |
+
logging.error(f"Error in sibyl_system_ban: {e}")
|
| 112 |
+
return {"status": "false", "message": "Internal server error"}
|
| 113 |
+
|
| 114 |
+
if __name__ == "__main__":
|
| 115 |
+
uvicorn.run(app, host="0.0.0.0")
|
vercel.json
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"version": 2,
|
| 3 |
+
"builds": [
|
| 4 |
+
{
|
| 5 |
+
"src": "main.py",
|
| 6 |
+
"use": "@vercel/python"
|
| 7 |
+
}
|
| 8 |
+
],
|
| 9 |
+
"routes": [
|
| 10 |
+
{
|
| 11 |
+
"src": "/(.*)",
|
| 12 |
+
"dest": "main.py"
|
| 13 |
+
}
|
| 14 |
+
]
|
| 15 |
+
}
|