Scripts, scripts en nog eens scripts

Door Mar2zz op dinsdag 9 augustus 2011 14:37 - Reacties (30)
Categorie: Headless onderhoud, Views: 10.086

Hieronder gooi ik al mijn Dropbox-scripts als links neer. Omdat je in dropbox niet lekker in mappen kan rondneuzen, maar alleen per bestand erbij kan (als je de link weet) gooi ik hier alles neer. Dus geen echte blog, maar wellicht wel handig voor als je eens een script zoekt ergens voor (of de code wilt gebruiken voor iets anders of gewoon om voor te lachen als je een echte programmeur bent).

Voor elk programma zip ik alle scripts die ik ervoor heb, zipje downloaden en uitpakken (wget http://dl.dropbox.com/u/18712538/Programmanaam.zip && unzip Programmanaam.zip in terminal) en klaar is kees. Bestanden die eindigen op .sh moeten nog executable gemaakt worden met sudo chmod +x om uitgevoerd te kunnen worden

Bovenstaande is niet meer relevant. Ik heb alle code ondergebracht in 1 script, die vervolgens met .deb-files of apt aan de slag gaat. Dat script is hier te downloaden. Het voordeel voor mij is makkelijker onderhoud, omdat ik maar 1 script hoef aan te passen als ik iets wil wijzigen. Ik ben vanwege gemak overgestapt op .deb-files voor installs.

Dit heeft voordelen voor eindgebruikers (met uninstallen bijvoorbeeld), daarom is het nu voor andere smaakjes *nux al niet meer te gebruiken. Debian, *buntu, Mint en wellicht andere Debian-deratives kunnen wel met dit script aan de slag. (als apt maar de packagemanager is).

Het script staat hier:
http://dl.dropbox.com/u/18712538/LaSi/LaSi.sh

In terminal
wget -O LaSi.sh http://dl.dropbox.com/u/18712538/LaSi/LaSi.sh && sudo chmod +x LaSi.sh && ./LaSi.sh


Alle oude scripts heb ik in 1 grote zip a 455Kb gestopt, die is hier te vinden:
http://dl.dropbox.com/u/18712538/old_LaSi.zip

Synology
* Installscripts voor:
Couchpotato
Headphones
Mediafrontpage
Periscope
Spotweb
Sickbeard
* init-scripts voor Couchpotato, Headphones en Sickbeard
* minimale ownsettings.php voor Synology-spotweb

Alles ineens:
Mocht je alle scripts (op een paar na) ineens willen grabben, gebruik dan git.

code:
1
git clone https://github.com/Mar2zz/LaSi.git


De git versies loop ik ook veel in te prutsen. Dropbox is betrouwbaarder, maar ik maak altijd veel kleine foutjes als ik iets aanpas, dus ook in Dropbox kunnen bestanden staan die het niet in 1 of 2x doen.

Deze linkfarm lost het hopelijk op dat ik niet elke blog over installs bij moet werken als er iets verandert is aan het programma of de scripts die ervoor nodig zijn. Als in een andere blog naar scripts verwezen wordt, of staat: plak dit in dat, download dan liever even de zip van het programma hierboven, pak het uit, pas het script even aan naar de eigen situatie met een editor en neem het dan in gebruik.

Tenminste, als je het helemaal zelf wilt doen, anders zou ik gewoon een LaSi(_syn).sh in gebruik nemen en die runnen. En mocht daar wat mee zijn, DM mij dan, gooi de terminal-output van het installatieproces van begin tot einde tussen code tags ([code] of [cmd]) en vraag me wat er aan de hand is. Hopelijk kan ik het dan fixen en hebben anderen die deze scripts gebruiken er ook weer wat aan.

Nu nog ff een cronjob verzinnen die automatisch de zip's bijwerkt als er veranderingen zijn en dan scheelt dat mij ook weer gedoe.

Volgende: Newznab 08-'11 Newznab
Volgende: Downloaden is legaal 08-'11 Downloaden is legaal

Reacties


Door Tweakers user TheNymf, dinsdag 9 augustus 2011 18:45

zo, ik zal ook eens een toevoeging doen... ik heb een script gemaakt (voor mijn Synology Ds111 NAS) wat elke dag via een cron job zoekt naar nieuwe gedownloade afleveringen, deze transformeert *met ffmpeg* naar een leesbaar formaat voor mijn Sony Bravia 32w5500. Overigens voegt hij het getransformeerde bestand toe aan de synology indexer.

note: Het transformeren van een xvid avi naar een mpeg2 duurt ongeveer 3 a 4 keer langer dan de duur van de film, en schiet qua grootte naar het 7-voudige.

Op deze manier hoef ik niet meer 'on the fly' te transcoden, want dat kan mn nas helemaal niet :9

goed, ik leg het uit voor mijn Synology. Sommige stappen zijn al 100^10 beschreven dus daar raas ik misschien wat snel doorheen.

- installler bootstrapper (voor ipkg)
- haal de nieuwe ffmpeg versie
- ipkg install cron
- maak een script 'findmovies.sh' met de volgende inhoud:

code:
1
2
#! /bin/sh
find /volume1/video/originals -type f \( -name "*.avi" -o -name "*.mkv" -o -name "*.vob" \)  -exec sh /volume1/scripts/tweedescript.sh "{}" \;


zoals je ziet kun je meer extensies toevoegen door -o -name te gebruiken

maak een tweede script:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash

#echo "$# parameters"
echo "starting transcode file: "$@" "

TARGET_DIR="/volume1/video/transcoded"

filename=$(basename "$1")
echo $filename
NEW_NAME="$TARGET_DIR"/"$filename".mpeg

ffmpeg -i "$1"  -vcodec mpeg2video -f mpegts -target pal-dvd -aspect 16:9 "$NEW_NAME"

synoindex -a "$NEW_NAME"



-voeg findmovies.sh toe aan /etc/crontab (restart crond vereist)


ik krijg dus een folder /volume1/video/originals met de originele files, en een folder /volume1/video/ transcoded/ met files compatible met mn xbox/bravia.

[Reactie gewijzigd op maandag 22 augustus 2011 08:42]


Door Tweakers user TheNymf, maandag 22 augustus 2011 08:45

Ik heb het tweede script iets aangepast, nu komt het niet meer voor dat ffmpeg met meerdere bestanden tegelijk bezig is, dit komt de duur niet ten goede :9


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

#echo "$# parameters"
echo "starting transcode file: "$@" "

#controleer of er niet al getranscode wordt 
proccount=`ps | grep "ffmpeg" | grep -v grep | wc -l`
#let op, de ` tekens zijn verplicht!!!

if [ "$proccount" -eq 0 ]
then

        TARGET_DIR="/volume1/video/transcoded"
        filename=$(basename "$1")
        echo "filename =  $filename"
        NEW_NAME="$TARGET_DIR"/"$filename".mpeg

        ffmpeg -i "$1"  -vcodec mpeg2video -f mpegts -target pal-dvd -aspect 16:9 $NEW_NAME

#voeg toe aan de syno DLNA index 
        synoindex -a "$NEW_NAME"

else
        echo "vorige ffmpeg actie is nog niet klaar"

fi



Ik moet er nog even een functie in bouwen dat hij het logged naar een file met timestamps ed. maar dit is geen secondewerk voor mij omdat ik geen linux ervaring heb.

[Reactie gewijzigd op maandag 22 augustus 2011 08:46]


Door Tweakers user Mar2zz, maandag 22 augustus 2011 08:50

Goed bezig :p

code:
1
echo "Start conversie: $(date)" >> /pad/naar/log.txt



en wat meer advanced:
http://tldp.org/LDP/abs/html/timedate.html

[Reactie gewijzigd op maandag 22 augustus 2011 08:50]


Door Tweakers user Joster, maandag 22 augustus 2011 08:53

Moet je die regel gewoon voor "fi" in het tweede script dumpen?

En doet de Syno ze nu 1 voor 1? (Dus 1 conversie per scan?). Als ik het goed begrijp wel, een wens is echter wel dat hij ze achter elkaar doet voor als ik ineens 5 bestanden moet converteren.. Of ik moet de crontab om het uur zetten. Dat is voor tijdelijk wel te doen maar niet ideaal i.v.m. in hibernate gaan van de HDD's.

[Reactie gewijzigd op maandag 22 augustus 2011 09:02]


Door Tweakers user Joster, maandag 22 augustus 2011 09:58

Mar2zz schreef op maandag 22 augustus 2011 @ 08:50:
Goed bezig :p

code:
1
echo "Start conversie: $(date)" >> /pad/naar/log.txt



en wat meer advanced:
http://tldp.org/LDP/abs/html/timedate.html
Bij periscope heb ik zoiets in mijn crontab staan:

/volume1/@appstore/periscope/periscope/scanPath.sh >>/volume1/@appstore/periscope/periscope/scanPath.log 2>&1


Kan dat ook niet voor dit?

Enne, script toevoegen aan crontab is toch gewoon /pad/naar/script/findmovies.sh (zonder de "cd")?

Door Tweakers user Mar2zz, maandag 22 augustus 2011 10:05

ja klopt, zonder cd. die echo $(date) kan overal, ligt eraan wat je wilt vastleggen. Het meest logisch is in het script boven om het voor ffmpeg-commando te doen. dan logt ie de datum/tijd van de start van het ffmpeg commando.

Door Tweakers user Joster, maandag 22 augustus 2011 10:16

Ok, maar dan acht net er voor? Dus tussen NEW_Name en ffmpeg in? Hoe weet hij dan dat hij de echo van vorige ffmpeg actie is nog niet klaar alsnog in de log moet plakken? Omdat het doel bestand van de log al bekend is?

Door Tweakers user Mar2zz, maandag 22 augustus 2011 11:30

Die achter else doet ie alleen als het process al aanwezig is. Als je dat ook met een datum wilt loggen dan doe je daar ook die echo bij. Dan heb je 'm 2x in je bestand zodat ie onder beide omstandigheden een log maakt.

Door Tweakers user Joster, maandag 22 augustus 2011 14:44

Oke, het is me nog niet helder maar allez :P

Hoe kan ik in een map "originals" ook scannen in mappen? Ik heb een paar mappen met categorieŽn waarin ik mijn films op de laptop sorteer, omdat het homevideo's zijn. Deze sync ik met de Syno onder Homevideos/originals/xxxxx/ En daar staat dan nog de file met zijn extensie achter. Nu scant ffmpeg in originals waar hij natuurlijk niets vindt omdat daar alleen mappen in staan. Als ik nu die map xxxxx ga toevoegen dan moet ik nog een paar findmovies scripts schrijven voor de andere mappen of wat? :D Het liefst heb ik dat hij scant in de map originals inclusief de submappen. Dan hoef ik ook niet steeds bij het toevoegen van een map in mijn originals deze map weer te gaan toevoegen in het findmovies script...

Door Tweakers user Mar2zz, maandag 22 augustus 2011 16:07

ja, dat is een beetje zoals het subtitlescript werkt. met find alle video's zoeken en dan ffmpeg aanslingeren.

Door Tweakers user Joster, maandag 22 augustus 2011 21:03

Ok thanks, even in dat script kijken :) Edit: hmm die werkt toch anders? Met "DIR" en "AGE" ?

