Dagens Kommando: Snapshots via kommando.
Jag brukar få lite roliga idéer för mig emellanåt. Idag fick jag för mig om att jag ville finna ett sätt att ta snapshots med min inbyggda webcam. Varför? Jo, dels ville jag ha det bara för att jag kan och dels för att jag skulle göra ett Cron-jobb som skulle köras vid en fast tid varje dag.
Tänkte att det kunde vara kul och se vad som föregick framför webcamen. Om jag var där då, hur mycket växer mitt hår, mitt försök till skägg osv.
En fullständigt onödig grej, helt enkelt. Men ändå roligt. Och, som sagt, för att jag kan - GNU/Linux.
Efter lite googlande så fann jag precis det som jag ville ha gjort och efter lite lekande så hade jag en färdig produkt. Nu dyker vi in i det!
Vi ska dels installera ett paket som sköter fotningen, sen ska vi anpassa det så att det passa ens webcam, bruk, osv.
1. Börja med att installera paketet streamer, som sköter tagningen av bilderna. Och libnotify-bin för att kunna göra egna Notify OSD-meddelanden.
$ sudo apt-get install streamer libnotify-bin
2. Nu kan vi börja att testa om streamer kan fånga något. Kör kommandot och kolla i din hemmapp efter filen snapshot.jpeg.
$ streamer -o snapshot.jpeg
3. Som standard fotar streamer i 640x480, vilkt är lite litet. För att ändra till det som du vill ha, lägger du till parametern 's' och väljer upplösning. Tex 800x600:
$ streamer -s 800x600 -o snapshot.jpeg
4. Eftersom jag vill ta en bild varje dag, vid en satt tidpunkt, så får inte filnamnet vara konstant. Då kommer bara den gamla filen skrivas över hela tiden. Därför kan man leka med några variablar. Jag valde att ha datum och tid i mitt filnamn:
$ streamer -s 800x600 -o $(date +\%Y\%m\%d\ \%H:\%M).jpeg
Nu får filen tex. namnet: 20100527 20:56.jpeg
5. Jag ville ju ha så att detta kördes vid en fast tid varje dag, och dessutom ge mig en notifiering när en bild är dagen. Detta använder man Cron till och min rad för Cron ser ut som så:
0 16 * * * DISPLAY=:0.0 streamer -s 800x600 -o "/home/daniel/Bilder/Snapshots/$(date +\%Y\%m\%d\ \%H:\%M).jpeg" & notify-send -i cheese "Snapshot" "$(date +\%Y\%m\%d\ \%H:\%M).jpeg saved."
Kommandot kommer att köras var dag klockan 16:00.
Lägg till en rad i Cron igenom att köra kommandot nedan och klistra in:
$ crontab -e
Nu kan vi även passa på att förklara vad det hela gör!
0 16 * * *
Säger att kommando kommando ska köras minut 0, timma 16 och varje dag, varje vecka, varje år. Det är det som Cron följer.
DISPLAY=:0.0
Cron körs inte som din användare och har därmed inget X igång (ingen bild, bara terminal). Därför måste man säga till Cron att det ska köras på en skärm. I detta fall den första.
streamer -s 800x600 -o "/home/daniel/Bilder/Snapshots/$(date +\%Y\%m\%d\ \%H:\%M).jpeg"
Tar en bild och sprar den i mappen Snapshots som finns i min bildmapp, i min hemmapp.
&
Säger att följande kommando ska köras samtidigt.
notify-send -i cheese "Snapshot" "$(date +\%Y\%m\%d\ \%H:\%M).jpeg saved."
Visar en notifiering med ikonen för Cheese, titeln Snapshot och med filnamnet och "saved" som innehåll.
That is it!
Det finns dock massor med annat kul som man kan göra med detta.
Man kanske vill kunna ta en bild med webcamen igenom ett knapptryck, men utan grafisk vetskap? Lägg till streamer-kommandot i snabbtangenter.
Eller ta en bild vid varje felaktig inloggning? (Ska jag kolla upp.)
Eller om man vill kolla till sommarstugan (som är utrustad med en dator, cam och internet)?
Man kan också filma med streamer, om man så skulle vilja. Kolla hjälpfilen.








Lägg till ny kommentar