本文整理汇总了Python中sickrage.helper.encoding.ek函数的典型用法代码示例。如果您正苦于以下问题:Python ek函数的具体用法?Python ek怎么用?Python ek使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ek函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: qualityFromFileMeta
def qualityFromFileMeta(filename):
"""
Get quality from file metadata
:param filename: Filename to analyse
:return: Quality prefix
"""
from hachoir_core.stream import StringInputStream
from hachoir_parser import guessParser
from hachoir_metadata import extractMetadata
from hachoir_core.log import log
log.use_print = False
if ek(os.path.isfile, filename):
base_filename = ek(os.path.basename, filename)
bluray = re.search(r"blue?-?ray|hddvd|b[rd](rip|mux)", base_filename, re.I) is not None
webdl = re.search(r"web.?dl|web(rip|mux|hd)", base_filename, re.I) is not None
try:
with ek(io.open, filename, "rb") as file:
file_metadata = extractMetadata(guessParser(StringInputStream(file.read())))
if file_metadata:
for metadata in chain([file_metadata], file_metadata.iterGroups()):
height = metadata.get('height', None)
if height and height > 1000:
return ((Quality.FULLHDTV, Quality.FULLHDBLURAY)[bluray], Quality.FULLHDWEBDL)[webdl]
elif height and height > 680 and height < 800:
return ((Quality.HDTV, Quality.HDBLURAY)[bluray], Quality.HDWEBDL)[webdl]
elif height and height < 680:
return (Quality.SDTV, Quality.SDDVD)[re.search(r'dvd|b[rd]rip|blue?-?ray', base_filename, re.I) is not None]
except Exception as e:
sickbeard.logger.log(ex(e))
return Quality.UNKNOWN
开发者ID:CarlNeuhaus,项目名称:SickRage,代码行数:35,代码来源:common.py
示例2: subtitlesLanguages
def subtitlesLanguages(video_path):
"""Return a list detected subtitles for the given video file"""
resultList = []
# Serch for embedded subtitles
embedded_languages = subliminal.scan_video(video_path, subtitles=False, embedded_subtitles=not sickbeard.EMBEDDED_SUBTITLES_ALL)
# Search subtitles in the absolute path
if sickbeard.SUBTITLES_DIR and ek(os.path.exists, sickbeard.SUBTITLES_DIR):
video_path = ek(os.path.join, sickbeard.SUBTITLES_DIR, ek(os.path.basename, video_path))
# Search subtitles in the relative path
elif sickbeard.SUBTITLES_DIR:
video_path = ek(os.path.join, ek(os.path.dirname, video_path), sickbeard.SUBTITLES_DIR, ek(os.path.basename, video_path))
languages = subliminal.video.scan_subtitle_languages(video_path)
for language in languages.union(embedded_languages.subtitle_languages):
if hasattr(language, 'opensubtitles') and language.opensubtitles:
resultList.append(language.opensubtitles)
elif hasattr(language, 'alpha3') and language.alpha3:
resultList.append(language.alpha3)
elif hasattr(language, 'alpha2') and language.alpha2:
resultList.append(language.alpha2)
defaultLang = wantedLanguages()
if ('pob' in defaultLang or 'pb' in defaultLang) and ('pt' not in defaultLang and 'por' not in defaultLang):
resultList = [x if not x in ['por', 'pt'] else u'pob' for x in resultList]
return sorted(resultList)
开发者ID:fbossy,项目名称:SickRage,代码行数:30,代码来源:subtitles.py
示例3: run
def run(self):
if self.enable_https:
protocol = "https"
self.server = HTTPServer(self.app, ssl_options={"certfile": self.https_cert, "keyfile": self.https_key})
else:
protocol = "http"
self.server = HTTPServer(self.app)
logger.log(u"Starting SickRage on " + protocol + "://" + str(self.options['host']) + ":" + str(
self.options['port']) + "/")
try:
self.server.listen(self.options['port'], self.options['host'])
except:
if sickbeard.LAUNCH_BROWSER and not self.daemon:
sickbeard.launchBrowser('https' if sickbeard.ENABLE_HTTPS else 'http', self.options['port'], sickbeard.WEB_ROOT)
logger.log(u"Launching browser and exiting")
logger.log(u"Could not start webserver on port %s, already in use!" % self.options['port'])
ek(os._exit, 1)
try:
self.io_loop.start()
self.io_loop.close(True)
except (IOError, ValueError):
# Ignore errors like "ValueError: I/O operation on closed kqueue fd". These might be thrown during a reload.
pass
开发者ID:fabiankaeser,项目名称:SickRage,代码行数:26,代码来源:webserveInit.py
示例4: subtitlesLanguages
def subtitlesLanguages(video_path):
"""Return a list detected subtitles for the given video file"""
resultList = []
embedded_subtitle_languages = set()
# Serch for embedded subtitles
if not sickbeard.EMBEDDED_SUBTITLES_ALL:
if video_path.endswith('mkv'):
try:
with open(video_path.encode(sickbeard.SYS_ENCODING), 'rb') as f:
mkv = MKV(f)
if mkv.subtitle_tracks:
for st in mkv.subtitle_tracks:
if st.language:
try:
embedded_subtitle_languages.add(Language.fromalpha3b(st.language))
except BabelfishError:
logger.log('Embedded subtitle track is not a valid language', logger.DEBUG)
embedded_subtitle_languages.add(Language('und'))
elif st.name:
try:
embedded_subtitle_languages.add(Language.fromname(st.name))
except BabelfishError:
logger.log('Embedded subtitle track is not a valid language', logger.DEBUG)
embedded_subtitle_languages.add(Language('und'))
else:
embedded_subtitle_languages.add(Language('und'))
else:
logger.log('MKV has no subtitle track', logger.DEBUG)
except MalformedMKVError:
logger.log('MKV seems to be malformed, ignoring embedded subtitles', logger.WARNING)
# Search subtitles in the absolute path
if sickbeard.SUBTITLES_DIR and ek(os.path.exists, sickbeard.SUBTITLES_DIR):
video_path = ek(os.path.join, sickbeard.SUBTITLES_DIR, ek(os.path.basename, video_path))
# Search subtitles in the relative path
elif sickbeard.SUBTITLES_DIR:
video_path = ek(os.path.join, ek(os.path.dirname, video_path), sickbeard.SUBTITLES_DIR, ek(os.path.basename, video_path))
external_subtitle_languages = subliminal.video.scan_subtitle_languages(video_path)
subtitle_languages = external_subtitle_languages.union(embedded_subtitle_languages)
if (len(subtitle_languages) is 1 and len(wantedLanguages()) is 1) and Language('und') in subtitle_languages:
subtitle_languages.remove(Language('und'))
subtitle_languages.add(fromietf(wantedLanguages()[0]))
for language in subtitle_languages:
if hasattr(language, 'opensubtitles') and language.opensubtitles:
resultList.append(language.opensubtitles)
elif hasattr(language, 'alpha3') and language.alpha3:
resultList.append(language.alpha3)
elif hasattr(language, 'alpha2') and language.alpha2:
resultList.append(language.alpha2)
defaultLang = wantedLanguages()
if ('pob' in defaultLang or 'pb' in defaultLang) and ('pt' not in defaultLang and 'por' not in defaultLang):
resultList = [x if not x in ['por', 'pt'] else u'pob' for x in resultList]
return sorted(resultList)
开发者ID:WebSpider,项目名称:SickRage,代码行数:60,代码来源:subtitles.py
示例5: _makeURL
def _makeURL(self, result):
urls = []
filename = u''
if result.url.startswith('magnet'):
try:
torrent_hash = re.findall(r'urn:btih:([\w]{32,40})', result.url)[0].upper()
try:
torrent_name = re.findall('dn=([^&]+)', result.url)[0]
except Exception:
torrent_name = 'NO_DOWNLOAD_NAME'
if len(torrent_hash) == 32:
torrent_hash = b16encode(b32decode(torrent_hash)).upper()
if not torrent_hash:
logger.log(u"Unable to extract torrent hash from magnet: " + ex(result.url), logger.ERROR)
return urls, filename
urls = [x.format(torrent_hash=torrent_hash, torrent_name=torrent_name) for x in self.btCacheURLS]
except Exception:
logger.log(u"Unable to extract torrent hash or name from magnet: " + ex(result.url), logger.ERROR)
return urls, filename
else:
urls = [result.url]
if self.providerType == GenericProvider.TORRENT:
filename = ek(os.path.join, sickbeard.TORRENT_DIR, sanitize_filename(result.name) + '.' + self.providerType)
elif self.providerType == GenericProvider.NZB:
filename = ek(os.path.join, sickbeard.NZB_DIR, sanitize_filename(result.name) + '.' + self.providerType)
return urls, filename
开发者ID:hernandito,项目名称:SickRage,代码行数:33,代码来源:generic.py
示例6: get_path_dir_files
def get_path_dir_files(dirName, nzbName, type):
"""
Get files in a path
:param dirName: Directory to start in
:param nzbName: NZB file, if present
:param type: auto/manual
:return: a tuple of (path,dirs,files)
"""
path = ""
dirs = []
files = []
if dirName == sickbeard.TV_DOWNLOAD_DIR and not nzbName or type == "manual": # Scheduled Post Processing Active
# Get at first all the subdir in the dirName
for path, dirs, files in ek(os.walk, dirName):
break
else:
path, dirs = ek(os.path.split, dirName) # Script Post Processing
if not nzbName is None and not nzbName.endswith('.nzb') and os.path.isfile(
os.path.join(dirName, nzbName)): # For single torrent file without Dir
dirs = []
files = [os.path.join(dirName, nzbName)]
else:
dirs = [dirs]
files = []
return path, dirs, files
开发者ID:xNovax,项目名称:SickRage,代码行数:28,代码来源:processTV.py
示例7: get_path_dir_files
def get_path_dir_files(dirName, nzbName, proc_type):
"""
Get files in a path
:param dirName: Directory to start in
:param nzbName: NZB file, if present
:param proc_type: auto/manual
:return: a tuple of (path,dirs,files)
"""
path = u""
dirs = []
files = []
if dirName == sickbeard.TV_DOWNLOAD_DIR and not nzbName or proc_type == "manual": # Scheduled Post Processing Active
# Get at first all the subdir in the dirName
for path, dirs, files in ek(os.walk, dirName):
break
else:
# Post process downloaded content for one NZB/Torrent
path, dirs = ek(os.path.split, dirName) #Script Post Processing
torrent_type = get_torrent_type(dirName, nzbName)
if torrent_type == TorrentType.SINGLE_FILE:
# Single file torrent
dirs = []
files = [ek(os.path.join, dirName, nzbName)]
else:
# NZB or torrent directory
dirs = [dirs]
files = []
return path, dirs, files
开发者ID:fabiankaeser,项目名称:SickRage,代码行数:33,代码来源:processTV.py
示例8: run
def run(self, force=False):
"""
TODO: Rename class to PostProcessor (classname contains a typo)
Runs the postprocessor
:param force: Forces postprocessing run (reserved for future use)
:return: Returns when done without a return state/code
"""
self.amActive = True
if not ek(os.path.isdir, sickbeard.TV_DOWNLOAD_DIR):
logger.log(u"Automatic post-processing attempted but dir " + sickbeard.TV_DOWNLOAD_DIR + " doesn't exist",
logger.ERROR)
self.amActive = False
return
if not ek(os.path.isabs, sickbeard.TV_DOWNLOAD_DIR):
logger.log(
u"Automatic post-processing attempted but dir " + sickbeard.TV_DOWNLOAD_DIR + " is relative (and probably not what you really want to process)",
logger.ERROR)
self.amActive = False
return
processTV.processDir(sickbeard.TV_DOWNLOAD_DIR)
self.amActive = False
开发者ID:WebSpider,项目名称:SickRage,代码行数:25,代码来源:autoPostProcesser.py
示例9: getFileList
def getFileList(path, includeFiles):
# prune out directories to protect the user from doing stupid things (already lower case the dir to reduce calls)
hide_list = ['boot', 'bootmgr', 'cache', 'config.msi', 'msocache', 'recovery', '$recycle.bin',
'recycler', 'system volume information', 'temporary internet files'] # windows specific
hide_list += ['.fseventd', '.spotlight', '.trashes', '.vol', 'cachedmessages', 'caches', 'trash'] # osx specific
hide_list += ['.git']
file_list = []
for filename in ek(os.listdir, path):
if filename.lower() in hide_list:
continue
full_filename = ek(os.path.join, path, filename)
is_dir = ek(os.path.isdir, full_filename)
if not includeFiles and not is_dir:
continue
entry = {
'name': filename,
'path': full_filename
}
if not is_dir:
entry['isFile'] = True
file_list.append(entry)
return file_list
开发者ID:Arcanemagus,项目名称:SickRage,代码行数:27,代码来源:browser.py
示例10: delete_folder
def delete_folder(folder, check_empty=True):
"""
Removes a folder from the filesystem
:param folder: Path to folder to remove
:param check_empty: Boolean, check if the folder is empty before removing it, defaults to True
:return: True on success, False on failure
"""
# check if it's a folder
if not ek(os.path.isdir, folder):
return False
# check if it isn't TV_DOWNLOAD_DIR
if sickbeard.TV_DOWNLOAD_DIR:
if helpers.real_path(folder) == helpers.real_path(sickbeard.TV_DOWNLOAD_DIR):
return False
# check if it's empty folder when wanted checked
if check_empty:
check_files = ek(os.listdir, folder)
if check_files:
logger.log(u"Not deleting folder " + folder + " found the following files: " + str(check_files), logger.INFO)
return False
try:
logger.log(u"Deleting folder (if it's empty): " + folder)
os.rmdir(folder)
except (OSError, IOError), e:
logger.log(u"Warning: unable to delete folder: " + folder + ": " + ex(e), logger.WARNING)
return False
开发者ID:xNovax,项目名称:SickRage,代码行数:31,代码来源:processTV.py
示例11: run_subs_extra_scripts
def run_subs_extra_scripts(epObj, foundSubs):
for curScriptName in sickbeard.SUBTITLES_EXTRA_SCRIPTS:
script_cmd = [piece for piece in re.split("( |\\\".*?\\\"|'.*?')", curScriptName) if piece.strip()]
script_cmd[0] = ek(os.path.abspath, script_cmd[0])
logger.log(u"Absolute path to script: " + script_cmd[0], logger.DEBUG)
for video, subs in foundSubs.iteritems():
subpaths = []
for sub in subs:
subpath = subliminal.subtitle.get_subtitle_path(video.name, sub.language)
if os.path.isabs(sickbeard.SUBTITLES_DIR):
subpath = ek(os.path.join, sickbeard.SUBTITLES_DIR, ek(os.path.basename, subpath))
elif sickbeard.SUBTITLES_DIR:
subpath = ek(os.path.join, ek(os.path.dirname, subpath), sickbeard.SUBTITLES_DIR, ek(os.path.basename, subpath))
inner_cmd = script_cmd + [video.name, subpath, sub.language.opensubtitles, epObj['show.name'],
str(epObj['season']), str(epObj['episode']), epObj['name'], str(epObj['show.indexerid'])]
# use subprocess to run the command and capture output
logger.log(u"Executing command: %s" % inner_cmd)
try:
p = subprocess.Popen(inner_cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, cwd=sickbeard.PROG_DIR)
out, err = p.communicate() # @UnusedVariable
logger.log(u"Script result: %s" % out, logger.DEBUG)
except Exception as e:
logger.log(u"Unable to run subs_extra_script: " + ex(e))
开发者ID:TCRakt,项目名称:SickRage,代码行数:29,代码来源:subtitles.py
示例12: change_size
def change_size(image_url, factor=3):
match = re.search(r"^(.*)V1._(.{2})(.*?)_(.{2})(.*?),(.*?),(.*?),(.*?)_.jpg$", image_url)
if match:
matches = match.groups()
ek(os.path.basename, image_url)
matches = list(matches)
matches[2] = int(matches[2]) * factor
matches[4] = int(matches[4]) * factor
matches[5] = int(matches[5]) * factor
matches[6] = int(matches[6]) * factor
matches[7] = int(matches[7]) * factor
return "%sV1._%s%s_%s%s,%s,%s,%s_.jpg" % (
matches[0],
matches[1],
matches[2],
matches[3],
matches[4],
matches[5],
matches[6],
matches[7],
)
else:
return image_url
开发者ID:Hydrog3n,项目名称:SickRage,代码行数:25,代码来源:imdb.py
示例13: qualityFromFileMeta
def qualityFromFileMeta(filename):
"""
Get quality from file metadata
:param filename: Filename to analyse
:return: Quality prefix
"""
from hachoir_core.stream import StringInputStream
from hachoir_parser import guessParser
from hachoir_metadata import extractMetadata
from hachoir_core import config as hachoir_config
hachoir_config.quiet = True
if ek(os.path.isfile, filename):
base_filename = ek(os.path.basename, filename)
bluray = re.search(r"blue?-?ray|hddvd|b[rd](rip|mux)", base_filename, re.I) is not None
webdl = re.search(r"web.?dl|web(rip|mux|hd)", base_filename, re.I) is not None
for byte in sickbeard.helpers.readFileBuffered(filename):
try:
file_metadata = extractMetadata(guessParser(StringInputStream(byte)))
for metadata in chain([file_metadata], file_metadata.iterGroups()):
height = metadata.get('height', 0)
if height > 1000:
return ((Quality.FULLHDTV, Quality.FULLHDBLURAY)[bluray], Quality.FULLHDWEBDL)[webdl]
elif height > 680 and height < 800:
return ((Quality.HDTV, Quality.HDBLURAY)[bluray], Quality.HDWEBDL)[webdl]
elif height < 680:
return (Quality.SDTV, Quality.SDDVD)[re.search(r'dvd|b[rd]rip|blue?-?ray', base_filename, re.I) is not None]
except:continue
return Quality.UNKNOWN
开发者ID:coderbone,项目名称:SickRage,代码行数:33,代码来源:common.py
示例14: log_error_and_exit
def log_error_and_exit(self, error_msg, *args, **kwargs):
self.log(error_msg, ERROR, *args, **kwargs)
if not self.consoleLogging:
ek(sys,exit(error_msg))
else:
sys.exit(1)
开发者ID:zeroX-tj,项目名称:SickRage,代码行数:7,代码来源:logger.py
示例15: getFileList
def getFileList(path, includeFiles, imagesOnly):
# prune out directories to protect the user from doing stupid things (already lower case the dir to reduce calls)
hide_list = ['boot', 'bootmgr', 'cache', 'config.msi', 'msocache', 'recovery', '$recycle.bin',
'recycler', 'system volume information', 'temporary internet files'] # windows specific
hide_list += ['.fseventd', '.spotlight', '.trashes', '.vol', 'cachedmessages', 'caches', 'trash'] # osx specific
hide_list += ['.git']
file_list = []
for filename in ek(os.listdir, path):
if filename.lower() in hide_list:
continue
full_filename = ek(os.path.join, path, filename)
is_file = ek(os.path.isfile, full_filename)
if not includeFiles and is_file:
continue
is_image = filename.endswith(('jpg', 'jpeg', 'png', 'tiff', 'gif'))
if is_file and imagesOnly and not is_image:
continue
file_list.append({
'name': filename,
'path': full_filename,
'isFile': is_file,
'isImage': is_image
})
return file_list
开发者ID:KraXed112,项目名称:SickRage,代码行数:31,代码来源:browser.py
示例16: _write_image
def _write_image(self, image_data, image_path, obj=None):
"""
Saves the data in image_data to the location image_path. Returns True/False
to represent success or failure.
image_data: binary image data to write to file
image_path: file location to save the image to
"""
# don't bother overwriting it
if ek(os.path.isfile, image_path):
logger.log(u"Image already exists, not downloading", logger.DEBUG)
return False
image_dir = ek(os.path.dirname, image_path)
if not image_data:
logger.log(u"Unable to retrieve image to save in %s, skipping" % (ss(image_path)), logger.DEBUG)
return False
try:
if not ek(os.path.isdir, image_dir):
logger.log(u"Metadata dir didn't exist, creating it at " + image_dir, logger.DEBUG)
ek(os.makedirs, image_dir)
helpers.chmodAsParent(image_dir)
outFile = open(image_path, 'wb')
outFile.write(image_data)
outFile.close()
helpers.chmodAsParent(image_path)
except IOError, e:
logger.log(
u"Unable to write image to " + image_path + " - are you sure the show folder is writable? " + ex(e),
logger.ERROR)
return False
开发者ID:BreizhCat,项目名称:SickRage,代码行数:35,代码来源:generic.py
示例17: change_unpack_dir
def change_unpack_dir(unpack_dir):
"""
Change UNPACK directory (used by postprocessor)
:param unpack_dir: New unpack directory
:return: True on success, False on failure
"""
if unpack_dir == '':
sickbeard.UNPACK_DIR = ''
return True
if ek(os.path.normpath, sickbeard.UNPACK_DIR) != ek(os.path.normpath, unpack_dir):
if bool(sickbeard.ROOT_DIRS) and \
any(map(lambda rd: helpers.is_subdirectory(unpack_dir, rd), sickbeard.ROOT_DIRS.split('|')[1:])):
# don't change if it's in any of the TV root directories
logger.log("Unable to change unpack directory to a sub-directory of a TV root dir")
return False
if helpers.makeDir(unpack_dir):
sickbeard.UNPACK_DIR = ek(os.path.normpath, unpack_dir)
logger.log("Changed unpack directory to " + unpack_dir)
else:
logger.log("Unable to create unpack directory " + ek(os.path.normpath, unpack_dir) + ", dir not changed.")
return False
return True
开发者ID:ArthurGarnier,项目名称:SickRage,代码行数:26,代码来源:config.py
示例18: change_LOG_DIR
def change_LOG_DIR(log_dir, web_log):
"""
Change logging directory for application and webserver
:param log_dir: Path to new logging directory
:param web_log: Enable/disable web logging
:return: True on success, False on failure
"""
log_dir_changed = False
abs_log_dir = ek(os.path.normpath, ek(os.path.join, sickbeard.DATA_DIR, log_dir))
web_log_value = checkbox_to_value(web_log)
if ek(os.path.normpath, sickbeard.LOG_DIR) != abs_log_dir:
if helpers.makeDir(abs_log_dir):
sickbeard.ACTUAL_LOG_DIR = ek(os.path.normpath, log_dir)
sickbeard.LOG_DIR = abs_log_dir
logger.initLogging()
logger.log(u"Initialized new log file in " + sickbeard.LOG_DIR)
log_dir_changed = True
else:
return False
if sickbeard.WEB_LOG != web_log_value or log_dir_changed is True:
sickbeard.WEB_LOG = web_log_value
return True
开发者ID:hernandito,项目名称:SickRage,代码行数:28,代码来源:config.py
示例19: run
def run(self, force=False):
"""
Runs the postprocessor
:param force: Forces postprocessing run
:return: Returns when done without a return state/code
"""
self.amActive = True
if not ek(os.path.isdir, sickbeard.TV_DOWNLOAD_DIR):
logger.log(u"Automatic post-processing attempted but directory doesn't exist: {0}".format(
sickbeard.TV_DOWNLOAD_DIR), logger.WARNING)
self.amActive = False
return
if not (force or ek(os.path.isabs, sickbeard.TV_DOWNLOAD_DIR)):
logger.log(u"Automatic post-processing attempted but directory is relative "
u"(and probably not what you really want to process): %s" %
sickbeard.TV_DOWNLOAD_DIR, logger.WARNING)
self.amActive = False
return
processTV.processDir(sickbeard.TV_DOWNLOAD_DIR, force=force)
self.amActive = False
开发者ID:lucianot54,项目名称:SickRage,代码行数:25,代码来源:auto_postprocessor.py
示例20: getFileList
def getFileList(path, includeFiles):
# prune out directories to protect the user from doing stupid things (already lower case the dir to reduce calls)
hideList = ["boot", "bootmgr", "cache", "config.msi", "msocache", "recovery", "$recycle.bin",
"recycler", "system volume information", "temporary internet files"] # windows specific
hideList += [".fseventd", ".spotlight", ".trashes", ".vol", "cachedmessages", "caches", "trash"] # osx specific
hideList += [".git"]
fileList = []
for filename in ek(os.listdir, path):
if filename.lower() in hideList:
continue
fullFilename = ek(os.path.join, path, filename)
isDir = ek(os.path.isdir, fullFilename)
if not includeFiles and not isDir:
continue
entry = {
'name': filename,
'path': fullFilename
}
if not isDir: entry['isFile'] = True
fileList.append(entry)
return fileList
开发者ID:hernandito,项目名称:SickRage,代码行数:26,代码来源:browser.py
注:本文中的sickrage.helper.encoding.ek函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论