Programm für automat. Downloaden und umbenennen

Hallo Leute.

Da ich in anderen Foren keinen Erfolg hatte, hab ich mich mal hier angemeldet, auch wenn man 24h warten muss, bis man freigeschaltet wird :wink: Aber vielleicht sagt das ja was über die Qualität hier aus…

Zu meiner Frage:

Ich möchte ein Programm schreiben, welches von einer Internetadresse (Netzwerkintern, wenn möglich auch extern) von einer Webcam die man leider immer mit Rechtsklick aktualisieren muss, eine automatische aktualisierung und speicherung der Bilder vornehmen, um sie anschließend in einem Programm zu einem Film zusammen zu fügen. Bitte nicht nachfragen wozu der Umstand, es hat seinen Sinn, der aber recht schwer zu erklären ist.

Um es mit meinem billigem, gebrochenen Programmierlatein zu erklären müsste wohl so eine ähnliche Schleife rauskommen:


var i

i=1
for i

Hallo,

Kann mir jemand vielleicht sagen, ob das überhaupt geht

Ja, mit VB kein Problem, mit C++ geht alles, was ein Computer kann. :smile:

und
falls, welche Programmiersprache ich da am besten verwenden
sollte… also eher c+, vb oder java?

Geschmackssache. Was kannst Du schon, welche Entwicklungsumgebung hast Du? Mit VB6 geht das IMHO schnell.

Und was noch hilfreich
wäre, der code für das Downloaden/Speichern von einer seite
und das umbennen…

ähhmmmm, in welcher Programmiersprache? So schnell, daß ich mal eben den Code so hin schreibe, geht es nun auch wieder nicht. Du mußt Dich schon erst für eine Programmiersprache entscheiden, Dir die Entwicklungsumgebung installieren, dann in’s passende Brett gehen … und dann bekommst Du auch die passende Hilfe beim Code. :smile:

Gruß, Rainer

hallo stubenhocker

gefühlsmässig ist das ein klarer fall für perl

use LWP::Simple;

