Odpowiedz na ten temat
Pokaż wyniki od 1 do 7 z 7
  1. Avatar jackolus
    Dołączył
    Jan 2008
    Skąd
    Kraków
    Postów
    252

    Cytuj | #1

    Uwielbiam automatora - jednak za chiny ludowe nie jestem w stanie wymyślić jednej czynności:

    problem występuje przy serialach TV w niskiej rozdzielczości. Przy konwertowaniu .txt na .srt PYM playerem - nie dopasowuje on długości wiersza do szerokości okna, stąd non stop dialogi są obcinane.
    Rozwiązaniem jest ręczne szukanie długich wierszy i "enterowanie"

    SRT Tool mówi, że "format unknown" - dlatego pozostał mi tylko PYM


    proszę o pomoc przy poniższej regule:

    [program Text Edit]
    jeżeli wiersz zawiera +55 znaków -----> ENTER


    Chyba jedynym wejściem jest Apple Script - ale że jestem zielony, sam sobie nie poradzę.

    dzięki serdeczne z góry
    Komputer: MacBook C2D 2.16Ghz 2Gb 500Gb+1TB; PowerMac G4 MD; PowerMac G4 AGP
    Telefon: HTC Sensation 32gb, iPhone 3G 16GB White


  2. Avatar jhartman
    Dołączył
    Jul 2007
    Postów
    637

    Cytuj | #2

    Zapisz ten plik na dysk, np. na pulpit pod nazwą foldLines.awk:

    Kod:
    !/-->/{
        max_len = 50
    
        print max_len;
        if(length($0) < max_len)
        {
            print $0;
        }
        else
        {
            print substr($0, 0, max_len);
            print substr($0, (max_len+1), 500);
        }
    }
    
    /-->/{
            print $0;
        }
    Teraz z terminala wywołaj:

    awk -f ~/Desktop/foldLines.awk <plik_wejściowy.srt> > <plik wyjściowy.srt>

    Jeśli chcesz zawijać linię o innej długości zmień przypisanie max_len = 50

    ---- Dodano 14-02-2009 o godzinie 16:22 ----
    Poprawiona wersja - nie obcina wyrazu w połowie:

    Kod:
    !/-->/{
        max_len = 50
    
        if(length($0) < max_len)
        {
            print $0;
        }
        else
        {
            output = "";
        
            for(i=1; i<NF; i++)
            {
                 if(length(output) > max_len)
                {
                    print output;
                    output = "";
                }
                output = output " " $i;
            }
            
            print output;
        }
    }
    
    /-->/{
            print $0;
        }
    Ostatnio edytowane przez jhartman ; 14.02.2009 o 13:22 Powód: Wpisy zostały automatycznie połączone
    Szczęśliwy posiadacz MBP 2010 i Samsunga Galaxy S II. Do tego New iPad WiFi / 16
    ++ http://macos.jhartman.webd.pl ++

  3. Avatar jackolus
    Dołączył
    Jan 2008
    Skąd
    Kraków
    Postów
    252

    Cytuj | #3

    Skrypt działa - dzięki serdeczne, jestem zobowiązany

    ale jeszcze jedno pytanie:
    jak ustawić wartość zmiennej pliku wejściowego, tzn. w teorii:

    1) wybieram rzecz np. z okna findera
    2) pobierana jest ścieżka do wybranego pliku i podstawiana w miejsce X.srt pliku wejściowego
    3) automatycznie plik jest nadpisywany


    i tak odjąłeś mi kilkanaście minut pracy - ale wiadomo, człowiek chce więcej i dlatego trochę uciążliwym jest za każdym razem wklepywanie polecenia do terminala dla kolejnego pliku o specyficznej nazwie.


    czyli w zasadzie jak powiedzieć Automatorowi, żeby:

    a) Prośba o rzeczy Findera
    b) pobierz ścieżkę pliku
    c) zamień ścieżkę na nową zmienną (ARG1)
    d) uruchom skrypt powłoki

    awk -f ~/Desktop/foldLines.awk {ARG1} > {ARG1}

    wklejając tą samą ścieżkę w wejście i wyjście chyba nie powinien się pytać o nadpisanie (?)
    Ostatnio edytowane przez jackolus ; 15.02.2009 o 23:42
    Komputer: MacBook C2D 2.16Ghz 2Gb 500Gb+1TB; PowerMac G4 MD; PowerMac G4 AGP
    Telefon: HTC Sensation 32gb, iPhone 3G 16GB White

  4. Avatar jhartman
    Dołączył
    Jul 2007
    Postów
    637

    Cytuj | #4

    Nie testowane, ale to powinno wyglądać jakoś tak:



    (możesz zaznaczyć więcej niż jeden plik i przerobić je masowo)
    Szczęśliwy posiadacz MBP 2010 i Samsunga Galaxy S II. Do tego New iPad WiFi / 16
    ++ http://macos.jhartman.webd.pl ++

  5. Avatar jackolus
    Dołączył
    Jan 2008
    Skąd
    Kraków
    Postów
    252

    Cytuj | #5

    Automator działa jak marzenie - dzięki wielkie

    natomiast dopiero teraz zauważyłem, że skrypt awk robi ciekawostkę:

    - przenosi czasem bardzo długie zdania prawidłowo ale ZAWSZE ucina ostatnie słowo z kropką na końcu.

    dla porównania: (Unicode, stąd te znaczki)
    przed:

    Nie. Mam dla ciebie coŇ&#245; co pomoŇľe ci wygrańá jutrzejszy konkurs literowania.

    po:

    Nie. Mam dla ciebie coŇ&#245; co pomoŇľe ci wygrańá jutrzejszy
    konkurs
    Ostatnio edytowane przez jackolus ; 16.02.2009 o 14:19
    Komputer: MacBook C2D 2.16Ghz 2Gb 500Gb+1TB; PowerMac G4 MD; PowerMac G4 AGP
    Telefon: HTC Sensation 32gb, iPhone 3G 16GB White

  6. Avatar jhartman
    Dołączył
    Jul 2007
    Postów
    637

    Cytuj | #6

    Spróbuj podmienić

    Kod:
    for(i=1; i<NF; i++)
    na
    Kod:
    for(i=1; i<(NF+1); i++)
    Szczęśliwy posiadacz MBP 2010 i Samsunga Galaxy S II. Do tego New iPad WiFi / 16
    ++ http://macos.jhartman.webd.pl ++

  7. Avatar jackolus
    Dołączył
    Jan 2008
    Skąd
    Kraków
    Postów
    252

    Cytuj | #7

    prędkość odpisywania masz niesamowitą, kompetencje również

    wszystko działa - co prawda przy enterowanym zdaniu daje dwie spacje na początku każdej linijki ale w niczym to nie przeszkadza, więc wszystko jest w pełni funkcjonalne

    dzięki ogromne
    Komputer: MacBook C2D 2.16Ghz 2Gb 500Gb+1TB; PowerMac G4 MD; PowerMac G4 AGP
    Telefon: HTC Sensation 32gb, iPhone 3G 16GB White

Odpowiedz na ten temat