feat(core): add human readable mimes
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>pull/52822/head
parent
3aae7ae305
commit
24bc1d606e
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,57 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Paths
|
||||
MIME_JSON="mimetypemapping.dist.json"
|
||||
XML_FILE="freedesktop.org.xml"
|
||||
OUTPUT_JSON="mimetypenames.dist.json"
|
||||
|
||||
echo "1/ Extracting MIME types from $MIME_JSON"
|
||||
|
||||
# Extract all unique MIME types (excluding _comment keys)
|
||||
MIME_TYPES=$(jq -r 'with_entries(select(.key | startswith("_") | not)) | to_entries | map(.value[]) | unique | .[]' "$MIME_JSON")
|
||||
|
||||
echo "Found $(echo "$MIME_TYPES" | wc -l) unique MIME types"
|
||||
|
||||
echo "2/ Downloading freedesktop.org XML file"
|
||||
curl -sSL "https://gitlab.freedesktop.org/xdg/shared-mime-info/-/raw/03cb97596e90feda547c9b6a2addd656b14d1598/data/freedesktop.org.xml.in" > "$XML_FILE"
|
||||
echo "Downloaded XML file to $XML_FILE"
|
||||
|
||||
echo "3/ Creating or updating MIME name mapping"
|
||||
|
||||
# Start from existing output if it exists, or create an empty one
|
||||
if [ -f "$OUTPUT_JSON" ]; then
|
||||
cp "$OUTPUT_JSON" "$OUTPUT_JSON.tmp"
|
||||
else
|
||||
echo "{}" > "$OUTPUT_JSON.tmp"
|
||||
fi
|
||||
|
||||
# Track stats
|
||||
MATCHED_COUNT=0
|
||||
MISSING_COUNT=0
|
||||
|
||||
# Process each MIME type
|
||||
while read -r MIME; do
|
||||
echo "Processing: $MIME"
|
||||
|
||||
# Extract comment with XML namespace handling
|
||||
COMMENT=$(xmlstarlet sel -N x="http://www.freedesktop.org/standards/shared-mime-info" \
|
||||
-t -m "//x:mime-type[@type='${MIME}']" -v "x:comment" -n "$XML_FILE" | head -n 1)
|
||||
|
||||
if [ -n "$COMMENT" ]; then
|
||||
ESCAPED_COMMENT=$(echo "$COMMENT" | sed 's/"/\\"/g')
|
||||
jq --arg key "$MIME" --arg value "$ESCAPED_COMMENT" '. + {($key): $value}' "$OUTPUT_JSON.tmp" > "$OUTPUT_JSON.tmp2" && mv "$OUTPUT_JSON.tmp2" "$OUTPUT_JSON.tmp"
|
||||
MATCHED_COUNT=$((MATCHED_COUNT + 1))
|
||||
else
|
||||
echo " > Warning: No description found for MIME type $MIME ⚠️"
|
||||
MISSING_COUNT=$((MISSING_COUNT + 1))
|
||||
fi
|
||||
done <<< "$MIME_TYPES"
|
||||
|
||||
# Final formatting
|
||||
jq '.' "$OUTPUT_JSON.tmp" > "$OUTPUT_JSON" && rm "$OUTPUT_JSON.tmp"
|
||||
|
||||
echo "✅ Done!"
|
||||
echo "✔️ Descriptions found for $MATCHED_COUNT MIME types"
|
||||
echo "⚠️ Descriptions missing for $MISSING_COUNT MIME types"
|
||||
echo "📄 Output written to $OUTPUT_JSON"
|
||||
@ -0,0 +1,114 @@
|
||||
{
|
||||
"_comment" : "Array of human readable mimes.",
|
||||
"_comment2": "Any changes you make here will be overwritten on an update of Nextcloud.",
|
||||
"_comment3": "Put any custom mappings in a new file mimetypenames.json in the config/ folder of Nextcloud",
|
||||
|
||||
"_comment4": "After any change to mimetypenames.json run:",
|
||||
"_comment5": "./occ maintenance:mimetype:update-js",
|
||||
"_comment6": "Otherwise your update won't propagate through the system.",
|
||||
|
||||
"application/epub+zip": "Electronic book document",
|
||||
"application/gpx+xml": "GPX geographic data",
|
||||
"application/gzip": "Gzip archive",
|
||||
"application/illustrator": "Adobe Illustrator document",
|
||||
"application/json": "JSON document",
|
||||
"application/msword": "Word document",
|
||||
"application/octet-stream": "Unknown",
|
||||
"application/pdf": "PDF document",
|
||||
"application/postscript": "PostScript document",
|
||||
"application/rss+xml": "RSS summary",
|
||||
"application/vnd.android.package-archive": "Android package",
|
||||
"application/vnd.google-earth.kml+xml": "KML geographic data",
|
||||
"application/vnd.google-earth.kmz": "KML geographic compressed data",
|
||||
"application/vnd.lotus-wordpro": "Lotus Word Pro document",
|
||||
"application/vnd.ms-excel": "Excel spreadsheet",
|
||||
"application/vnd.ms-excel.addin.macroEnabled.12": "Excel add-in",
|
||||
"application/vnd.ms-excel.sheet.binary.macroEnabled.12": "Excel 2007 binary spreadsheet",
|
||||
"application/vnd.ms-excel.sheet.macroEnabled.12": "Excel spreadsheet",
|
||||
"application/vnd.ms-excel.template.macroEnabled.12": "Excel spreadsheet template",
|
||||
"application/vnd.ms-powerpoint": "PowerPoint presentation",
|
||||
"application/vnd.ms-powerpoint.addin.macroEnabled.12": "PowerPoint add-in",
|
||||
"application/vnd.ms-powerpoint.presentation.macroEnabled.12": "PowerPoint presentation",
|
||||
"application/vnd.ms-powerpoint.slideshow.macroEnabled.12": "PowerPoint presentation",
|
||||
"application/vnd.ms-powerpoint.template.macroEnabled.12": "PowerPoint presentation template",
|
||||
"application/vnd.ms-word.document.macroEnabled.12": "Word document",
|
||||
"application/vnd.oasis.opendocument.graphics": "ODG drawing",
|
||||
"application/vnd.oasis.opendocument.graphics-flat-xml": "ODG drawing (Flat XML)",
|
||||
"application/vnd.oasis.opendocument.graphics-template": "ODG template",
|
||||
"application/vnd.oasis.opendocument.presentation": "ODP presentation",
|
||||
"application/vnd.oasis.opendocument.presentation-flat-xml": "ODP presentation (Flat XML)",
|
||||
"application/vnd.oasis.opendocument.presentation-template": "ODP template",
|
||||
"application/vnd.oasis.opendocument.spreadsheet": "ODS spreadsheet",
|
||||
"application/vnd.oasis.opendocument.spreadsheet-flat-xml": "ODS spreadsheet (Flat XML)",
|
||||
"application/vnd.oasis.opendocument.spreadsheet-template": "ODS template",
|
||||
"application/vnd.oasis.opendocument.text": "ODT document",
|
||||
"application/vnd.oasis.opendocument.text-flat-xml": "ODT document (Flat XML)",
|
||||
"application/vnd.oasis.opendocument.text-template": "ODT template",
|
||||
"application/vnd.openxmlformats-officedocument.presentationml.presentation": "PowerPoint 2007 presentation",
|
||||
"application/vnd.openxmlformats-officedocument.presentationml.slideshow": "PowerPoint 2007 show",
|
||||
"application/vnd.openxmlformats-officedocument.presentationml.template": "PowerPoint 2007 presentation template",
|
||||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "Excel 2007 spreadsheet",
|
||||
"application/vnd.openxmlformats-officedocument.spreadsheetml.template": "Excel 2007 spreadsheet template",
|
||||
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": "Word 2007 document",
|
||||
"application/vnd.openxmlformats-officedocument.wordprocessingml.template": "Word 2007 document template",
|
||||
"application/vnd.visio": "Microsoft Visio document",
|
||||
"application/vnd.wordperfect": "WordPerfect document",
|
||||
"application/x-7z-compressed": "7-zip archive",
|
||||
"application/x-blender": "Blender scene",
|
||||
"application/x-bzip2": "Bzip2 archive",
|
||||
"application/x-fictionbook+xml": "FictionBook document",
|
||||
"application/x-krita": "Krita document",
|
||||
"application/x-mobipocket-ebook": "Mobipocket e-book",
|
||||
"application/x-msi": "Windows Installer package",
|
||||
"application/x-perl": "Perl script",
|
||||
"application/x-php": "PHP script",
|
||||
"application/x-tar": "Tar archive",
|
||||
"application/xml": "XML document",
|
||||
"application/yaml": "YAML document",
|
||||
"application/zip": "Zip archive",
|
||||
"application/zstd": "Zstandard archive",
|
||||
"audio/aac": "AAC audio",
|
||||
"audio/flac": "FLAC audio",
|
||||
"audio/mp4": "MPEG-4 audio",
|
||||
"audio/mpeg": "MP3 audio",
|
||||
"audio/ogg": "Ogg audio",
|
||||
"audio/webm": "WebM audio",
|
||||
"audio/x-scpls": "MP3 ShoutCast playlist",
|
||||
"image/bmp": "Windows BMP image",
|
||||
"image/emf": "EMF image",
|
||||
"image/gif": "GIF image",
|
||||
"image/heif": "HEIF image",
|
||||
"image/jp2": "JPEG-2000 JP2 image",
|
||||
"image/jpeg": "JPEG image",
|
||||
"image/png": "PNG image",
|
||||
"image/svg+xml": "SVG image",
|
||||
"image/tiff": "TIFF image",
|
||||
"image/webp": "WebP image",
|
||||
"image/x-dcraw": "Digital raw image",
|
||||
"message/rfc822": "Email message",
|
||||
"text/calendar": "VCS/ICS calendar",
|
||||
"text/css": "CSS stylesheet",
|
||||
"text/csv": "CSV document",
|
||||
"text/html": "HTML document",
|
||||
"text/markdown": "Markdown document",
|
||||
"text/org": "Org-mode file",
|
||||
"text/plain": "Plain text document",
|
||||
"text/vcard": "Electronic business card",
|
||||
"text/x-c++src": "C++ source code",
|
||||
"text/x-ldif": "LDIF address book",
|
||||
"text/x-nfo": "NFO document",
|
||||
"text/x-python": "Python script",
|
||||
"text/x-rst": "ReStructuredText document",
|
||||
"video/3gpp": "3GPP multimedia file",
|
||||
"video/dv": "DV video",
|
||||
"video/mp2t": "MPEG-2 transport stream",
|
||||
"video/mp4": "MPEG-4 video",
|
||||
"video/mpeg": "MPEG video",
|
||||
"video/ogg": "Ogg video",
|
||||
"video/quicktime": "QuickTime video",
|
||||
"video/webm": "WebM video",
|
||||
"video/x-flv": "Flash video",
|
||||
"video/x-matroska": "Matroska video",
|
||||
"video/x-ms-wmv": "Windows Media video",
|
||||
"application/vnd.oasis.opendocument.formula": "ODF formula"
|
||||
}
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"hashes": {
|
||||
"core\/js\/mimetypelist.js": "46f0174073339b822fc7d4a0f02bda57f211eb85b42995bd300232e77712ca05e14f6491f67c7b2da76d90b94fde8e16e01f5258a7586c2498d66247f81feaf8"
|
||||
"core\/js\/mimetypelist.js": "1f672ccc11dd5f0cf8753461476b05fbf6fec018db00fc59b074947953ba99481103f84ace140255995278da7ef4e3b49d263cc29a4b29786fb19413083fe928"
|
||||
},
|
||||
"signature": "ZTndGos1JFlIVm38RMTuSWaD32D09kJ8yiin7zlXpF4NWJmcOca2WQQOtgnBxcawSS6Udhnu27gyYQDV9ZkDPcAQAc7oj0yBjNTgcABkhif3XKCJ+nJBMHWxdrItJ+dXplLNQSdwX0CeNfbkBbp6bLCBDmjG3FyxNdsbJEtlCAmA+PrxwsWUwsoZJR8MJVuIBQl\/nu+17a1Q6B9t8KBbbdN59FDv\/lTPYRp8YJSlfR6\/lPRPSk1Q9p\/vhjBE25wo6HfXYxb1LhnO6g78bcE\/MBuX3BhCbARImuwLOiOLl\/RUXePOgH\/M2sNpjETu4LOmludd4mgJJ78YygjPvCcp8BMHL\/s8q+2z1OSDj6W\/Qjw4iHAW0oigaaajjwFD1agjsVHYK9M0ypL8BH\/cDKQDFvMU6s\/+aDjUgqZDspqovbcmujtHWU\/bRY89OcOBJcLoGWcjUvpk6o12ONUtihOgt7OdtHL33ZUYu0MOgTmCPjE84xqiOPgfRV+sPUpBKwsPyYDPy4sIj53W4nJswIh+Z3R+DUv85LLwx0g1AZTT1gOxMNRILJrFSAHFpbEFeVOhOS\/9b1FiVs7XtShPNXWxArltVd2BjqLhhjPbgRuiALlUuBJN2UyxGlLoDcOm4bIymG1dUtNSWJRjMxKxdQjpuxuhspEaDmHWzq6htO+6elI=",
|
||||
"signature": "V7eDZqrauafx5b\/taQ0Z2GYyuX6gjLU2\/igpQxs4o3YGG+ruBNk5PFoJxBbLogt5QrUIPilVJy3+2f4BkzWl7E2El51d2O+Ctg+cWATCvF6SJyhCdzZQLknyLXr4n+r7FlvHpiSQ8c88Aq2gNrBpK34Lq7YKjfln7q19vWIGUIYcE5gJJzhloSTF76\/yq3gIw48EXVrYMdT0nhE5zzk+pKJSvJCmtZGeyocXfHdRKGViH1egKvB8AJkTMByDbLKd9ZXhGrrQ1QWtJHLCDLrv6oBykz7N9J8yRbrKXjeuBtDAUfYHZeUbx7DYStNEWa3npXtst1HSJ7mMV5QYT9S9HbQp7qMQQBoze81QH3DS7jpksSkRr5w\/kE6FiNe8B8s56DMrNUo6NOFhsNRZF\/SNkVMgbRuckpCDHAE6hkz3+DwTQB7uYGu3qc965Yxn9YiGD83ep++c9CkEMOQL2q+CftbVMXVjF++Ml9P\/9N+ARF1t9mffEC8vOGaU1OR6DmPsbl1mlvkdP1RMKwa3Kp0nWEsWhDjjcB9b1hf4KCsPb6iiiyAV21qgigK73Aq\/8NRy0RlNB4rWsbb1NAV2tnnrJRbwdJrtS5dvTBADmsazt73jzkpc36vJNhBRaMUKTW05x7wnrw9K6MQDkjLuzfXJQWEJQtr+4dP9oyasamBufKc=",
|
||||
"certificate": "-----BEGIN CERTIFICATE-----\r\nMIIEvjCCAqagAwIBAgIUc\/0FxYrsgSs9rDxp03EJmbjN0NwwDQYJKoZIhvcNAQEF\r\nBQAwIzEhMB8GA1UECgwYb3duQ2xvdWQgQ29kZSBTaWduaW5nIENBMB4XDTE1MTEw\r\nMzIxMDMzM1oXDTE2MTEwMzIxMDMzM1owDzENMAsGA1UEAwwEY29yZTCCAiIwDQYJ\r\nKoZIhvcNAQEBBQADggIPADCCAgoCggIBALb6EgHpkAqZbO5vRO8XSh7G7XGWHw5s\r\niOf4RwPXR6SE9bWZEm\/b72SfWk\/\/J6AbrD8WiOzBuT\/ODy6k5T1arEdHO+Pux0W1\r\nMxYJJI4kH74KKgMpC0SB0Rt+8WrMqV1r3hhJ46df6Xr\/xolP3oD+eLbShPcblhdS\r\nVtkZEkoev8Sh6L2wDCeHDyPxzvj1w2dTdGVO9Kztn0xIlyfEBakqvBWtcxyi3Ln0\r\nklnxlMx3tPDUE4kqvpia9qNiB1AN2PV93eNr5\/2riAzIssMFSCarWCx0AKYb54+d\r\nxLpcYFyqPJ0ydBCkF78DD45RCZet6PNYkdzgbqlUWEGGomkuDoJbBg4wzgzO0D77\r\nH87KFhYW8tKFFvF1V3AHl\/sFQ9tDHaxM9Y0pZ2jPp\/ccdiqnmdkBxBDqsiRvHvVB\r\nCn6qpb4vWGFC7vHOBfYspmEL1zLlKXZv3ezMZEZw7O9ZvUP3VO\/wAtd2vUW8UFiq\r\ns2v1QnNLN6jNh51obcwmrBvWhJy9vQIdtIjQbDxqWTHh1zUSrw9wrlklCBZ\/zrM0\r\ni8nfCFwTxWRxp3H9KoECzO\/zS5R5KIS7s3\/wq\/w9T2Ie4rcecgXwDizwnn0C\/aKc\r\nbDIjujpL1s9HO05pcD\/V3wKcPZ1izymBkmMyIbL52iRVN5FTVHeZdXPpFuq+CTQJ\r\nQ238lC+A\/KOVAgMBAAEwDQYJKoZIhvcNAQEFBQADggIBAGoKTnh8RfJV4sQItVC2\r\nAvfJagkrIqZ3iiQTUBQGTKBsTnAqE1H7QgUSV9vSd+8rgvHkyZsRjmtyR1e3A6Ji\r\noNCXUbExC\/0iCPUqdHZIVb+Lc\/vWuv4ByFMybGPydgtLoEUX2ZrKFWmcgZFDUSRd\r\n9Uj26vtUhCC4bU4jgu6hIrR9IuxOBLQUxGTRZyAcXvj7obqRAEZwFAKQgFpfpqTb\r\nH+kjcbZSaAlLVSF7vBc1syyI8RGYbqpwvtREqJtl5IEIwe6huEqJ3zPnlP2th\/55\r\ncf3Fovj6JJgbb9XFxrdnsOsDOu\/tpnaRWlvv5ib4+SzG5wWFT5UUEo4Wg2STQiiX\r\nuVSRQxK1LE1yg84bs3NZk9FSQh4B8vZVuRr5FaJsZZkwlFlhRO\/\/+TJtXRbyNgsf\r\noMRZGi8DLGU2SGEAHcRH\/QZHq\/XDUWVzdxrSBYcy7GSpT7UDVzGv1rEJUrn5veP1\r\n0KmauAqtiIaYRm4f6YBsn0INcZxzIPZ0p8qFtVZBPeHhvQtvOt0iXI\/XUxEWOa2F\r\nK2EqhErgMK\/N07U1JJJay5tYZRtvkGq46oP\/5kQG8hYST0MDK6VihJoPpvCmAm4E\r\npEYKQ96x6A4EH9Y9mZlYozH\/eqmxPbTK8n89\/p7Ydun4rI+B2iiLnY8REWWy6+UQ\r\nV204fGUkJqW5CrKy3P3XvY9X\r\n-----END CERTIFICATE-----"
|
||||
}
|
||||
Loading…
Reference in New Issue