$i = 0 ;
while ($i 


nur so mal als vorschlag. problem ist, dass eine sekunde gewartet wird anstatt nur eine viertelsekunde. ausserdem ist der sleep-aufruf über system auch sehr unsauber. aber die perl-freaks hier werden sicher eine bessere lösung finden.

lg
erwin

wichtiger nachtrag
ach ja, mein proggy geht in eine endlosschleife, wenn der download nicht funkt. haben sicher alle programmierprofis sofort bemerkt. je nachdem, was du haben willst, wäre also ein

...
if ($ret != 200) {
 die "der download hat nicht geklappt!" ;
...

sinnvoller…

lg
erwin

asche auf mein haupt…
muss eigentlich auch klappen

 sleep (1);

schäm, schäm - man sollte halt doch mal die perl-referenz durchlesen…

lg
erwin

und nochmal…
zum warten von einer viertel sekunde;

select(undef, undef, undef, 0.25);

lg
erwin

Also erst mal danke für Eure Antworten! Vor allem so schnell ^^
Also da ich von Perl überhaupt gar keine Ahnung hab und Erwin meinte, daß es mit VB leicht ginge, würde ich mal VB bevorzugen. Da ich Software über die UNI beziehen kann, würde ich mir wohl „Visual Studio Professional“ installieren.

( hätte noch Visual Studio.NET Professional & Visual FoxPro zur Auswahl)

Zu Rainer’s Frage, welche Sprache ich kann… keine so richtig :confused: Ich hab mal ein paar Makros programmiert, aber meist per aufnehmen und abändern. C++ hab ich mal teilweise gehört, aber aus Zeitgründen nicht weiter verfolgt.
Mein Problem besteht also darin, dass ich nicht die Zeit habe VB zu lernen. Vor allem solche speziellen Dinge zu finden wie, download und umbenennen, was für mich wahnsinnig kompliziert klingt. Die Form der schleife und das drum herum würd ich so noch hinkriegen. Auch wenn das der Traum wäre, aber ich erwarte natürlich nicht, dass mir hier jemand das komplette Programm aufschreibt. Ich wär glücklich, wenn mir jemand zB den code für das download und umbenennen schreiben könnte…

gruß
stub3nhock3r

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

na wenn Du VB6 noch bekommst (wird nicht mehr verkauft) dann wird das kein Probelm. VB ist auch leicht zu lernen und wenn Du schon mal ein Makro gesehen hast und auch weißt, was eine Form ist, ist das Programm fast schon fertig. Ich freu mich dann schon mal auf Deinen Besuch im Brett VB und bereite schon mal etwas vor … :smile:

Gruß, Rainer

sag mal wofür steht denn in Zeile „if $ret != 200“ die Zahl 200 ?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

sag mal wofür steht denn in Zeile „if $ret != 200“ die Zahl
200 ?

der http-server gibt bei einem http-get als returnwert „200“ zurück, wenn alles ok gegangen ist und z.b. „404“ wenn die seite nicht existiert. ist im http (hypertexttransferprotokol) definiert.

lg
erwin

*beleidigt dreinguck*
was genau hast du gegen perl?? ist gratis, extrem mächtig, auf fast allen plattformen verfügbar und vergleichsweise leicht erlernbar (solang man sich auf die grundfunktionen beschränkt).

http://www.activestate.com/store/productdetail.aspx?..

statt dessen das kostenpflichtige vb studio zu installieren ist etwas overkill - vor allem, da du schon eine funktionierende perl-lösung gepostet bekommen hast.

aber wenn du meinst - viel spass mit vb

lg
erwin

Hallo,

was genau hast du gegen perl?? ist gratis, extrem mächtig, auf
fast allen plattformen verfügbar und vergleichsweise leicht
erlernbar (solang man sich auf die grundfunktionen
beschränkt).

http://www.activestate.com/store/productdetail.aspx?..

statt dessen das kostenpflichtige vb studio zu installieren
ist etwas overkill - vor allem, da du schon eine
funktionierende perl-lösung gepostet bekommen hast.

aber wenn du meinst - viel spass mit vb

ich muß Dir beipflichten, auch wenn der Vorschlag VB von mir war. War ja vor Deinem Beitrag.

Also ich kenne mich mit Perl gar nicht aus, ich kann Deinen Code auch nicht ansatzweise lesen, das wäre mir zu cryptisch. Ich muß aber neidlos zugeben, daß der Code sehr kompakt aussieht, mit VB wird das doch deutlich länger. Ich hab’s in VB auch fertig. So sieht das aus:

Option Explicit

Private binarybuffer() As Byte
Private mode As Integer
Dim n As Long
Dim fn As String

Public Sub GetRESOURCE(ByVal WWW\_Adresse As String)
 On Error GoTo GetRESOURCEERR
 Dim fnum As Long
 Inet1.Execute WWW\_Adresse

 While Inet1.StillExecuting
 DoEvents
 Wend

 If UBound(binarybuffer) - LBound(binarybuffer) + 1 \> 1 Then
 fnum = FreeFile
 Open fn For Binary Access Write As #fnum
 Put #fnum, , binarybuffer()
 Close #fnum

 ReDim binarybuffer(0)

 End If

 Exit Sub

GetRESOURCEERR:
 MsgBox (Err.Description)
 Resume Next
End Sub

Private Sub Command1\_Click()
 Timer1.Enabled = True
End Sub

Private Sub Command2\_Click()
 Timer1.Enabled = False
End Sub

Private Sub Inet1\_StateChanged(ByVal State As Integer)
 If State = icResponseCompleted Then
 Dim binbuf() As Byte
 Dim s1 As String, s2 As String
 binbuf = Inet1.GetChunk(1024, icByteArray)

 If LBound(binbuf) 0 Then \_
 MsgBox (Inet1.ResponseCode & " : " & Inet1.ResponseInfo)
End Sub

Private Sub Form\_Unload(Cancel As Integer)
 Inet1.Cancel
End Sub

Private Function LastPath(ByVal Path As String) As String
 Dim aa As String, BB As String
 Dim x As Long

 For x = Len(Path) To 1 Step -1
 aa = Mid$(Path, x, 1)
 If aa = "/" Or aa = "\" Then
 Exit For
 Else
 BB = aa & BB
 End If
 Next x
 LastPath = BB
End Function

Private Sub Timer1\_Timer()
 n = n + 1
 fn = "C:\Bild" & Right("00000" + Trim(Str(n)), 5) & ".bmp"
 Call GetRESOURCE(Text3.Text)
End Sub

Nun kannst Du Dich über VB beschweren. Ich find’s leicht lesbar und übersichtlich.

Gruß, Rainer

Hallo,

nur so mal als vorschlag. problem ist, dass eine sekunde
gewartet wird anstatt nur eine viertelsekunde. ausserdem ist
der sleep-aufruf über system auch sehr unsauber. aber die
perl-freaks hier werden sicher eine bessere lösung finden.

Naja, das

system("sleep 1");

kann man getrost durch

sleep 1

erstzen. Und wenn man eine höhere Auflösung will, hilft einem perldoc -f sleep auch mit dem Verweis auf Time::HiRes:

use Time::HiRes qw(usleep);
...
usleep(250000); #schläft 250000 Mikrosekunden

Grüße,
Moritz

hi Rainer

keine sorge - ich will keinen sinnlosen religionsstreit losbrechen. ich selber progrmmiere sehr viel in vba (und auch sehr gerne) und teilweise auch vbs. an perl stört mich schon hin und wieder die recht eigenwillige syntax. aber in manchen bereichen ist perl nun mal unangefochten die nummer eins. und dort setze ich dann voll auf perl.

lg erwin

ps: und das mit dem besser lesbar ist relativ - perl-freaks haben meinen code vermutlich auf einen blick durchschaut. wohl auch desshalb, weil ich für perl-verhältnisse viel zu leicht lesbaren code schreibe. ein perl-hacker hätte vermutlich das selbe ergebniss in 30 % des codes geschrieben…

OT Perl/VB ist mir wurscht, aber können sie etwas?
Hallo Rainer, Erwin, Andere,
kann denn VB oder Perl aus einem fest vorgegebenem (Url ist immer fest, es gibt dann bei jedem Einloggen eine SessID aberd ie kann ich ermitteln) Chatfenster das ein Frame von 5 anderen ist auf der Webseite, den laufend aktualisierten Text Mitlesen, Auslesen und per Knopfdruck den Text, bzw die Chatzeilen auflisten die zwischen einer Chatzeile die Alt-255 o.ä. enthalt und der Chatzeile die „obendrüber“ ist und auch Alt-255 enthält?
Können auch andere Erkennungszeichen sein.
Wenn das unklar ist, wir machen da Quizze, ich würde gerne alle Antworten die zwischen Fragestellung und Stop liegen als Liste haben, damit es die Quizfragenauswerter einfacher haben als mit fließendem Text.
Und in derFragestellung und dem Stop sind halt die Erkennungszeichen.
Weiterhin gbt es auf der Seite ein Framefensterchen mit einer Eingabezeile und einem „Senden“-Button. Wie kann ich da direkt in das eigentliche Chatfenster etwas senden so al ob ich in die Eingabezeile etwas schreibe, dann auf Senden klicke.

Ist mein Herzenswunsch da ne Lösung zu finden. Ich kann nur VBa, wenn überhaupt. Aber z.B. , jetzt für den 2ten Wunsch, eine VB löung wo ich in VBA ein in VB erstellte exe starte und der als parameter a) den zu senden Text und b) die jewilige Frameadresse mitgebe wär schon Klasse.
K.A. wie das mit Perl geht.
Auch im erten Fall wäre das ähnlich, ich gebe der Exe die Fragestellung mit, sie knallt sie ins Chatframe, wartet bis manuell „Stopp“ kommt und präsentiert dann die Liste aller Antworten in der Zwischenzeit zwischen Frage und Stopp.

