Skrypt mkvmerge m2ts do mkv

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
dedito
Moderator
Posty: 2624
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Re: Skrypt mkvmerge m2ts do mkv

Post autor: dedito » 14 września 2018, 18:17

dedito pisze:
14 września 2018, 09:41
Czyli wywołanie skryptu będzie:

Kod: Zaznacz cały

nazwa_skryptu lokalizacja_poszukiwan lokalizacja_sciezki_dzwiekowej lokalizacja_wyjsciowa
W skrypcie argumenty będą dostępne pod $1, $2, i $3 co sobie możesz przepisać do lepiej identyfikowalnych zmiennych, co dodatkowo uczyni kod bardziej uniwersalnym, nie będzie większego problemu przejść na inne metody parametryzacji, przykładowo:

Kod: Zaznacz cały

Lokalizacja_poszukiwan = $1
lokalizacja_sciezki_dzwiekowej = $2
lokalizacja_wyjsciowa = $3
Poczytaj http://bash.0x1fff.com/zmienne-specjalne
Nie pchaj tam finda czy innych poleceń, to użyjesz w dalszej części skryptu.

Awatar użytkownika
szlejk
Posty: 96
Rejestracja: 23 marca 2011, 22:48
Lokalizacja: Warszawa

Re: Skrypt mkvmerge m2ts do mkv

Post autor: szlejk » 14 września 2018, 18:40

Coś w tym kierunku?

Kod: Zaznacz cały

#!/bin/bash
######################################################
# Skrypt ma za zadanie automatycznie przekonwertować #
# plik m2ts do pliku mkv z wybraną ścieżką dzwiękową #
######################################################

Lokalizacja_poszukiwan="$1"
lokalizacja_sciezki_dzwiekowej="$2"
lokalizacja_wyjsciowa="$3"
echo "To jest sciezka wyszukiwania: $(find /home/szlejk -name "*m2ts")"
echo "To jest lokalizacja sciezki dzwiekowej: $lokalizacja_sciezki_dzwiekowej"
echo "To jest lokalizacja wyjsciowa: $lokalizacja_wyjsciowa"

Awatar użytkownika
dedito
Moderator
Posty: 2624
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Re: Skrypt mkvmerge m2ts do mkv

Post autor: dedito » 14 września 2018, 19:44

echo dałem tylko do celów testowania (poczytaj do czego służy polecenie echo).
W komendzie find użyj zmiennej $Lokalizacja_poszukiwan, taki jest sens tej zmiennej abyś ją przekazał jako zmienną specjalną $1 w miejsce /home/szlejk.
Inaczej będziesz zawsze szukał w /home/szlejk, a nie o to chodziło, miał być wybór lokalizacji poszukiwań.

Awatar użytkownika
szlejk
Posty: 96
Rejestracja: 23 marca 2011, 22:48
Lokalizacja: Warszawa

Re: Skrypt mkvmerge m2ts do mkv

Post autor: szlejk » 15 września 2018, 16:34

Nie bardzo rozumiem jak skrypt ma wiedzieć gdzie szukać

Kod: Zaznacz cały

#!/bin/bash
######################################################
# Skrypt ma za zadanie automatycznie przekonwertować #
# plik m2ts do pliku mkv z wybraną ścieżką dzwiękową #
######################################################

Lokalizacja_poszukiwan="$1"
lokalizacja_sciezki_dzwiekowej="$2"
lokalizacja_wyjsciowa="$3"

find $Lokalizacja_poszukiwan -name "*m2ts" -print0

Awatar użytkownika
dedito
Moderator
Posty: 2624
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Re: Skrypt mkvmerge m2ts do mkv

Post autor: dedito » 15 września 2018, 18:23

Podajesz to przy wywołaniu skryptu jak to już pisałem:

Kod: Zaznacz cały

nazwa_skryptu lokalizacja_poszukiwan lokalizacja_sciezki_dzwiekowej lokalizacja_wyjsciowa
, bardziej obrazowo:

Kod: Zaznacz cały