Hier is trouwens wel wat te vinden omtrent het blijven scannen in de map:

http://www.linuxquestions...ng-my-bash-script-800450/

http://mywiki.wooledge.org/BashFAQ/089

Gaat iets boven mijn pet maar zou interessant kunnen zijn.

Dan nog een vraag, hoe kun je ffmpeg killen als je het niet zelf gestart hebt? Dus om te kijken of hij niet toevallig bezig is? Hij doet bij mij namelijk nog niets...


Edit 2: aaarghhh ik had de extensie in kleine letters in mijn find script staan terwijl ze in grote letters op de schijf staan!

Nu nog kijken of de cronjob werkt en of ik in subfolders kan zoeken met hetgeen van periscope. Mooier zou zijn dat hij dan het uiteindelijke bestand ook dumpt in een sub map als het bestand in een sub map staat zeg maar. Maar van dat soort zaken heb ik echt geen verstand eigenlijk.

Edit 3: Huhu, bij mij runt hij ze nu allemaal achter elkaar door :D kan ik nu gewoon mijn ssh client afsluiten en gaat hij dan gewoon door of wat? Als hij vast loopt hang ik misschien maar dat zie ik dan wel weer...

Edit 4: En nu is hij inderdaad nogsteeds aan het runnen! 2 vragen die ik me hierbij stel; 1). Hoe kan ik hem eventueel uit deze loop halen mocht hij aan de gang blijven? Ik log nu niet het bestand waar hij mee bezig is dus zien waar hij aan begonnen is gaat hem op dit moment niet worden helaas. 2). De verhouding tussen de bestandsgroottes van bestand (x) en (y) is origineel wel eens anders dan na het converteren, uiteraard worden ze met het script allen hetzelfde geconverteerd dus ik zou verwachten dat ook de verhouding van de bestandsgroottes in tact blijft..

