dr_py/txt/hipy/base_java_loader.py
2024-01-13 03:57:47 +08:00

101 lines
2.6 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# File : base_java_loader.py
# Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------
# Author's Blog: https://blog.csdn.net/qq_32394351
# Date : 2024/1/11
import os
import sys
sys.path.append('..')
try:
# from base.spider import Spider as BaseSpider
from base.spider import BaseSpider
from com.github.tvbox.osc.util import PyUtil
from java import jbyte, jarray
# https://chaquo.com/chaquopy/doc/current/python.html#java.jbyte
except ImportError:
from t4.base.spider import BaseSpider
# 全局变量
gParam = {
# JVM已经启用过某个jar文件
"JVM": {'xx.jar': False},
}
class Spider(BaseSpider): # 元类 默认的元类 type
jar_path: str = ''
jClass = None
def _prepare_env(self, jpype):
global gParam
if gParam['JVM'].get(self.jar_path):
return
try:
jpype.startJVM(classpath=[self.jar_path], convertStrings=False)
gParam['JVM'][self.jar_path] = True
except Exception as e:
self.log(f'jpype.startJVM发生了错误:{e}')
def init_jar(self, jar_path="./bdys.jar"):
self.log(f'base_java_loader 初始化jar文件:{jar_path}')
if not os.path.exists(jar_path):
raise FileNotFoundError
self.jar_path = jar_path
if self.ENV.lower() == 't4':
import jpype
self._prepare_env(jpype)
self.jClass = jpype.JClass
elif self.ENV.lower() == 't3':
PyUtil.load(jar_path)
self.jClass = None
def call_java(self, class_name, method_name, *args):
if self.ENV.lower() == 't4':
class1 = self.jClass(class_name)
method = getattr(class1, method_name)
# method = eval(f'class1.{method_name}', {'class1': class1})
# print(method)
return method(*args)
elif self.ENV.lower() == 't3':
return PyUtil.call(class_name, method_name, *args)
@staticmethod
def jarBytes(some_bytes: bytes):
return jarray(jbyte)(some_bytes)
def init(self, extend=""):
pass
def homeContent(self, filter):
pass
def homeVideoContent(self):
pass
def categoryContent(self, tid, pg, filter, extend):
pass
def detailContent(self, ids):
pass
def searchContent(self, key, quick, pg=1):
pass
def playerContent(self, flag, id, vipFlags):
pass
def localProxy(self, param):
pass
def isVideoFormat(self, url):
pass
def manualVideoCheck(self):
pass
def getName(self):
pass