Wackelbildprotokollator: Unterschied zwischen den Versionen

Aus Hackerspace Ffm
Zur Navigation springen Zur Suche springen
K
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
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.zip]]
#!/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):
+
[[Kategorie:Projekte]]
    # 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>
 

Aktuelle Version vom 8. April 2014, 19:56 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.zip