97 lines
1.6 KiB
Python
97 lines
1.6 KiB
Python
import pathlib
|
|
|
|
BINARY = {
|
|
".7z",
|
|
".bsp",
|
|
".bz2",
|
|
".gem",
|
|
".gz",
|
|
".jar",
|
|
".lz",
|
|
".lzma",
|
|
".obscpio",
|
|
".oxt",
|
|
".pdf",
|
|
".png",
|
|
".rpm",
|
|
".tbz",
|
|
".tbz2",
|
|
".tgz",
|
|
".ttf",
|
|
".txz",
|
|
".whl",
|
|
".xz",
|
|
".zip",
|
|
".zst",
|
|
}
|
|
|
|
TEXT_MIMETYPES = {
|
|
"message/rfc822",
|
|
"application/pgp-keys",
|
|
"application/x-gnupg-keyring",
|
|
}
|
|
|
|
|
|
def is_text_mimetype(mimetype):
|
|
if mimetype.startswith("text/"):
|
|
return True
|
|
|
|
return mimetype.split(";")[0] in TEXT_MIMETYPES
|
|
|
|
|
|
def is_binary_or_large(filename, size):
|
|
"""Decide if is a binary file based on the extension or size"""
|
|
binary_suffix = BINARY
|
|
non_binary_suffix = {
|
|
".SUSE",
|
|
".asc",
|
|
".c",
|
|
".cabal",
|
|
".changes",
|
|
".conf",
|
|
".desktop",
|
|
".dif",
|
|
".diff",
|
|
".dsc",
|
|
".el",
|
|
".html",
|
|
".in",
|
|
".init",
|
|
".install",
|
|
".keyring",
|
|
".kiwi",
|
|
".logrotate",
|
|
".macros",
|
|
".md",
|
|
".obsinfo",
|
|
".pamd",
|
|
".patch",
|
|
".pl",
|
|
".pom",
|
|
".py",
|
|
".rpmlintrc",
|
|
".rules",
|
|
".script",
|
|
".service",
|
|
".sh",
|
|
".sig",
|
|
".sign",
|
|
".spec",
|
|
".sysconfig",
|
|
".test",
|
|
".txt",
|
|
".xml",
|
|
".xml",
|
|
".yml",
|
|
}
|
|
|
|
suffix = pathlib.Path(filename).suffix
|
|
if suffix in binary_suffix:
|
|
return True
|
|
if suffix in non_binary_suffix:
|
|
return False
|
|
if size >= 6 * 1024:
|
|
return True
|
|
|
|
return False
|