12 berichten aan het bekijken - 1 tot 12 (van in totaal 12)
  • Q:

    Bijdrager
    lhhod

    foutje in script

    ik kreeg een script voor iView media Pro maar scripteditor meldt dat er een fout in zit. Zelf weet ik (nog) niets van scripts. Kan iemand mij helpen?
    Laurens

    — Alex 12/15/2006
    — Copy of “Copy from Items with Same Name…” but added copying Ratings and Label
    — Removed custom field copying which was causing script to not work?!
    global Lang
    set Lang to User_Language()

    beep
    AboutScript()

    set Selitems to GetItems(1)
    if Selitems = {} then return

    set theCount to 0
    set Already to {}
    tell application “iView MediaPro”
    tell catalog 1
    — set cfList to the name of every custom field as list
    repeat with TheMedia in Selitems
    set mediaName to the name of TheMedia
    if unique id of TheMedia is not in Already then
    set Annots to annotations of TheMedia
    set theLabel to the label index of TheMedia
    set theRating to the rating of TheMedia
    –display dialog “Label = ” & theLabel & ” and Rating = ” & theRating
    if Annots as list as string is not “” then
    set end of Already to unique id of TheMedia
    set ShortName to name of TheMedia
    set X to 1 + (offset of “.” in (reverse of characters of ShortName as text))
    set ShortName to text 1 thru -X of ShortName
    set DestMedias to (media items whose name starts with ShortName)
    repeat with DestMedia in DestMedias
    if unique id of DestMedia is not in Already then
    set end of Already to unique id of DestMedia
    set annotations of DestMedia to Annots
    set label index of DestMedia to theLabel
    set rating of DestMedia to theRating
    –start custom fields
    –repeat with theField in cfList
    — set cfName to the theField as string
    — set cfValue to custom field cfName of media item mediaName as text
    — set custom field cfName of DestMedia to cfValue
    –end repeat
    set theCount to theCount + 1
    end if
    end repeat
    end if
    end if
    end repeat
    end tell
    end tell
    set lib to item Lang of {“Completed !” & return & return & ” Processed files: “, ¬
    “Terminé !” & return & return & ” Fichiers traités : “}
    display dialog lib & theCount buttons “OK” default button 1 with icon note giving up after 5

    on GetItems(Nitems)
    if exists window 1 of application “iView MediaPro” then
    set Plural to “”
    if Nitems > 1 then set Plural to “s”
    set selectedID to the selection of window 1 of application “iView MediaPro”
    if (count of selectedID) ? Nitems then return selectedID
    set lib to item Lang of {“It’s necessary to select at least ” & Nitems & ” item” & Plural & ” of the catalog.”, ¬
    “Il faut sélectionner au moins ” & Nitems & ” élément” & Plural & ” du catalogue.”}
    else
    set lib to item Lang of {“At least one opened catalog is needed to use this script.”, ¬
    “Il faut au moins un catalogue ouvert pour utiliser ce script.”}
    end if
    beep
    display dialog lib buttons {“OK”} default button 1 with icon stop giving up after 8
    return {}
    end GetItems

    on AboutScript()
    — note that English text below was modified to include rating/label, French text was not
    set lib to item Lang of {¬
    “Copy annotations of selected items to items of same name but different suffix, or having the same full name in other folders INCLUDING Rating and Label”, ¬
    “Copie les annotations des éléments sélectionnés dans les éléments de même nom mais de suffixe différent ou de même nom complet dans d’autres dossiers.”}
    display dialog lib with icon note
    end AboutScript

    on User_Language()
    set PathLang to (path to application support from user domain as string) & “iView:Plug-ins:User Language”
    tell application “Finder” to if exists file PathLang then return run script PathLang as alias
    return 1
    end User_Language


    Bijdrager
    aToMac

    Misschien handig om te vermelden wat de fout precies is?


    Bijdrager
    lhhod

    dat weet ik ook niet. Ik kreeg die melding toen ik het script in scripteditor copieerde en probeerde te plaatsen in de map scipts van iView.
    Ergens in het script staat een vraagteken en scripteditor gaf de mededeling dat daar iets ander verwacht werd.


    Bijdrager
    aToMac

    maak van dat vraagteken eens “is” Het is een if-statement op een regel. In java wordt dat bijvoorbeeld zo gedaan:

    b = a == 5 ? “Goedzo” : “Fout”;

    Eigenlijk staat er gewoon dit:

    if( a == 5) {
    b= “Goedzo”;
    } else {
    b=”Fout”;
    }

    if (count of selectedID) ? Nitems then return selectedID

    if (count of selectedID) is Nitems then
    return selectedID
    end if


    Bijdrager
    lhhod

    De tip was een goed begin. Ik kreeg nu in scripteditor geen foutmelding en ik kon het script saven in de scriptfolder van iView. Maar toen ik het probeerde ging het toch niet helemaal goed. Het werkt als ik één JPG file selecteer. Dan worden de keywords die daar in staan gekopieerd naar de Tiff file met dezelfde naam. Maar als ik er meerdere selecteer werkt het script niet meer. En dat is nu juist wel de bedoeling. Ik moet er ruim duizend doen.


    Bijdrager
    aToMac

    Volgens mij moet je in dit regeltje:

    set Selitems to GetItems(1)

    die 1 veranderen door het aantal. Ik ben geen AppleScript expert dus ik kan het mis hebben, maar dit lijkt het aantal mee te geven.

    Maar het zou ook kunnen dat hij met dat getal het zoveelste item pakt.. Dan moet je er een andere lus omheen gooien die

    set SelItems to GetItems(theCount) meegeeft.


    Bijdrager
    lhhod

    Dit is het script zoals ik het heb aangepast, maar ik kan de regel die jij noemt niet vinden.

    — Alex 12/15/2006
    — Copy of “Copy from Items with Same Name…” but added copying Ratings and Label
    — Removed custom field copying which was causing script to not work?!
    global Lang
    set Lang to User_Language()

    beep
    AboutScript()

    set Selitems to GetItems(1)
    if Selitems = {} then return

    set theCount to 0
    set Already to {}
    tell application “iView MediaPro”
    tell catalog 1
    — set cfList to the name of every custom field as list
    repeat with TheMedia in Selitems
    set mediaName to the name of TheMedia
    if unique id of TheMedia is not in Already then
    set Annots to annotations of TheMedia
    set theLabel to the label index of TheMedia
    set theRating to the rating of TheMedia
    –display dialog “Label = ” & theLabel & ” and Rating = ” & theRating
    if Annots as list as string is not “” then
    set end of Already to unique id of TheMedia
    set ShortName to name of TheMedia
    set X to 1 + (offset of “.” in (reverse of characters of ShortName as text))
    set ShortName to text 1 thru -X of ShortName
    set DestMedias to (media items whose name starts with ShortName)
    repeat with DestMedia in DestMedias
    if unique id of DestMedia is not in Already then
    set end of Already to unique id of DestMedia
    set annotations of DestMedia to Annots
    set label index of DestMedia to theLabel
    set rating of DestMedia to theRating
    –start custom fields
    –repeat with theField in cfList
    — set cfName to the theField as string
    — set cfValue to custom field cfName of media item mediaName as text
    — set custom field cfName of DestMedia to cfValue
    –end repeat
    set theCount to theCount + 1
    end if
    end repeat
    end if
    end if
    end repeat
    end tell
    end tell
    set lib to item Lang of {“Completed !” & return & return & ” Processed files: “, ¬
    “Terminé !” & return & return & ” Fichiers traités : “}
    display dialog lib & theCount buttons “OK” default button 1 with icon note giving up after 5

    on GetItems(Nitems)
    if exists window 1 of application “iView MediaPro” then
    set Plural to “”
    if Nitems > 1 then set Plural to “s”
    set selectedID to the selection of window 1 of application “iView MediaPro”
    if (count of selectedID) is Nitems then return selectedID
    set lib to item Lang of {“It’s necessary to select at least ” & Nitems & ” item” & Plural & ” of the catalog.”, ¬
    “Il faut sélectionner au moins ” & Nitems & ” élément” & Plural & ” du catalogue.”}
    else
    set lib to item Lang of {“At least one opened catalog is needed to use this script.”, ¬
    “Il faut au moins un catalogue ouvert pour utiliser ce script.”}
    end if
    beep
    display dialog lib buttons {“OK”} default button 1 with icon stop giving up after 8
    return {}
    end GetItems

    on AboutScript()
    — note that English text below was modified to include rating/label, French text was not
    set lib to item Lang of {¬
    “Copy annotations of selected items to items of same name but different suffix, or having the same full name in other folders INCLUDING Rating and Label”, ¬
    “Copie les annotations des éléments sélectionnés dans les éléments de même nom mais de suffixe différent ou de même nom complet dans d’autres dossiers.”}
    display dialog lib with icon note
    end AboutScript

    on User_Language()
    set PathLang to (path to application support from user domain as string) & “iView:Plug-ins:User Language”
    tell application “Finder” to if exists file PathLang then return run script PathLang as alias
    return 1
    end User_Language


    Bijdrager
    aToMac

    — Alex 12/15/2006
    — Copy of “Copy from Items with Same Name…” but added copying Ratings and Label
    — Removed custom field copying which was causing script to not work?!
    global Lang
    set Lang to User_Language()

    beep
    AboutScript()

    set Selitems to GetItems(1)


    Bijdrager
    lhhod

    Bedankt. Veranderd maar nu krijg ik de mededeling: The variabele theCount is niet gedefinieerd


    Bijdrager
    aToMac

    dat klopt. :)

    Als je [code:1:2e2c0c7567]set Selitems to GetItems(1)[/code:1:2e2c0c7567] verandert in [code:1:2e2c0c7567]set Selitems to GetItems(3)[/code:1:2e2c0c7567]

    wat gebeurt er dan?

    Want als je theCount meegeeft, dan moeten we er een andere lus omheen bouwen, maar moeten eerst even kijken wat bovenstaande verandering precies doet.


    Bijdrager
    lhhod

    De mededelingen die ik krijg zie ik in scripteditor. Daar moet die eerst goed zijn voordat ik um kan loslaten in iView. Je kan het dus zelf ook zien in scripteditor.
    Vandaag ben ik weg, vanavond pas weer terug.
    Bedankt voor het meedenken.


    Bijdrager
    aToMac

    Ja, ik zit op mn werk achter een Windos PC te werken, dus kan hier niet kijken helaas.

12 berichten aan het bekijken - 1 tot 12 (van in totaal 12)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.