OverviewFilesCommitsIssuesDocsReleasesPeers

kodi-jacktook / plugin.video.jacktook / lib / utils / kodi / kodi_formats.py

508 lines · python ref:
video_extensions = (
    ".001",
    ".3g2",
    ".3gp",
    ".asf",
    ".asx",
    ".avc",
    ".avi",
    ".avs",
    ".bdm",
    ".bdmv",
    ".bin",
    ".bivx",
    ".dat",
    ".divx",
    ".dv",
    ".dvr-ms",
    ".evo",
    ".f4v",
    ".fli",
    ".flv",
    ".h264",
    ".img",
    ".iso",
    ".m2t",
    ".m2ts",
    ".m2v",
    ".m3u8",
    ".m4v",
    ".mk3d",
    ".mkv",
    ".mov",
    ".mp4",
    ".mpeg",
    ".mpg",
    ".mpl",
    ".mpls",
    ".mts",
    ".nrg",
    ".nuv",
    ".ogm",
    ".ogv",
    ".pva",
    ".qt",
    ".rcv",
    ".rec",
    ".rmvb",
    ".sdp",
    ".svq3",
    ".tp",
    ".trp",
    ".ts",
    ".ty",
    ".udf",
    ".vc1",
    ".vdr",
    ".viv",
    ".vob",
    ".vp3",
    ".webm",
    ".wmv",
    ".xvid",
)

music_extensions = (
    ".aac",
    ".ac3",
    ".aif",
    ".aiff",
    ".ape",
    ".cmc",
    ".cmr",
    ".cue",
    ".dff",
    ".dmc",
    ".dsf",
    ".dsp",
    ".dts",
    ".dtshd",
    ".flac",
    ".gcm",
    ".gdm",
    ".idsp",
    ".imf",
    ".m15",
    ".m4a",
    ".m4b",
    ".mac",
    ".mka",
    ".mp+",
    ".mp2",
    ".mp3",
    ".mpa",
    ".mpc",
    ".mpdsp",
    ".mpp",
    ".mpt",
    ".mss",
    ".oga",
    ".ogg",
    ".opus",
    ".rma",
    ".rmt",
    ".rsd",
    ".sap",
    ".sfx",
    ".shn",
    ".spt",
    ".tak",
    ".tm2",
    ".tm8",
    ".tmc",
    ".tta",
    ".uni",
    ".waa",
    ".wam",
    ".wav",
    ".wma",
    ".wv",
    ".wvs",
    ".xwav",
)

picture_extensions = (
    ".apng",
    ".bmp",
    ".cbz",
    ".gif",
    ".ico",
    ".jp2",
    ".jpeg",
    ".jpg",
    ".pcx",
    ".png",
    ".tga",
    ".tif",
    ".tiff",
    ".webp",
)

subtitle_extensions = (
    ".aqt",
    ".ass",
    ".idx",
    ".jss",
    ".rt",
    ".smi",
    ".srt",
    ".ssa",
    ".sub",
    ".text",
    ".txt",
    ".utf",
    ".utf-8",
    ".utf8",
)