[Reactie gewijzigd op dinsdag 23 augustus 2011 07:38]


Door Tweakers user Mar2zz, dinsdag 23 augustus 2011 08:08

Om te kijken of het al runt kun je ps greppen voor ffmpeg. Voorbeeld staat in het script van TheNymf als proccount.

Je kunt een proces starten in de achtergrond door er & achter te zetten in de terminal. Dan kun je de terminal sluiten zonder het proces te killen.

Uit de loop halen is killen. Met dat proccount kijken welk procesid (pid) hij heeft en dan kill 1234 (procesnummer).

De verhouding tussen verschillende bestanden is anders omdat voor scenes met veel kleuren en veel wisseling in de beelden hogere bitrates nodig zijn. Dit kan je voorkomen door een constante bitrate te gebruiken, maar als die niet hoog genoeg is gaan 'drukke' scenes in kwaliteit omlaag.

Door Tweakers user Joster, woensdag 24 augustus 2011 08:37

Bedankt!

Hmm als ik dat proccount draai dan doet hij helemaal niets, althans het script draaide niet (te zien aan mijn log) dus vandaar dat hij waarschijnlijk meteen weer terug kwam in "diskstation".

Toen met de hand het proces gestart: sh findmovies.sh &. En dan gaat ie alle filmpjes langs om te kijken of er al 1 van bestaat. Op het moment dat ik straks 200 filmpjes heb krijg je een elle lange log aangezien hij elk filmpje dus bekijkt :D

