Wackelbildprotokollator: Unterschied zwischen den Versionen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche
(Der Seiteninhalt wurde durch einen anderen Text ersetzt: „Autohochladen auf Wackelbildblog per https://github.com/alexz-enwp/wikitools === Das derzeitige Skript === Es holt Bilder von zwei…“)
Zeile 4: Zeile 4:
 
Es holt Bilder von zwei Kameras (startet dazu zwei Threads), editiert das Wiki und lädt die Bilder hoch.
 
Es holt Bilder von zwei Kameras (startet dazu zwei Threads), editiert das Wiki und lädt die Bilder hoch.
  
<code>
+
[[Datei:trigger.py.txt]]
#!/usr/bin/python
+
import time
+
import pygame
+
import pygame.camera
+
import subprocess
+
import thread
+
import datetime
+
from pygame.locals import *
+
from thread import start_new_thread, allocate_lock
+
from wikitools import wiki
+
from wikitools import wikifile
+
from wikitools import api
+
from wikitools import page
+
import poster
+
 
+
num_threads = 0
+
thread_started = False
+
lock = allocate_lock()
+
analogVal = [1,3,37]
+
 
+
def update_wiki(bildL, bildR, analog):
+
    # create a Wiki object http://hackerspace-ffm.de/wiki/index.php?title=Wackelbildblog
+
    site = wiki.Wiki("http://hackerspace-ffm.de/wiki/api.php")
+
    site.login("wackelbildprotokollator", "dumm3teile")
+
    #print site.isLoggedIn()
+
 
+
    # Get blog
+
    wackelblog = page.Page(site, "Wackelbildblog")
+
    wikiblogtext = wackelblog.getWikiText()
+
 
+
    # Modify blog
+
    wbttarget = "<!--WBPInsertTarget-->"
+
    wbttargetstart = wikiblogtext.find(wbttarget)
+
    wikiblogtext_part1 = wikiblogtext[:wbttargetstart+len(wbttarget)]
+
    wikiblogtext_part2 = wikiblogtext[wbttargetstart+len(wbttarget):]
+
 
+
    # Add new entry
+
    wikiblogentry = "\n|-\n|<wackelbild src1=\"http://hackerspace-ffm.de/wiki/images/"
+
    wikiblogentry += bildL + "\" src2=\"http://hackerspace-ffm.de/wiki/images/"
+
    wikiblogentry += bildR + "\"></wackelbild>\n"
+
    wikiblogentry += "| " + str(analog[0]) + "\n"
+
    wikiblogentry += "| " + str(analog[1]) + "\n"
+
    wikiblogentry += "| " + str(analog[2])
+
    wikiblogtext = wikiblogtext_part1 + wikiblogentry + wikiblogtext_part2
+
 
+
    # Store blog
+
    wackelblog.edit(text=wikiblogtext)
+
 
+
    # Store pictures
+
    testImage = wikifile.File(wiki=site, title="Datei:"+bildL)
+
    testImage.upload(fileobj=open(bildL, "rb"), ignorewarnings=True)
+
    testImage = wikifile.File(wiki=site, title="Datei:"+bildR)
+
    testImage.upload(fileobj=open(bildR, "rb"), ignorewarnings=True)
+
 
+
    return 0
+
 
+
def hol_bild( cam_id, filename ):
+
    global num_threads, thread_started
+
    lock.acquire()
+
    num_threads += 1
+
    thread_started = True
+
    lock.release()
+
   
+
    if cam_id:
+
        print "0"
+
    pygame.camera.init()
+
    camlist = pygame.camera.list_cameras()
+
    cam = pygame.camera.Camera(camlist[cam_id],(640,480))
+
    if cam_id:
+
        print "1"
+
    cam.start()
+
    time.sleep(0)
+
    if cam_id:
+
        print "2"
+
    pic = cam.get_image()
+
    time.sleep(0)
+
    pic = cam.get_image()
+
    time.sleep(0)
+
    if cam_id:
+
        print "3"
+
    pic = cam.get_image()
+
    if cam_id:
+
        print "4"
+
    cam.stop()
+
    if cam_id:
+
        print "5"
+
    pygame.image.save(pic,filename)
+
    if cam_id:
+
        print "6"
+
   
+
    lock.acquire()
+
    num_threads -= 1
+
    lock.release()   
+
    return 0
+
 
+
subprocess.call("v4l2-ctl -d /dev/video0 --set-ctrl=brightness=120,contrast=10,saturation=150,exposure_auto=3,white_balance_temperature_auto=1", shell=True)
+
subprocess.call("v4l2-ctl -d /dev/video1 --set-ctrl=brightness=120,contrast=10,saturation=150,exposure_auto=3,white_balance_temperature_auto=1", shell=True)
+
subprocess.call("v4l2-ctl -d /dev/video0 --set-ctrl=brightness=120,contrast=10,saturation=150,exposure_auto=3", shell=True)
+
subprocess.call("v4l2-ctl -d /dev/video1 --set-ctrl=brightness=120,contrast=10,saturation=150,exposure_auto=3", shell=True)
+
 
+
#video0: 120 10 150 ,white_balance_temperature=57343
+
# WBPict_20140302214222.jpg
+
zeitstempel = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
+
bild_links  = 'WBPict_'+zeitstempel+'L.jpg'
+
bild_rechts = 'WBPict_'+zeitstempel+'R.jpg'
+
 
+
try:
+
    thread.start_new_thread( hol_bild, (0, bild_links, ) )
+
    thread.start_new_thread( hol_bild, (1, bild_rechts, ) )
+
except:
+
    print "Error: unable to start thread"
+
 
+
while not thread_started:
+
    pass
+
while num_threads > 0:
+
    pass
+
+
update_wiki(bild_links, bild_rechts, analogVal)
+
 
+
</code>
+

Version vom 5. März 2014, 00:25 Uhr

Autohochladen auf Wackelbildblog per https://github.com/alexz-enwp/wikitools

Das derzeitige Skript

Es holt Bilder von zwei Kameras (startet dazu zwei Threads), editiert das Wiki und lädt die Bilder hoch.

Datei:Trigger.py.txt