Benutzer:Patrick Oberdoerfer/ZUM-Apps und H5P/Flashcards schneller erstellen/: Unterschied zwischen den Versionen

Aus ZUM Projektwiki
(Überarbeitung und Verbesserung)
Markierung: 2017-Quelltext-Bearbeitung
K (Der Seiteninhalt wurde durch einen anderen Text ersetzt: „== H5P Python-Kopierer (hier Flashcards) == Noch im Aufbau!!!“)
Markierungen: Ersetzt 2017-Quelltext-Bearbeitung
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Anwendungsfall:''' Sie haben eine Zeichnung oder ein Bild und stellen dazu unterschiedliche Fragen.
== H5P Python-Kopierer (hier Flashcards) ==


'''Problem:''' Eine angelegte Karte kann nicht einfach dupliziert werden. Diese Funktion ist leider in diesem Inhaltstypen nicht verfügbar.
Noch im Aufbau!!!
 
'''Idee und Lösung:''' Mit einem Python-Skript eine Kartenvorlage beliebig oft kopieren lassen. Wichtig für OER-Fans! Auch die Metadaten und Quellen werden dabei übernommen. So spart man sich viel Zeit bei der Erstellung von OER-Content.
 
Wie gehe ich vor?
 
Damit das alles klappt werden unterschiedliche Programme und Vorbereitungen benötigt.
 
1. Natürlich einen H5P-Editor für die Erstellung der H5P-Vorlage mit der ersten Flashcard.
 
2. Einen (beliebigen) Python-Chatbot zur Erstellung des Skripts. Oder die unten stehende Vorlage:-)
 
3. Python muss auf dem Rechner installiert sein.
 
4. Ausführung von z. B. Windows PowerShell (immer vorhanden)
 
5. Einen Zielordner anlegen. In diesen kommt das Python-Skript und die H5P-Vorlage
Da nicht jede Person (mich eingeschlossen) tagtäglich dies Abläufe nutzt, hier noch ein kleiner Tipp, wie der Anschließende Pfad schnell zur Verfügung steht.
 
In der Navigationsleiste des Explorers rechts Klick und auf Adresse kopieren (siehe Bild).
[[Datei:Pfad Ordners kopieren.png|links|mini|600x600px]]
 
 
 
 
 
 
Oder hier der Dialog mit ChatGPT
[[Datei:Screenshot Python GPT.png|alternativtext=Dialog mit Python GPT|links|gerahmt|Dialog mit Python GPT]]
 
 
'''Welche Software wird gebraucht?'''
 
Python und H5P-Editor
 
'''Anleitung:'''
 
 
'''Hier das Skript:'''<syntaxhighlight lang="python3">
import zipfile
import json
import os
import shutil
 
# Funktion zum Vervielfältigen der Flashcards
def duplicate_flashcards(content_data, num_duplicates=10):
    original_card = content_data['dialogs'][0]  # Originale Karte
    for i in range(num_duplicates):
        # Dupliziere die Karte
        new_card = original_card.copy()
        new_card['text'] = f'<p style="text-align: center;"><strong>Bauteile {i+2}</strong></p>\n'
        new_card['answer'] = f'<p style="text-align: center;">Vertikalrahmen {i+2}</p>\n'
        content_data['dialogs'].append(new_card)
    return content_data
 
# Pfade zur Original-H5P-Datei und zum Extraktionsort
h5p_file_path = 'interactive-content-35394.h5p'
extract_path = 'h5p_extract/'
 
# Extrahiere die H5P-Datei
with zipfile.ZipFile(h5p_file_path, 'r') as zip_ref:
    zip_ref.extractall(extract_path)
 
# Pfad zur content.json und Bilderordner
content_json_path = os.path.join(extract_path, 'content', 'content.json')
with open(content_json_path, 'r', encoding='utf-8') as json_file:
    content_data = json.load(json_file)
 
# Flashcards vervielfältigen (z.B. 10 mal)
updated_content_data = duplicate_flashcards(content_data, num_duplicates=10)
 
# Speichere die aktualisierte content.json
with open(content_json_path, 'w', encoding='utf-8') as json_file:
    json.dump(updated_content_data, json_file, ensure_ascii=False, indent=4)
 
# Nur die erlaubten Dateien (JSON, Bilder) in die neue H5P-Datei packen
def zipdir(path, ziph):
    # Gehe durch alle Dateien und füge nur zulässige Dateitypen hinzu
    allowed_extensions = ['.json', '.png', '.jpg', '.jpeg', '.gif', '.bmp', '.tif', '.tiff', '.svg',
                          '.eot', '.ttf', '.woff', '.woff2', '.otf', '.webm', '.mp4', '.ogg', '.mp3',
                          '.m4a', '.txt', '.pdf', '.rtf', '.doc', '.docx', '.xls', '.xlsx', '.ppt',
                          '.pptx', '.odt', '.ods', '.odp', '.xml', '.csv', '.diff', '.patch', '.swf',
                          '.md', '.textile', '.wav', '.gltf', '.glb']
   
    for root, dirs, files in os.walk(path):
        for file in files:
            if any(file.endswith(ext) for ext in allowed_extensions):
                file_path = os.path.join(root, file)
                ziph.write(file_path, os.path.relpath(file_path, path))
 
# ZIP die erlaubten Dateien in eine neue H5P-Datei
output_h5p_file = 'duplicated_flashcards_fixed.h5p'
with zipfile.ZipFile(output_h5p_file, 'w') as zipf:
    zipdir(extract_path, zipf)
 
print(f'H5P-Datei erstellt: {output_h5p_file}')
 
</syntaxhighlight>
 
 
Bei der Erstellung kamen zum Einsatz:
 
Python GPT via ChatGPT
 
Python 3.13 (64-bit)
 
H5P-Editor

Aktuelle Version vom 7. November 2024, 07:20 Uhr

H5P Python-Kopierer (hier Flashcards)

Noch im Aufbau!!!