Killen is me nog niet gelukt omdat het proces met 20 filmpjes zeg maar te kort duurt als hij er geen hoeft te converteren, maar in ieder geval erg bedankt.

Ik zou echt eens al dit soort commando's (zelfs het starten en stoppen van mijn crontab ken ik nog niet uit mijn hoofd, moet dat eigenlijk ook als je een interval bijwerkt?) moeten noteren zodat ik er snel bij kan. Vooral bij de zaken die ik nog al eens gebruik :)

1 ding zou ik nog erg interessant vinden en dat is dat de nieuwe file zoals die in "transcoded" terecht komt voor in de naam de datum van aanmaken van het filmpje mee zou krijgen. Zit die in mijn mts file en kan ffmpeg die er uit halen of is dat onmogelijk?

[Reactie gewijzigd op woensdag 24 augustus 2011 08:37]


Door Tweakers user Mar2zz, woensdag 24 augustus 2011 09:20

https://www.linuxquestion...-it-creation-date-752694/

Aanmaakdatum is in linux blijkbaar niet bekend. Wel de laatste keer aangepast-datum.

Door Tweakers user Joster, woensdag 24 augustus 2011 09:48

Great, hoe vindt jij dat soort treads toch steeds zo snel :D

Er zitten nog wel meer dingen in dit lijntje die voor mijn interessant (zouden kunnen) zijn :)

