[]

BASH script ile random playlist oluşturma

Merhaba,
Şöyle bir sorunum var. Elimde birçok video dosyası var. Bu video dosyaları video001.MP4, video002.MP4, video003.MP4 …. şekline. Bu dosyaların yanında intro.MP4 ve outro.MP4 adında giriş-çıkış için kullanacağım 2 video dosyası da var.
Mpv adında video player kullanıyorum ve herhangi bir text dosyasını playlist olarak okuyabiliyor. Girdiyi şu şekilde istiyor;
Video001.MP4
Video002.MP4
….
Video045.MP4

Şimdi öyle bir BASH script istiyorum ki her çalıştırıldığında intro.MP4 dosyasını başa yazsın, ardından rastgele, belirlediğim miktarda video dosyasını altına eklesin ve son olarak outro dosyasını en sona yazsın ve bunu txt dosyası olarak kayıt etsin. Yani dosya içeriği şöyle olacak:

intro.MP4
Video002.MP4
Video013.MP4
Video008.MP4
….
outro.MP4

Bu konuda yardımcı olursanız çok sevinirim.

 
Linux kullanıyorsan (ki mpv kullanıyorsan muhtemelen öyledir:) shuf kullanabilirsin. Videoların bulunduğu klasörün adı "files" olsun mesela, bi üst directory'de:

ls files | shuf -n 10

Dersen, files klasöründen random 10 tane dosya adı döner sana.

Dosyaya yazmak için de:

echo "intro.MP4" && echo ls files | shuf -n 10 && echo "outro.MP4" >> myfile.txt
  • plutongezegendegilmi  (06.11.22 20:38:42 ~ 20:49:31) 
@plutongezegendegilmi, çok teşekkür ederim. kısmen başarılı oldum. şöyleki:
myfile.txt dosyasına yazabiliyorum ama dosya files klasörünün dışında olduğu için, videoplayer playlist dosyasındaki dosyaları üst klasörde arıyor. Dolayısıyla bulamadığı için videoları oynatamıyor. Ben de kulağı tersten tuttum biraz ama myfile.txt dosyasını "files" klasörünün içinde oluşturarak sorunu çözdüm. Tabii bu sefer myfile.txt dosyası da playliste eklendi ama bu şekilde çalışıyor. Intro ve outro dosyalarını da bir üst klasöre taşıdım.
Şöyle uzun bir komut silsilesi oldu.
touch myfile.txt && echo "../intro.m4v" >> myfile.txt && ls | shuf -n 10 >> myfile.txt && echo "../outro.m4v" >> myfile.txt

Çok teşekkür ederim tekrardan.
  • postnuka  (06.11.22 22:21:58) 
sed kullanarak text manipülasyonu yapabilirsiniz.

Misal shuffle'dan dönen her satırın başına "../" eklemek için:

echo ls files | shuf -n 10 | sed 's/^/..\//'

Veya işte benzer bi şekilde başa "./files" eklemek için:

sed 's/^/.\/files\//'
  • plutongezegendegilmi  (06.11.22 22:32:49 ~ 22:38:35) 
Harika oldu.
Bir bash script içine yerleştirdim hepsini. Şu şekilde oldu.
#!/bin/bash
echo "Create playlist"
touch myfile.txt && echo "intro.m4v" >> myfile.txt && ls files | shuf -n 10 | sed 's/^/.\/files\//' >> myfile.txt && echo "outro.m4v" >> myfile.txt
echo "Run mpv with the playlist"
mpv --fs --playlist=myfile.txt
echo "Delete playlist"
rm myfile.txt

Sonsuz teşekkürler.
  • postnuka  (06.11.22 23:02:47 ~ 23:21:25) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.