add python library
14
.gitattributes
vendored
@@ -1,10 +1,10 @@
|
||||
tools/worker/public/css/** linguist-vendored
|
||||
tools/worker/public/fonts/* linguist-vendored
|
||||
tools/worker/public/img/* linguist-vendored
|
||||
tools/worker/public/js/* linguist-vendored
|
||||
tools/worker/public/js/search.js -linguist-vendored
|
||||
tools/worker/public/404.html linguist-vendored
|
||||
tools/worker/public/resource.html linguist-vendored
|
||||
yyets/worker/public/css/** linguist-vendored
|
||||
yyets/worker/public/fonts/* linguist-vendored
|
||||
yyets/worker/public/img/* linguist-vendored
|
||||
yyets/worker/public/js/* linguist-vendored
|
||||
yyets/worker/public/js/search.js -linguist-vendored
|
||||
yyets/worker/public/404.html linguist-vendored
|
||||
yyets/worker/public/resource.html linguist-vendored
|
||||
|
||||
yyetsweb/templates/css/** linguist-vendored
|
||||
yyetsweb/templates/fonts/* linguist-vendored
|
||||
|
||||
32
README.md
@@ -98,8 +98,40 @@ yyets_offline - 人人影视离线数据
|
||||
|
||||
# 开发
|
||||
|
||||
## 网站开发
|
||||
|
||||
如何部署、参与开发、具体API接口,可以 [参考这个文档](DEVELOPMENT.md)
|
||||
|
||||
## Python Library
|
||||
|
||||
也可以作为Python Library去调用
|
||||
|
||||
`pip3 install yyets`
|
||||
|
||||
```
|
||||
>>> from yyets import YYeTs
|
||||
>>> yy=YYeTs("逃避")
|
||||
[2021-09-21 19:22:32 __init__.py:54 I] Fetching 逃避可耻却有用...https://yyets.dmesg.app/api/resource?id=34812
|
||||
[2021-09-21 19:22:33 __init__.py:54 I] Fetching 无法逃避...https://yyets.dmesg.app/api/resource?id=29540
|
||||
[2021-09-21 19:22:35 __init__.py:54 I] Fetching 逃避者...https://yyets.dmesg.app/api/resource?id=37089
|
||||
|
||||
>>> yy.result
|
||||
[<yyets.Resource object at 0x10cc7b130>, <yyets.Resource object at 0x10ca0e880>, <yyets.Resource object at 0x10cc7b040>]
|
||||
|
||||
>>> for y in yy.result:
|
||||
print(y)
|
||||
|
||||
逃避可耻却有用 - NIGERUHA HAJIDAGA YAKUNITATSU
|
||||
无法逃避 - Inescapable
|
||||
逃避者 - Shirkers
|
||||
|
||||
>>> yy.result[0].cnname
|
||||
'逃避可耻却有用'
|
||||
|
||||
>>> yy.result[0].list
|
||||
[{'season_num': '101', 'season_cn': '单剧', 'items': {'APP': [{'ite
|
||||
```
|
||||
|
||||
# Credits
|
||||
|
||||
* [人人影视](http://www.zmz2019.com/)
|
||||
|
||||
131
setup.py
Normal file
@@ -0,0 +1,131 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Note: To use the 'upload' functionality of this file, you must:
|
||||
# $ pipenv install twine --dev
|
||||
|
||||
import io
|
||||
import os
|
||||
import sys
|
||||
from shutil import rmtree
|
||||
|
||||
from setuptools import find_packages, setup, Command
|
||||
|
||||
# Package meta-data.
|
||||
NAME = 'yyets'
|
||||
DESCRIPTION = 'https://yyets.dmesg.app/ wrapper'
|
||||
URL = 'https://github.com/tgbot-collection/YYeTsBot'
|
||||
EMAIL = 'benny.think@gmail.com'
|
||||
AUTHOR = 'BennyThink'
|
||||
REQUIRES_PYTHON = '>=3.6.0'
|
||||
VERSION = '1.0.0'
|
||||
|
||||
# What packages are required for this module to be executed?
|
||||
REQUIRED = [
|
||||
"requests"
|
||||
]
|
||||
|
||||
# What packages are optional?
|
||||
EXTRAS = {
|
||||
# 'fancy feature': ['django'],
|
||||
}
|
||||
|
||||
# The rest you shouldn't have to touch too much :)
|
||||
# ------------------------------------------------
|
||||
# Except, perhaps the License and Trove Classifiers!
|
||||
# If you do change the License, remember to change the Trove Classifier for that!
|
||||
|
||||
here = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
# Import the README and use it as the long-description.
|
||||
# Note: this will only work if 'README.md' is present in your MANIFEST.in file!
|
||||
try:
|
||||
with io.open(os.path.join(here, 'README.md'), encoding='utf-8') as f:
|
||||
long_description = '\n' + f.read()
|
||||
except FileNotFoundError:
|
||||
long_description = DESCRIPTION
|
||||
|
||||
# Load the package's __version__.py module as a dictionary.
|
||||
about = {}
|
||||
if not VERSION:
|
||||
project_slug = NAME.lower().replace("-", "_").replace(" ", "_")
|
||||
with open(os.path.join(here, project_slug, '__version__.py')) as f:
|
||||
exec(f.read(), about)
|
||||
else:
|
||||
about['__version__'] = VERSION
|
||||
|
||||
|
||||
class UploadCommand(Command):
|
||||
"""Support setup.py upload."""
|
||||
|
||||
description = 'Build and publish the package.'
|
||||
user_options = []
|
||||
|
||||
@staticmethod
|
||||
def status(s):
|
||||
"""Prints things in bold."""
|
||||
print('\033[1m{0}\033[0m'.format(s))
|
||||
|
||||
def initialize_options(self):
|
||||
pass
|
||||
|
||||
def finalize_options(self):
|
||||
pass
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
self.status('Removing previous builds…')
|
||||
rmtree(os.path.join(here, 'dist'))
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
self.status('Building Source and Wheel (universal) distribution…')
|
||||
os.system('{0} setup.py sdist bdist_wheel --universal'.format(sys.executable))
|
||||
|
||||
self.status('Uploading the package to PyPI via Twine…')
|
||||
os.system('twine upload dist/*')
|
||||
|
||||
self.status('Pushing git tags…')
|
||||
os.system('git tag v{0}'.format(about['__version__']))
|
||||
os.system('git push --tags')
|
||||
|
||||
sys.exit()
|
||||
|
||||
|
||||
# Where the magic happens:
|
||||
setup(
|
||||
name=NAME,
|
||||
version=about['__version__'],
|
||||
description=DESCRIPTION,
|
||||
long_description=long_description,
|
||||
long_description_content_type='text/markdown',
|
||||
author=AUTHOR,
|
||||
author_email=EMAIL,
|
||||
python_requires=REQUIRES_PYTHON,
|
||||
url=URL,
|
||||
# packages=find_packages(exclude=["tests", "*.tests", "*.tests.*", "tests.*"]),
|
||||
# If your package is a single module, use this instead of 'packages':
|
||||
packages=['yyets'],
|
||||
|
||||
# entry_points={
|
||||
# 'console_scripts': ['mycli=mymodule:cli'],
|
||||
# },
|
||||
install_requires=REQUIRED,
|
||||
extras_require=EXTRAS,
|
||||
include_package_data=True,
|
||||
license='MIT',
|
||||
classifiers=[
|
||||
# Trove classifiers
|
||||
# Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers
|
||||
'License :: OSI Approved :: MIT License',
|
||||
'Programming Language :: Python',
|
||||
'Programming Language :: Python :: 3',
|
||||
'Programming Language :: Python :: 3.6',
|
||||
'Programming Language :: Python :: Implementation :: CPython',
|
||||
'Programming Language :: Python :: Implementation :: PyPy'
|
||||
],
|
||||
# $ setup.py publish support.
|
||||
cmdclass={
|
||||
'upload': UploadCommand,
|
||||
},
|
||||
)
|
||||
64
yyets/__init__.py
Normal file
@@ -0,0 +1,64 @@
|
||||
#!/usr/local/bin/python3
|
||||
# coding: utf-8
|
||||
|
||||
# YYeTsBot - __init__.py
|
||||
# 9/21/21 18:09
|
||||
#
|
||||
|
||||
__author__ = "Benny <benny.think@gmail.com>"
|
||||
|
||||
import requests
|
||||
import logging
|
||||
|
||||
API = "https://yyets.dmesg.app/api/resource?"
|
||||
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='[%(asctime)s %(filename)s:%(lineno)d %(levelname).1s] %(message)s',
|
||||
datefmt="%Y-%m-%d %H:%M:%S"
|
||||
)
|
||||
|
||||
|
||||
class Resource:
|
||||
|
||||
def __init__(self):
|
||||
self.enname = None
|
||||
self.cnname = None
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.cnname} - {self.enname}"
|
||||
|
||||
|
||||
class YYeTs:
|
||||
def __init__(self, keyword: "str"):
|
||||
self.result = []
|
||||
self.keyword = keyword
|
||||
self.search_api = f"{API}keyword={self.keyword}"
|
||||
self.resource_api = f"{API}id=%s"
|
||||
self.search()
|
||||
|
||||
def search(self):
|
||||
data = requests.get(self.search_api).json()
|
||||
for item in data["data"]:
|
||||
r = Resource()
|
||||
info = item["data"]["info"]
|
||||
setattr(r, "list", self.fetch(info))
|
||||
for k, v in info.items():
|
||||
setattr(r, k, v)
|
||||
self.result.append(r)
|
||||
|
||||
def fetch(self, info):
|
||||
rid = info["id"]
|
||||
url = self.resource_api % rid
|
||||
headers = {"Referer": url}
|
||||
logging.info("Fetching %s...%s", info["cnname"], url)
|
||||
return requests.get(url, headers=headers).json()["data"]["list"]
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.keyword} - {self.search_api}"
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
ins = YYeTs("逃避")
|
||||
for i in ins.result:
|
||||
print(i)
|
||||
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |