[Ubuntu] Hulp nodig met Cronjob (command 'touch')

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Muncher
  • Registratie: Maart 2009
  • Laatst online: 21-09 00:41
Ik ben bezig om een volledige geautomatiseerde NAS op te zetten. Dit is grotendeels al gelukt voor TV afleveringen, maar wil ook graag nog wat opzetten voor films. Ik volg daar voor deze tutorial, geschreven door een medetweaker. http://mar2zz.tweakblogs....cope-s-subliminal%21.html. Mijn volgende uitdaging is om het automatiseren van Nederlandse ondertiteling goed te krijgen. Ik gebruik hiervoor het programma Subliminal, welke ik automatiseer via een cronjob.

Ik wil a.) 'verouderde' bestanden niet worden meegenomen en b.) subtitle sites niet te vaak lastig vallen met mijn query's

Om a.) te bereiken heb ik de volgende crontab draaien:

0 */8 * * * subliminal "parameters"

Hiermee poll ik via subliminal 1x per 8 uur de servers, lijkt me acceptabel.

Ik kom niet helemaal uit b.). Ik wil graag dat subliminal zoekt naar ondertiteling voor films, maar niet voor films die al langer dan een maand op mijn hardeschijf staan. Om de bestanden de juiste timestamp te geven, wil ik graag dat elk bestand dat word binnengehaald word bewerkt met 'touch'. Echter, wanneer de cronjob draait, moet hij niet de bestanden meenemen die al voorzien zijn van een correcte timestamp (aka die al touch hebben gehad). Anders krijgen alle bestanden in een bepaalde map (bijv. /films) dezelfde timestamp, waardoor sublimininal blijft zoeken naar ondertiteling van deze films. Kortom:

Hoe kan ik een cronjob schrijven die bepaalde bestanden 'touch' geeft, terwijl hij bestanden die al bewerkt zijn, overslaat? Ik heb al ff wat Google gedaan, maar kom er alsnog niet uit.

Alternatief zou kunnen zijn om het .py script aan te passen waar de films doorheen gaan als ze zijn gedownload. Echter, ik zou niet weten wat ik erin zou moeten zetten (ben niet thuis in python).

Acties:
  • 0 Henk 'm!

  • webfreakz.nl
  • Registratie: November 2003
  • Laatst online: 21-08 15:56

webfreakz.nl

el-nul-zet-é-er

find . -type f -mtime -31 -print0 | xargs -0 bash script_naar_subtitle_site.sh 


Dit geeft je bestanden jonger dan 31 dagen.

En je zal waarschijnlijk het een en ander in verschillende mappen moeten plaatsen?

"You smell that, son? What sir? Napalm, I love the smell of napalm in the mornin!" || Children of Bodom fan!


Acties:
  • 0 Henk 'm!

  • Muncher
  • Registratie: Maart 2009
  • Laatst online: 21-09 00:41
webfreakz.nl schreef op dinsdag 15 januari 2013 @ 21:43:
find . -type f -mtime -31 -print0 | xargs -0 bash script_naar_subtitle_site.sh 


Dit geeft je bestanden jonger dan 31 dagen.

En je zal waarschijnlijk het een en ander in verschillende mappen moeten plaatsen?
Dat was snel, thanks. Films komen terecht in de map /Films/FILMNAAM. Dus hij moet recursive meepakken ja. Of was dat niet wat je bedoelde?

Acties:
  • 0 Henk 'm!

  • Whieee
  • Registratie: Augustus 2001
  • Laatst online: 30-09 19:25

Whieee

Moderator Apple Talk

⌘ + ⌥ + ⎋

Dit zorgt overigens wel voor 1 run van het bash script, per file. Ik weet niet precies hoe het script werkt, maar ik kan me voorstellen dat het qua resources (en HTTP connecties) fijner is als het script maar 1 keer draait en dan gewoon een lijst files afwerkt. Wanneer je subliminal een file kan laten uitlezen zou je iets kunnen doen als:

DISCLAIMER: onderstaand script is uit de losse pols neergegooid, en dus niet getest ;)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env bash

C_MOVIEDIR="/path/to/moviedir"
C_SUBLIMINAL="/path/to/subliminal" 
C_MYINFILE="/tmp/bla-subliminal"

# Controleer of alle variabelen geldig zijn voor onze toepassing
if [[ -d ${C_MOVIEDIR} ]] && [[ -x ${C_SUBLIMINAL} ]] && [[ -w $C_MYINFILE ]]; then

# zoek alle films die minder dan een maand oud zijn en schrijf de lijst weg in een file
find ${C_MOVIEDIR} -type f -mtime -31 > ${C_MYINFILE}

# voer subliminal uit met als input de lijst die we net gemaakt hebben -- 
# note: ik ken de syntax niet
${C_SUBLIMINAL} -argumentje ${C_MYINFILE}

else
  echo "Variabelen niet correct gedefinieerd"
  exit 1

fi

exit 0


Een nadeel van deze aanpak (en alle andere tot nu toe besproken aanpakken) is dat voor elke film die je download dus een maand lang naar subs gezocht wordt. Het zou geen kwaad kunnen om de lijst die je met het find-command opbouwt uit te dunnen, door ook te kijken naar subs die je reeds binnen hebt.

[ Voor 3% gewijzigd door Whieee op 15-01-2013 22:02 ]

Launching containers into space