Wackelbildprotokollator: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „Autohochladen auf Wackelbildblog per https://github.com/alexz-enwp/wikitools“) |
Tut (Diskussion | Beiträge) |
||
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 5. März 2014, 00: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.
- !/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)
- 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)