Code: Alles auswählen
import os
def finde_programme_mit_strengem_pdf_mimetype_und_namen():
suchpfade = [
"/usr/share/applications",
os.path.expanduser("~/.local/share/applications"),
"/var/lib/flatpak/exports/share/applications",
os.path.expanduser("~/.local/share/flatpak/exports/share/applications")
]
erlaubte_mimetypes = {"application/pdf", "application/x-pdf"}
verbotene_namen = {"calibre", "image", "window"}
ergebnisse = []
for verzeichnis in suchpfade:
if not os.path.exists(verzeichnis):
continue
for datei in os.listdir(verzeichnis):
if not datei.endswith(".desktop"):
continue
pfad = os.path.join(verzeichnis, datei)
try:
with open(pfad, "r", encoding="utf-8", errors="ignore") as f:
lines = f.readlines()
name = None
mimetype = ""
for zeile in lines:
if zeile.startswith("Name="):
name = zeile.strip().split("=", 1)[-1]
elif zeile.startswith("MimeType="):
full_mime = zeile.strip().split("=", 1)[-1]
pdf_types = [
m for m in full_mime.split(";")
if m.strip().lower() in erlaubte_mimetypes
]
mimetype = ";".join(pdf_types)
if not mimetype or not name:
continue
# Namen filtern
name_lower = name.lower()
if any(verboten in name_lower for verboten in verbotene_namen):
continue
ergebnisse.append((name, mimetype))
except Exception:
continue
return ergebnisse
# Ausgabe
if __name__ == "__main__":
ergebnisse = finde_programme_mit_strengem_pdf_mimetype_und_namen()
print("📄 Final gefilterte PDF-Programme:\n")
for name, mimetype in ergebnisse:
print(f"{name:<30} → {mimetype}")
Final gefilterte PDF-Programme:
E-book viewer → application/pdf
Slim PDF Reader 2.0 → application/pdf
Okular → application/pdf
Document Viewer → application/pdf
MuPDF → application/pdf
Atril Document Viewer → application/pdf
New Drawing → application/pdf
Zathura → application/pdf
Paperwork → application/pdf
[Finished in 44ms]