kopiervorgang als prozess anzeigen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Ernie1412
User
Beiträge: 160
Registriert: Freitag 10. Januar 2020, 20:38

Code: Alles auswählen

shutil.move(Path(dir,fname+".mp4"),Path(new_dir,fname+".mp4"))
so verschiebe ich ja eine Datei, insbesondere von einem Laufwerk ins andere. In meinem fall in ein anderen Netzwerk-Ordner.
wie kann ich den Prozess des Verschieben ähnlich wie es der Explorer macht anzeigen. So blockiert er ja nur das Programm bis verscheiben zu ende ist.

gibts dazu lehrreiche Videos(youtube) ?

ich hab ja nur was von Mutiprocessing und Mutithreading gefunden.

Oder muss ich per "with open( .... ,rb) as file" arbeiten ?

das gleiche möchte ich auch bei

Code: Alles auswählen

command=[EXIFPFAD,
                '-overwrite_original',
                '-Quicktime:CreateDate='+self.lnEdit_ErstellDatum.text(),
                '-ContentCreateDate#='+Datum,
                '-Microsoft:PromotionURL='+self.lnEdit_DownloadURL.text()+nummer,
                '-Microsoft:AuthorURL='+self.lnEdit_URL.text(),
                '-Microsoft:Publisher='+self.lnEdit_Seite.text(),
                '-Microsoft:Producer='+self.lnEdit_NebenSide.text(),
                '-Microsoft:EncodedBy='+self.lnEdit_Webside.text(),                             
                '-ItemList:Genre='+self.txtBrw_Tags.toPlainText(),
                '-ItemList:Artist='+self.DarstellerZusammen().replace(" & ","/").replace(", ","/"),
                '-ItemList:Title='+self.lnEdit_Titel.text(),             
                '-ItemList:Comment='+self.txtBrw_Beschreibung.toPlainText(),
                str(dirfname)]
            process = subprocess.Popen(command, stdout=subprocess.PIPE,  stderr=subprocess.PIPE, close_fds=True, universal_newlines=True)
            stdout, stderr = process.communicate()
machen. da benutze ich das tool "Exiftool". Beim Beschreiben von Dateien, (mp4) Video, kopiert er immer die komplette Datei und schreibt den Inhalt (Metatags) in die Datei.
das kann auch einige zeit andauern, wäre schön da auch ein Prozessanzeige zu erstellen.
gibts da eine Möglichkeit den Prozess zu überwachen, anzuzeigen ?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich bin verwirrt. Noch vor wenigen Stunden wolltest du deine Teilnahme hier beenden. Und jetzt plötzlich neue Fragen, auf die doch nie nie never Antworten bekommst?
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

@Ernie1412: Du kannst nur einen Progress anzeigen, wenn du den Status des Vorgangs irgendwo her bekommst.
Das ist nicht ganz trivial. Beim Verschieben einer Datei sehe ich gar keine Möglichkeit. Beim verschieben von mehreren Dateien könntest du die Anzahl oder die Größe aller Dateien vorher ermitteln und das in eier QProgressBar darstellen.
Ob du mit Exiftool eine Chance hast, hängt davon ab, ob es während der Verarbeitung etwas ausgibt, das du abgreifen kannst. Ich kenne das Tool nicht. Schau mal ob es eine entsprechened Option dafür gibt.

Grundsätzlich müsst ein so lange dauernder Vorgang sowieso in einem Thread ausgelagert sein und entsprechend über Signals den Status melden, damit dann im Mainloop die ProgressBar aktualisiert werden kann
Ernie1412
User
Beiträge: 160
Registriert: Freitag 10. Januar 2020, 20:38

schade, dachte man könnte das irgendwie abgreifen. Im talkmanager is exiftool 2 mal geöffnet, ob wohl nur einmal aufgerufen, interessant.
dachte da gibts irgendwas. process exiftool oder system irgendwas :)

aber danke für deine Antwort.

exiftool ist ja in perl geschrieben, schade das es da nichts in python gibt, nur ein pyexiftool, was nichts anderes macht als process = subprocess.Popen(com, stdout=subprocess.PIPE, stderr=subprocess.PIPE .. aufruft.
git://github.com/smarnach/pyexiftool

https://github.com/exiftool/exiftool <--- das hier ist das perl (open source) also wer sich mit perl auskennt, kann das gerne in python umschreiben, wäre echt geil :)
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Ja, das ist wirklich schade, dass exif Metatafs nicht in Python zu bearbeiten sind. Wundert mich auch, dass noch nie jemand auf die Idee gekommen ist.

Oh... moment .

Es gibt also mindestens ein gut gepflegtes Modul und pillow - _das_ Modul für die Bildbearbeitung in Python - kann das auch.
Ernie1412
User
Beiträge: 160
Registriert: Freitag 10. Januar 2020, 20:38

aber nur für Bilder, nicht für movies (mp4)

übriegens hab ich was gefunden für meine prozess abfrage:

Code: Alles auswählen

t = threading.Thread(name='copying', target=copying_file, args=(src, des))
# Start the copying on a separate thread
t.start()
# Checking the status of destination file on a separate thread
b = threading.Thread(name='checking', target=checker, args=(src, des))
b.start()
von: https://stackoverflow.com/questions/299 ... opy-thread

mit threading war ich schonmal in der richtigen Richtung wie es scheint
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Dann solltest du mal schauen, ob es ein Modul gibt mit dem man "tags" in Multimediadateien schreiben kann. mutagen kann das laut Dokumentation.
Ernie1412
User
Beiträge: 160
Registriert: Freitag 10. Januar 2020, 20:38

leider kann es nur 6 tags abfragen, "dict_keys(['©too', '©day', '©ART', '©cmt', '©gen', '©nam'])"
©too = uninterresant mit welchen Programm die mp4 encodet wurde :)