Edit: ik krijg het volgende te zien als ik dit uitvoer:

DiskStation> for file in 14.MTS; do NEW_FILENAME=$(stat "$file" %y); echo mv "$file" "$NEW_FILENAME"; done
stat: can't stat '%y': No such file or directory
mv 14.MTS   File: "14.MTS"
  Size: 58914816        Blocks: 115072     IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 1182384     Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1024/   admin)   Gid: (  100/   users)
Access: 2011-08-22 08:58:17.000000000
Modify: 2011-02-21 17:27:52.000000000
Change: 2011-06-07 16:44:37.000000000


Hij zegt dat %y niet te vinden is, maar toch zie ik hier de Modify date. En dat is wel de datum die ik moet hebben, want toen issie geschoten :) Dus ergens wordt de juiste datum gevonden!

Probleem is alleen dat ik er nog totaal te weinig kaas van heb gegeten om te weten wat ik doe...

Edit 2: ah crap, dat is de datum en tijd van plaatsen van het filmpje op de pc, niet van "plaatsen op de camera", dus daar heb ik nog geen kont aan.

Edit 3: Nee met de eerste had ik toch gelijk. Dit probleem doet zich alleen bij 2 filmpjes voor en de rest staat gewoon op de datum dat hij gemaakt is, dat weet ik in ieder geval voor een aantal filmpjes zeker.

[Reactie gewijzigd op woensdag 24 augustus 2011 11:04]


Door Tweakers user TheNymf, maandag 5 september 2011 09:57

erhm, wat jullie aan het doen zijn weet ik allemaal niet hoor ^^

ik heb iig Notifo support toegevoegd met CURL, nu krijg ik dus een melding op mn android telefoon wanneer een transcode klaar is :) :)

ik post mijn 2 scripts wel eventjes opnieuw...!

findmovies.sh:

code:
1
find /volume1/video/originals -type f \( -name "*.avi" -o -name "*.mkv" -o -name "*.vob" \)  -exec sh /volume1/scripts/convert.sh "{}" \;



convert.sh

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/bash

#echo "$# parameters"
echo "starting transcode file: "$@" "

#controleer of er niet al getranscode wordt
proccount=`ps | grep "ffmpeg" | grep -v grep | wc -l`

if [ "$proccount" -eq 0 ]
then

        TARGET_DIR="/volume1/video/transcoded"
        filename=$(basename "$1")
        echo "filename =  $filename"
        NEW_NAME="$TARGET_DIR"/"$filename".mpeg

        ffmpeg -i "$1"  -vcodec mpeg2video -f mpegts -target pal-dvd -aspect 16:9 "$NEW_NAME"

        #send to notfo
      
curl -k -u thenymf:apikey \-d "to=TheNymf&msg=%22transcode+completed:$NEW_NAME%22&title=Greeting&uri=http%3A%2F%2Fwww.google.com%2F" \https://api.notifo.com/v1/send_notification

        #add to syno DLNA indexer
        synoindex -a "$NEW_NAME"

else
        echo "vorige ffmpeg actie is nog niet klaar"

fi



also, je mag het 2e script geen ffmpeg.sh noemen, want dan kom hij m tegen als thread!


ik heb het nog niet echt kunnen testen, ik gok eigenlijk dat hij telkens alle films die geconvert zijn geweest gaat blaaaaten. maar goed :)

overigens, als het niet werkt heb je spaties toegevoegd aan de notifo-regel, mag niet van libcurl dus...

