Wackelbildprotokollator: Unterschied zwischen den Versionen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „Autohochladen auf Wackelbildblog per https://github.com/alexz-enwp/wikitools“)
 
Zeile 1: Zeile 1:
 
Autohochladen auf [[Wackelbildblog]] per https://github.com/alexz-enwp/wikitools
 
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.
 +
 +
<code>
 +
#!/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 4. März 2014, 23:22 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.

  1. !/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 = ""
   wbttargetstart = wikiblogtext.find(wbttarget)
   wikiblogtext_part1 = wikiblogtext[:wbttargetstart+len(wbttarget)]
   wikiblogtext_part2 = wikiblogtext[wbttargetstart+len(wbttarget):]
   # Add new entry
   wikiblogentry = "\n|-\n|\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)

  1. video0: 120 10 150 ,white_balance_temperature=57343
  2. 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)