Beschreibung: https://mutagen.readthedocs.io/en/latest/api/mp4.html
darin sind viel mehr Abfragen möglich. auch in der mp4.py sind mehr drin.

Code: Alles auswählen

# these allow implicit flags and parse as text
    for name in [b"\xa9nam", b"\xa9alb", b"\xa9ART", b"aART", b"\xa9wrt",
                 b"\xa9day", b"\xa9cmt", b"desc", b"purd", b"\xa9grp",
                 b"\xa9gen", b"\xa9lyr", b"catg", b"keyw", b"\xa9too",
                 b"cprt", b"soal", b"soaa", b"soar", b"sonm", b"soco",
                 b"sosn", b"tvsh"]:
Man müsste das Programm nun erweitern :)
viel Arbeit wohl. Da ist exiftool kompletter aber leider in Perl(commandline)

Aber danke für den Hinweis mit mutagen !!!
‘tves’ – TV Episode
‘tvsn’ – TV Season
wäre interresant gewesen für mich, obwohl es in der mp4.py drin ist
Man müsste sich komplett damit beschäftigen, wo und wie er auf alles zugreift.
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Wie kommst du darauf, dass sich unr 6 Tags abfragen lassen? In der Dokumentation, die du verlinkt hast, stehen einig mehr.
https://mutagen.readthedocs.io/en/latest/api/mp4.html#mutagen.mp4.MP4Tags hat geschrieben:Text values (multiple values per key are supported):

‘\xa9nam’ – track title
‘\xa9alb’ – album
‘\xa9ART’ – artist
‘aART’ – album artist
‘\xa9wrt’ – composer
‘\xa9day’ – year
‘\xa9cmt’ – comment
‘desc’ – description (usually used in podcasts)
‘purd’ – purchase date
‘\xa9grp’ – grouping
‘\xa9gen’ – genre
‘\xa9lyr’ – lyrics
‘purl’ – podcast URL
‘egid’ – podcast episode GUID
‘catg’ – podcast category
‘keyw’ – podcast keywords
‘\xa9too’ – encoded by
‘cprt’ – copyright
‘soal’ – album sort order
‘soaa’ – album artist sort order
‘soar’ – artist sort order
‘sonm’ – title sort order
‘soco’ – composer sort order
‘sosn’ – show sort order
‘tvsh’ – show name
‘\xa9wrk’ – work
‘\xa9mvn’ – movement

Boolean values:

‘cpil’ – part of a compilation
‘pgap’ – part of a gapless album
‘pcst’ – podcast (iTunes reads this only on import)

Tuples of ints (multiple values per key are supported):

‘trkn’ – track number, total tracks
‘disk’ – disc number, total discs

Integer values:

‘tmpo’ – tempo/BPM
‘\xa9mvc’ – Movement Count
‘\xa9mvi’ – Movement Index
‘shwm’ – work/movement
‘stik’ – Media Kind
‘hdvd’ – HD Video
‘rtng’ – Content Rating
‘tves’ – TV Episode
‘tvsn’ – TV Season
‘plID’, ‘cnID’, ‘geID’, ‘atID’, ‘sfID’, ‘cmID’, ‘akID’ – Various iTunes Internal IDs

Others:

‘covr’ – cover artwork, list of MP4Cover objects (which are tagged strs)
‘gnre’ – ID3v1 genre. Not supported, use ‘\xa9gen’ instead.

The freeform ‘—-‘ frames use a key in the format ‘—-:mean:name’ where ‘mean’ is usually ‘com.apple.iTunes’ and ‘name’ is a unique identifier for this frame. The value is a str, but is probably text that can be decoded as UTF-8. Multiple values per key are supported.

MP4 tag data cannot exist outside of the structure of an MP4 file, so this class should not be manually instantiated.

Unknown non-text tags and tags that failed to parse will be written back as is.
Ernie1412
User
Beiträge: 160
Registriert: Freitag 10. Januar 2020, 20:38

wie fragt man die ab ?
bzw addet, removed
insbesondere StreamInfos
irgendwie finde ich da nichts

Code: Alles auswählen

f = mutagen.File(filename)
     print(f"encodet mit dem Programm = {f['©too'][0]}\n")
     print(f"Jahr = {f['©day'][0]}\n")
     print(f"Darsteller = {f['©ART'][0]}\n")
     print(f"Beschreibung = {f['©cmt'][0]}\n")
     print(f"Tags = {f['©gen'][0]}\n")
     print(f"Titel = {f['©nam'][0]}\n")
mehr hab ich nicht gefunden. Werd aus der Beschreibung nicht schlau
Ernie1412
User
Beiträge: 160
Registriert: Freitag 10. Januar 2020, 20:38

adden, remove usw. weiss ich wie das geht nun.
Nur was unter Eigenschaften Details im Explorer und dann "Ursprung" zu sehen ist, das kann man damit wohl nicht ändern.
das sind wohl .mov tags, keine .mp4 tags

im exiftool heissen die:
-Quicktime:CreateDate
-Microsoft:PromotionURL
-Microsoft:AuthorURL
-Microsoft:Publisher
-Microsoft:Producer
-Microsoft:EncodedBy
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Dann lass dir doch mal die Tags für eine mp4 ausgeben in denen das gesetzt ist. Standard scheinen die bei der Namensgebung nicht zu sein.
Antworten