EDIT: ik had dus het verkeerde script gepost -.-
edit2: ik had dus een testregel gepost -.- wauw wat een slechte ochtend. Maar goed

[Reactie gewijzigd op maandag 5 september 2011 11:44]


Door Tweakers user TheNymf, maandag 5 september 2011 10:02

Joster schreef op maandag 22 augustus 2011 @ 21:03:


Edit 4: En nu is hij inderdaad nogsteeds aan het runnen! 2 vragen die ik me hierbij stel; 1). Hoe kan ik hem eventueel uit deze loop halen mocht hij aan de gang blijven? Ik log nu niet het bestand waar hij mee bezig is dus zien waar hij aan begonnen is gaat hem op dit moment niet worden helaas. 2). De verhouding tussen de bestandsgroottes van bestand (x) en (y) is origineel wel eens anders dan na het converteren, uiteraard worden ze met het script allen hetzelfde geconverteerd dus ik zou verwachten dat ook de verhouding van de bestandsgroottes in tact blijft..
daarom doe ik het via een cron, 3x per dag. Als hij om een of andere reden blifjt hangen in een doorlopend script, dan is er geen manier om m te stoppen. qua HDD sleep is het allebei geen goede oplossing natuurlijk.
Ideaal zou zijn als je een postprocessing via SB of CP zou kunnen doen. Misschien eens een feauture request posten bij RuudBurger :)

Door Tweakers user Joster, dinsdag 27 september 2011 09:57

Ja, post processing van ffmpeg door Couch Potato bedoel je dan? Hehe dat zou vet zijn al twijfel ik er wel aan of dat voor mijn "homevideo's" een aparte map kan maken naast Series en Films. Dan zou je een soort apart ffmpeg to CP script moeten schrijven waarbij de post processing dan naar een andere doel map verloopt ofzo. Iig, ver boven mijn pet.

Maar als je die cron 3x per dag doet en hij is blijven hangen dan start ie toch niet opnieuw? Dan loopt ffmpeg immers nog en zal hij dus niet stoppen of opnieuw beginnen...