Ist das machbar?
Danke ^ Gruß
Reinhard

hi Reinhard

antwort auf deine frage: kommt drauf an

ohne die seite zu kennen, kann ich nur mutmassen, ob und wenn ja, wie schwer es realisierbar ist.

  • frames sollten kein problem sein, da der inhalt eines frames ja wieder nur eine „normale“ html-seite ist. es sollte nur der url der internen seite bekannt sein und diese seite sollte direkt ansprechbar sein.

  • sofern der text halbwegs im standard-html daherkommt, sehe ich keine probleme. blöd ist es nur, wenn da zu intensiv mit javascript gewerkt wird. dann wird es kompliziert.

ansonsten ist es mit perl 08/15:
use LWP::Simple;
$url = „http://was.auch.immer.de/chat/inhalt.html“;
$html = get($url);
if ($html =~ /##(.*?)##/) {
print „$1\n“ ;
}

der inhalt des urls wird in die variable $html geladen. dann wird nach text, der durch ## eingeschlossen ist, gesucht (z.b. nach ##test##). der text zwischen den ## wird dann ausgegeben.

ist jetzt natürlich sehr primitiv. und wie gesagt, ohne deine seite zu kennen ist es schwer, eine vernünftige lösung anzubieten. aber ich denke, das prinzip ist klar.