nazwa_skryptu /sciezka/poszukiwan /sciezka/do/sciezki/dzwiekowej /sciezka/gdzie/ma/zapisac/skonwertowany/plik
Tak dla pewności powtórzę jeszcze raz, testy skryptu rób gdzieś w katalogu testowym i z konta użytkownika (nie root).

Awatar użytkownika
szlejk
Posty: 96
Rejestracja: 23 marca 2011, 22:48
Lokalizacja: Warszawa

Re: Skrypt mkvmerge m2ts do mkv

Post autor: szlejk » 16 września 2018, 16:08

Kod: Zaznacz cały

./m2ts2mkv.sh /home/szlejk/Wideo/MKV/ /home/szlejk/Wideo/ /home/szlejk/Wideo/
wynik

Kod: Zaznacz cały

To jest sciezka wyszukiwania: /home/szlejk/Wideo/MKV/
To jest lokalizacja sciezki dzwiekowej: /home/szlejk/Wideo/
To jest lokalizacja wyjsciowa: /home/szlejk/Wideo/


Awatar użytkownika
dedito
Moderator
Posty: 2624
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Re: Skrypt mkvmerge m2ts do mkv

Post autor: dedito » 16 września 2018, 17:40

No i dobrze, teraz sobie wykorzystaj te zmienne w poleceniach konwertujących.

Awatar użytkownika
szlejk
Posty: 96
Rejestracja: 23 marca 2011, 22:48
Lokalizacja: Warszawa

Re: Skrypt mkvmerge m2ts do mkv

Post autor: szlejk » 19 września 2018, 17:36

Jak przy pomocy find odnaleźć największy plik m2ts

Kod: Zaznacz cały

#!/bin/bash
######################################################
# Skrypt ma za zadanie automatycznie przekonwertować #
# plik m2ts do pliku mkv z wybraną ścieżką dzwiękową #
######################################################

Lokalizacja_poszukiwan="$1"
lokalizacja_sciezki_dzwiekowej="$2"
lokalizacja_wyjsciowa="$3"

#echo "To jest sciezka wyszukiwania:$Lokalizacja_poszukiwan"
#echo "To jest lokalizacja sciezki dzwiekowej:$lokalizacja_sciezki_dzwiekowej"
#echo "To jest lokalizacja wyjsciowa:$lokalizacja_wyjsciowa"

find "$1" -name "*m2ts"

Kod: Zaznacz cały

./m2ts2mkv.sh /home/szlejk/Wideo/ /home/szlejk/Wideo/ /home/szlejk/Wideo/MKV/
/home/szlejk/Wideo/MKV/Ochroniarz/BDMV/STREAM/00000.m2ts

Awatar użytkownika
dedito
Moderator
Posty: 2624
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Re: Skrypt mkvmerge m2ts do mkv

Post autor: dedito » 19 września 2018, 20:03

Masz to w skrypcie, który znalazłeś:

Kod: Zaznacz cały

# Find the biggest .M2TS file, usually the movie
   BIGST_M2TS=`find . -type f | xargs ls -1S | head -n 1 | rev | cut -c 6- | rev`
aczkolwiek ten komentarz do linii kodu nie jest precyzyjny, gdyż jeśli dobrze to analizuje składnia find w tym przypadku szuka największego pliku, niekoniecznie musi to być .M2TS.
Druga sprawa, że taka metoda szukania największego pliku nie jest raczej zbyt dobra i poszukałbym lepszego rozwiązania np. takiego:

Kod: Zaznacz cały

find $1 -maxdepth 1 -name "*.M2TS" -printf "%f\n"|sort -nr|head -n1

Awatar użytkownika
szlejk
Posty: 96
Rejestracja: 23 marca 2011, 22:48
Lokalizacja: Warszawa

Re: Skrypt mkvmerge m2ts do mkv

Post autor: szlejk » 20 września 2018, 09:37

A czy mogę prosić o opisanie co dokładnie za co odpowiada w tej części kodu?

Kod: Zaznacz cały

-maxdepth głębokość
 Schodzi maksymalnie o głębokość (nieujemna liczba całkowita) poziomów katalogów od argumentów  wiersza  poleceń.

-maxdepth 0
 oznacza, by testy i akcje stosować tylko do argumentów wiersza poleceń.

ODPOWIEDZ