text_extensions = (
    ".ada",
    ".adb",
    ".ads",
    ".applescript",
    ".as",
    ".asc",
    ".ascii",
    ".ascx",
    ".asm",
    ".asmx",
    ".asp",
    ".aspx",
    ".atom",
    ".au3",
    ".awk",
    ".bas",
    ".bash",
    ".bashrc",
    ".bat",
    ".bbcolors",
    ".bcp",
    ".bdsgroup",
    ".bdsproj",
    ".bib",
    ".bowerrc",
    ".c",
    ".cbl",
    ".cc",
    ".cfc",
    ".cfg",
    ".cfm",
    ".cfml",
    ".cgi",
    ".clj",
    ".cljs",
    ".cls",
    ".cmake",
    ".cmd",
    ".cnf",
    ".cob",
    ".code-snippets",
    ".coffee",
    ".coffeekup",
    ".conf",
    ".cp",
    ".cpp",
    ".cpt",
    ".cpy",
    ".crt",
    ".cs",
    ".csh",
    ".cson",
    ".csproj",
    ".csr",
    ".css",
    ".csslintrc",
    ".csv",
    ".ctl",
    ".curlrc",
    ".cxx",
    ".d",
    ".dart",
    ".dfm",
    ".diff",
    ".dof",
    ".dpk",
    ".dpr",
    ".dproj",
    ".dtd",
    ".eco",
    ".editorconfig",
    ".ejs",
    ".el",
    ".elm",
    ".emacs",
    ".eml",
    ".ent",
    ".erb",
    ".erl",
    ".eslintignore",
    ".eslintrc",
    ".ex",
    ".exs",
    ".f",
    ".f03",
    ".f77",
    ".f90",
    ".f95",
    ".fish",
    ".for",
    ".fpp",
    ".frm",
    ".fs",
    ".fsproj",
    ".fsx",
    ".ftn",
    ".gemrc",
    ".gemspec",
    ".gitattributes",
    ".gitconfig",
    ".gitignore",
    ".gitkeep",
    ".gitmodules",
    ".go",
    ".gpp",
    ".gradle",
    ".groovy",
    ".groupproj",
    ".grunit",
    ".gtmpl",
    ".gvimrc",
    ".h",
    ".haml",
    ".hbs",
    ".hgignore",
    ".hh",
    ".hpp",
    ".hrl",
    ".hs",
    ".hta",
    ".htaccess",
    ".htc",
    ".htm",
    ".html",
    ".htpasswd",
    ".hxx",
    ".iced",
    ".iml",
    ".inc",
    ".inf",
    ".info",
    ".ini",
    ".ino",
    ".int",
    ".irbrc",
    ".itcl",
    ".itermcolors",
    ".itk",
    ".jade",
    ".java",
    ".jhtm",
    ".jhtml",
    ".js",
    ".jscsrc",
    ".jshintignore",
    ".jshintrc",
    ".json",
    ".json5",
    ".jsonld",
    ".jsp",
    ".jspx",
    ".jsx",
    ".ksh",
    ".less",
    ".lhs",
    ".lisp",
    ".log",
    ".ls",
    ".lsp",
    ".lua",
    ".m",
    ".m4",
    ".mak",
    ".map",
    ".markdown",
    ".master",
    ".md",
    ".mdown",
    ".mdwn",
    ".mdx",
    ".metadata",
    ".mht",
    ".mhtml",
    ".mjs",
    ".mk",
    ".mkd",
    ".mkdn",
    ".mkdown",
    ".ml",
    ".mli",
    ".mm",
    ".mxml",
    ".nfm",
    ".nfo",
    ".noon",
    ".npmignore",
    ".npmrc",
    ".nuspec",
    ".nvmrc",
    ".ops",
    ".pas",
    ".pasm",
    ".patch",
    ".pbxproj",
    ".pch",
    ".pem",
    ".pg",
    ".php",
    ".php3",
    ".php4",
    ".php5",
    ".phpt",
    ".phtml",
    ".pir",
    ".pl",
    ".pm",
    ".pmc",
    ".pod",
    ".pot",
    ".prettierrc",
    ".properties",
    ".props",
    ".pt",
    ".pug",
    ".purs",
    ".py",
    ".pyx",
    ".r",
    ".rake",
    ".rb",
    ".rbw",
    ".rc",
    ".rdoc",
    ".rdoc_options",
    ".resx",
    ".rexx",
    ".rhtml",
    ".rjs",
    ".rlib",
    ".ron",
    ".rs",
    ".rss",
    ".rst",
    ".rtf",
    ".rvmrc",
    ".rxml",
    ".s",
    ".sass",
    ".scala",
    ".scm",
    ".scss",
    ".seestyle",
    ".sh",
    ".shtml",
    ".sln",
    ".sls",
    ".spec",
    ".sql",
    ".sqlite",
    ".sqlproj",
    ".srt",
    ".ss",
    ".sss",
    ".st",
    ".strings",
    ".sty",
    ".styl",
    ".stylus",
    ".sub",
    ".sublime-build",
    ".sublime-commands",
    ".sublime-completions",
    ".sublime-keymap",
    ".sublime-macro",
    ".sublime-menu",
    ".sublime-project",
    ".sublime-settings",
    ".sublime-workspace",
    ".sv",
    ".svc",
    ".svg",
    ".swift",
    ".t",
    ".tcl",
    ".tcsh",
    ".terminal",
    ".tex",
    ".text",
    ".textile",
    ".tg",
    ".tk",
    ".tmlanguage",
    ".tmpl",
    ".tmtheme",
    ".tpl",
    ".ts",
    ".tsv",
    ".tsx",
    ".tt",
    ".tt2",
    ".ttml",
    ".twig",
    ".txt",
    ".v",
    ".vb",
    ".vbproj",
    ".vbs",
    ".vcproj",
    ".vcxproj",
    ".vh",
    ".vhd",
    ".vhdl",
    ".vim",
    ".viminfo",
    ".vimrc",
    ".vm",
    ".vue",
    ".webapp",
    ".webmanifest",
    ".wsc",
    ".x-php",
    ".xaml",
    ".xht",
    ".xhtml",
    ".xml",
    ".xs",
    ".xsd",
    ".xsl",
    ".xslt",
    ".y",
    ".yaml",
    ".yml",
    ".zsh",
    ".zshrc",
)


def _contains_extension(s, extensions):
    return s.lower().endswith(extensions)


def is_video(s):
    return _contains_extension(s, video_extensions)


def is_music(s):
    return _contains_extension(s, music_extensions)


def is_picture(s):
    return _contains_extension(s, picture_extensions)


def is_subtitle(s):
    return _contains_extension(s, subtitle_extensions)


def is_text(s):
    return _contains_extension(s, text_extensions)