lg
erwin

Hallo Reinhard,

klar, VB kann natürlich statt dem Bild auch den Text lesen.
So schon kurz wie mit Perl geht das mit VB aber nicht. Um das mit VB hin zu bekommen brauchst Du schon etwas Routine, als Anfänger stolperst Du über alles mögliche und das Programm wird viel zu langsam.

Gruß, Rainer

Hallo Erwin, Rainer,
danke für euer Interesse,
die Seite ist kein Geheimnis, es ist http://www.kilahu.de
Bin seit einigen Jahren dort und noch nie kam auf meine Emailadresse die ich bei der Anmeldung angab irgendwelcher Spammüll.
Nach dem Einloggen sieht man so rechts die Liste mit „Raumnamen“. Um mal mitzukriegen wie sich irre Kids ausm Pott so miteinander unterhalten ist Raum „Bochum“ wärmstens zu empfehlen :smile:
Je nach Füllung oder Abfüllung ist auch der Raum „bar“ sehr geeignet zur Mitmenschenkunde.
In den Räumen bin ich nicht, immer nur im Raum „Podium“, den gibt es aber erst immer abends ab 22:30. Da laufen werktags meistens, Freitag/Samstag quasi immer, Quizze, von einem der Anwesenden geleitet, also dem Frager, ein andrer wertet die Punkte mit.
Und der Werter benutzt dazu eine uralte 1,5MB große Exceltabelle die alle „Stammgäste“ haben, bzw jeder bekommen kann.
Wir freuen uns immer auf neue Gesichter die gerne mitquizzen und besonders wenn sie nach einiger Zeit eigene Quizze (20 Fragen) einbringen.
Nun ist die Tabelle schon soweit dass per Buttonklick die Fragewertung des Werters in der Zwischenablage ist, aber als Werter muss man dann in der Eingabezeile erst noch den Cursor reinsetzen weil durch diese mistigen Meldungen in dem Frame darunter der Fokus oft weg ist. Dann Strg+V und Enter bzw auf „Senden“ klicken.
Der Job des Werters ist sehr hart, ich komme da sehr ins Schwitzen.
Ich habs mal durchgerechnet, irgendeine Lösung, egal VB, Perl, die bei Klick auf den Button in Excel ausgelöst wird und „an“ das Chatfenster sendet ersparte dem Frager und dem Werter zusammen so ca. 400 Klicks pro 20-Fragen Quiz.
Falls ihr probieren wollt mir da was zu basteln was uns dort sehr helfen würde, nach dem Einloggen ist oben eine Eingabefeld, dort einen beliebigen Raumnamen vergeben und auf „Gehe“ o.ä. klicken.
Dann ist amn in diesem Raum. Am besten dann gleich „/l“ für locked eingeben, dann stolpert keiner rein und man hat Ruhe zum Testen.
In dem genannten Frame unter der Eigabezeile wird schon bald eine Meldung über einen dieser mistigen w-w-wler erscheinen der eure Hütte besucht hat. Danach ist blöderweise der Fokus aus der Eingabezeie verschwunden.
w-w-w ist in diesem Fall negativ gemeint, bezieht sich auf die 5 W’s-TypInnen die dir anstatt Hallo zu sagen im ersten Kontakt entgegenhämmern, Wie alt, wie heißt Du, Woher, Wann können wir uns sehen *Nachzähl*, irgendein W habe ich vergessen.

Durch diese o.g. Tabelle kam ich überhaupt erst auf Excel vor 4 Jahren, also eine Lösung liegt mir sehr am Herzen.
Danke für das Interesse ^ Gruß
Reinhard

[MOD] bitte zurück zum Thema…
Hallo,

ist ja alles schön und gut, aber bitte kommt zurück zur Beantwortung der Ausgangsfrage (wisst ihr das Thema noch?) oder eröffnet einen neuen Thread, sonst muss ich die Offtopics abschließen. Danke! :smile:

Bye,
Rudy

Möchte den Tread hier nicht weiter verhunzen ^^ aber einwas wollt ich noch anmerken. Wenn es nämlich irgendwie möglich wäre, dann würd ich mIRC benutzten (oder in WEbsite integrieren). Dafür gibts nicht nur automatische Quizbots, sondern die werten auch sofort aus. Wer war wie schnell, wer is grad Nr. 1 usw.

Gruß
Stub3nhock3r

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]