Notifo is voor mij toekomst, nu nog geen prioriteit (wel nice overigens, wil ik ook!). Ik zou graag de filmpjes willen voorzien van een datum waarop die gemaakt is (handig bij homevideo's, misschien moet ik het maar handmatig in Windows gaan doen als ik ze op mijn laptop zet, of middels een programma als Bulk Rename Utility) en ik zou graag mappen willen syncen zodat die vanuit de bron gelijk worden aan het doel (vakantie, verjaardag x, thuis, activiteiten, etc). Heb die vraag net gesteld op het forum maar was helemaal vergeten dat ik hier een draadje had waar ik veel over dit script bezig was geweest (sorry voor het kapen Mar).

Afijn, kan je hier op abonneren zodat je een mailtje krijgt als iemand reageert?

[Reactie gewijzigd op dinsdag 27 september 2011 10:07]


Door Tweakers user TheNymf, dinsdag 27 september 2011 15:29

hmm, wat jij wil staat hier helemaal los van xd

je wil metadata meeleveren bij filmpjes van jezelf. Dit moet je ook echt zelf doen...!?

wat je bedoeld met 'bron gelijk aan doel' is ook erg onduidelijk

overigens ben ik nu aan het bedenken hoe ik een loop kan maken die checkt of een PID draait (ffmpeg convert PID) welke gestopt moet worden als er een stream ffmpeg PID start (die van synology) want beide tegelijk zit er niet in :D

denk eraan om bij het starten van de convertacties een PIDfile te maken en deze uitlezen wanneer een loopje (die elke minuut ff checkt of er 2 ffmpeg threads zijn) de convert-actie een kill -SIGSTOP of een kill -SIGCONT kan geven

Door Tweakers user Joster, dinsdag 27 september 2011 17:04

Ja, dus dan zal ik zelf de namen moeten veranderen van de filmpjes (in Windows) als ik ze op mijn laptop zet. So be it dan. Renamen na conversie gaat wel werken maar niet met de aanmaak datum van het originele filmpje.

Bron gelijk aan doel bedoel ik als volgt:

Bron: mapnaam <Original> / <Homevideo> met daarin de mappen <Thuis> en < Vakantie > Daarin zitten per map video's met x naam.

Ik scan nu de map Homevideo en alle onderliggende mappen en die dumpt hij in de map < Transcoded> / <Homevideo>. Ik zou liever zien dat hij dan ook de mappen <Thuis> en <Vakantie> aanmaakt als hij zie dat die onder <Original> / <Homevideo> bestaan.

Dus een soort van sync tussen de mappen Original en Transcoded.

Hehe cool, mocht je updates hebben laat het me dan gerust weten!

Door Tweakers user Mar2zz, dinsdag 27 september 2011 18:04

@The Nymf:
Het probleem met spaties en curl/notifo kun je oplossen door de naam met sed even aan te passen:

code:
1
http_friendlyname=$(echo $name | sed "s/ /%20/g")


%20 is een spatie voor webadressen.

edit:
en curl kun je vervangen door wget -q --delete-after, wget staat op 99% van de linuxsystemen, curl is vaak nog weer apart installeren. (op ubuntu bijvoorbeeld niet default aanwezig).

[Reactie gewijzigd op dinsdag 27 september 2011 18:06]


Door Tweakers user TheNymf, woensdag 28 september 2011 23:56

okay, prima, hier een aangepast versie van de scripts (let op, ik ben gestopt met .mkv's te converteren, DSM3.2 kan dit transcoden/demuxen)


convert.sh:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/bin/bash

#echo "$# parameters"
echo "starting transcode file: "$@" "

#controleer of er niet al getranscode wordt
proccount=`ps | grep "ffmpeg" | grep -v grep | wc -l`
#in te bouwen: elke 5min checken of er een andere ffmpeg PID is, dan convert-PID #stopzetten. Wanneer klaar dan weer verdergaan.
#EDIT: hier ben ik op dit moment mee bezig,'nice -n 19' zou moeten werken
if [ "$proccount" -eq 0 ]
then
#original target
        TARGET_DIR="/volume1/video/transcoded"
#get name of file with extension
        filename=$(basename "$1")

#get the full path of the folder so it can be copied to destination
FOLDER_NAME="$( cd "$( dirname "$1" )" && pwd )"
#echo "folder name = $FOLDER_NAME"

#get the name of the folder
DIR=`basename "$FOLDER_NAME"`
#echo "DIR = $DIR"
#create the directory in the destination. If exists, skip
mkdir "$TARGET_DIR"/"$DIR"

#new name in destination will be:
NEW_NAME="$TARGET_DIR"/"$DIR"/"$filename".mpeg

#notify me that transcode is starting (debug for me
curl -k -u thenymf:apikey \-d "to=TheNymf&msg=transcode_begun&title=$filename&uri=http%3A%2F%2Fwww.google.com%2F" \https://api.notifo.com/v1/send_notification

#start the ffmpeg transcode with 'nice' lvl 19 so it will never decrease performance on other services
        nice 19 ffmpeg -i "$1"  -vcodec mpeg2video -f mpegts -target pal-dvd -aspect 16:9 "$NEW_NAME"
        #notifo send complete
        curl -k -u thenymf:APIKEY \-d "to=TheNymf&msg=transcode_completed&title=$filename&uri=http%3A%2F%2Fwww.google.com%2F" \https://api.notifo.com/v1/send_notif

#add the transcoded file to syno indexer
synoindex -a "$NEW_NAME"

else
        echo "Previous ffmpeg has not finished"

fi



Script pakt nu de naam van de folder waarin 'het' staat, en maakt deze ook aan en gebruikt hem als 'doelmap'.

findmovies.sh:

code:
1
2
3
#! /bin/sh

find /volume1/video/originals -type f \( -name "*.avi" -o -name "*.vob" \)  -exec sh /volume1/scripts/convert.sh "{}" \;



@joster je kunt mijn code wel eventjes aanpassen dat hij ipv 1 folder diep 2 folders diep moet kijken toch? Is eigenlijk niets meer dan 2x basename opvragen ipv 1 keer

[Reactie gewijzigd op woensdag 28 september 2011 23:58]


Door Tweakers user Joster, dinsdag 4 oktober 2011 13:51

Damn weer helemaal vergeten te kijken. Ik ga binnenkort eens aan de slag (als ik tijd heb) om de boel om te bouwen. Die notifo meldingen word ik ook wel vrolijk van, dat wil ik ook nog integreren voor SickBeard, CouchPotato, SAB en zo verder.

Ik ben nog steeds benieuwd wat er gebeurt als ffmpeg een keer blijft hangen, maar dat is tot nog toe niet gebeurd. Verder kan ik nog niet helemaal wijs uit wat je bedoelt met "ffmpeg PID" maar dat zal vast aan mij liggen. Converteren en stream tegelijk gebeurt bij mij overigens toch nooit dus dat zal niet zo'n probleem zijn.

Bedankt in elk geval :)

Door Tweakers user Joster, maandag 10 oktober 2011 13:12

@The Nymf: Notifo lijkt dood te zijn en alleen nog te bestaan tot dat ze de server kosten niet meer kunnen betalen. Heb je enig idee welke app dit zou kunnen vervangen (alsmede voor SickBeard, CouchPotato, Spotweb, etc) voor Android. Prowl zou dit ook moeten kunnen maar ik heb geen Iphone :(

Door Tweakers user TheNymf, woensdag 12 oktober 2011 09:41

http://blog.notifo.com/

je hebt gelijk, ontzettend dood :( maar goed, hij geeft zelf onderaan de pagina wat tips met evt. vervangende software. Dat maar eens proberen dan!

Door Tweakers user Joster, woensdag 12 oktober 2011 11:38

Maar, het werkt nog wel, Notifo. En laat Notifo nu juist de beste zijn voor Android!

Heb jij Notifo ook werkend met Spotweb en SAB of dat niet?

Door Tweakers user TheNymf, woensdag 12 oktober 2011 14:09

erhm, nee, ik gebruik spotweb niet, en ik zou niet weten waarvoor ik sab + notifo nodig heb.
Ik heb een alert wanneer een video 'gesnatched' wordt, en waar hij completed is.
Leek mij voldoende :D

Door Tweakers user Joster, donderdag 13 oktober 2011 15:32

Bij mij loopt de post processing van SAB naar CP nog al eens spaak, dus ik wil het graag weten wanneer een download voor SAB gereed is maar deze niet door komt in CP ;)

Door Tweakers user TheNymf, dinsdag 18 oktober 2011 17:13

Joster schreef op donderdag 13 oktober 2011 @ 15:32:
Bij mij loopt de post processing van SAB naar CP nog al eens spaak, dus ik wil het graag weten wanneer een download voor SAB gereed is maar deze niet door komt in CP ;)
hmm, dan zou ik misschien de oorzaak daarvan eens oplossen, ik heb er geen last van :?
sowieso zou ik er niet teveel tijd in steken, CP versie 2 komt er binnenkort aan, en ik verwacht een superpakket!

Door Tweakers user Paul.tjuh1986, maandag 28 november 2011 09:45

Iemand enig idee wat ik hier aan kan doen?


Servename> ./LaSi.sh
env: bash: No such file or directory

Ik kan het script niet uitvoeren.
Ook niet met: sh LaSi.sh
Hierbij krijg ik:
LaSi.sh: line 151: syntax error: unexpected "("

[Reactie gewijzigd op maandag 28 november 2011 11:32]


Reageren is niet meer mogelijk