Jump to content

LR SDK - wie erreiche ich dass der Zähler läuft?


Empfohlene Beiträge

Werbung (verschwindet nach Registrierung)

Hallo,

vielleicht hat sich jemand intensiver mit der LR SDK auseinander gesetzt und kann mir einen Tipp geben.

Ich habe ein simples Plug-In. Dabei geht es um folgendes:
Auf der Platte liegt eine Textdatei in der Zeile für Zeile komplette Pfand mit Dateinamen steht. Diese Datei wird eben von dem Plug-In eingelesen und eine Sammlung mit gleichen Namen wie die Textdatei angelegt und alle Dateien die in der Textdatei stehen werden dieser Sammlung hinzugefügt.

Was mir noch fehlt um es perfekt zu machen ist, dass die Zahl neben dem Sammlungsnamen mit jedem Foto was hinzugefügt wird eben passend erhöht wird. Ich finde bis jetzt nicht wie dieser Zähler funktioniert. Es steht immer auf 0 und wenn das Hinzufügen Vorgang fertig ist, dann springt er auf die Zahl wie viele Fotos in der Sammlung sind.

Link zum Beitrag
Auf anderen Seiten teilen

Mit GitHub kann ich nicht dienen. So sieht mein Code z.Z aus:

--- File2Collection.lua
--- legt eine Sammlung aus den Bildern einer Textdatei an
 
local LrApplication = import 'LrApplication'
local LrDialogs = import 'LrDialogs'
local LrFileUtils = import 'LrFileUtils'
local LrPathUtils = import 'LrPathUtils'
local LrProgressScope = import 'LrProgressScope'
local LrTasks = import 'LrTasks'
 
LrTasks.startAsyncTask (function()    
   
    local catalog = LrApplication.activeCatalog()
    local trenner = "\n"
                         
    local datei = (LrPathUtils.child(LrPathUtils.getStandardFilePath('documents'), '\\Lightroom\\Lightroom-Input.txt'))
 
    if datei == nil then
       LrDialogs.message ("abgebrochen")
    else
        catalog:withWriteAccessDo( "Sammlung anlegen und leeren", function( context )
       
            -- Sammlungsname aus Dateinamen ohne datei und Typ erzeugen
            local s1, s2, s3 = string.match(datei, "(.-)([^\\]-([^%.]+))$")
            -- local sammlungsname = string.sub(s2, 1, string.len(s2) - string.len(s3) -1)
            local sammlungsname = os.date("%d-%m-%Y %R")
            --- neue Sammlung anlegen
                sammlung = catalog:createCollection(sammlungsname, nil, true)
                sammlung:removeAllPhotos()
           
        end) -- end WriteAccess
             
        catalog:withWriteAccessDo( "Fotos zur Sammlung hinzufügen", function( context )    
            fortschritt = LrProgressScope ({title  = "Bilder in die Sammlung kopieren",
                                        caption = "Bilder in die Sammlung kopieren" })
            local zeilen = split_text(trenner, LrFileUtils.readFile(datei))                        
            PhotoCount = 0
            ProcCount = 0
            for _, zeile in ipairs(zeilen) do
                PhotoCount=PhotoCount+1
            end
           
            --- jetzt wieder eigener Code
            for _, zeile in ipairs(zeilen) do
                -- dateiname ohne datei und Typ erzeugen
                ProcCount = ProcCount + 1
                fortschritt:setPortionComplete(ProcCount, PhotoCount)
 
                local s1, s2, s3 = string.match(zeile, "(.-)([^\\]-([^%.]+))$")
---             local s1, s2, s3 = string.match(zeile, "(.+-.+\\)(.*\.(.+))$")
                local dateiname = string.sub(s2, 1, string.len(s2) - string.len(s3) -1)
                local pfadname = string.gsub( s1,"C:\\DSLR\\DSLR-RAW", "" )
                local pfadname = string.gsub( pfadname, "\\", " " )
---             LrDialogs.message (pfadname, dateiname)
                fortschritt:setCaption(dateiname)
                       
                if string.len(zeile) > 1 then
                    sammlung:addPhotos(catalog:findPhotos {
                        ascending = true,
                        searchDesc = {
                            {
                                criteria = "folder",
                                operation = "words",
                                value = pfadname,
                            },
                            {
                                criteria = "filename",
                                operation = "beginsWith",
                                value = s2,
                            },
                            {
                                criteria = "filename",
                                operation = "endsWith",
                                value = s3,
                            },
                            combine = "intersect",
                        }
                       }
                    )
                end --- if string.len
            end -- for zeile
            fortschritt:done()
        end) -- end WriteAccess
    end
end) -- Ende von startAsyncTask
Link zum Beitrag
Auf anderen Seiten teilen

@DSLRUserMeinst du diesen Zähler? Bin mir nicht sicher ob der sich während des 'catalog:withWriteAccess' updatet.  In der Doku steht dass erst nach Ende des Zugriffs die Informationen aus der Datenbank abgerufen werden können. Du siehst die Collection weil du den ersten Zugriff mit dem Anlegen der Collection abschliesst. Im zweiten Zugriff geht der Zähler dann nach Abschluss der Aktion (end write access) auf den Endwert. Theoretisch könntest den Write Access für jedes einzelne Bild machen - würde ich aber nicht empfehlen, damit handelst du dir dann Probleme mit dem Fortschrittsbalken ein.

Hallo, lieber Besucher! Als Forumsmitglied (kostet nix) würdest du hier ein Bild sehen…

Einfach hier registrieren – Wir freuen uns immer über neue Mitglieder!

bearbeitet von Lufthummel
Link zum Beitrag
Auf anderen Seiten teilen

Werbung (verschwindet nach Registrierung)

vor 3 Stunden schrieb Lufthummel:

Du kannst ja am Ende noch einen Dialog anzeigen mit Prozess-Details.

Nee, es tut schon was es soll und Vorschrittbalken  inkl. Anzeige der Dateiname habe ich. Es wäre eben vielleicht noch "schöner" mit dem Zähler wenn es schnell und einfach ginge.

 

Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...