Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Hoe dit te automatiseren? (Helicopterview vraag)

Pagina: 1
Acties:

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 20-11 21:25
Nee, dit is niet het zoveelste topic over Pass me de code voor dit dat of Wat gaat er hier mis? Doe jij es debuggen, of whatever.

Idee is simpeler en leuker. Wat ik van jullie nodig heb, is jullie befaamde helicopter-view. De grote lijnen trekken. Welk pad ik moet volgen, welk gereedschap ik het beste kan aanwenden, om zelf te coden en zodoende mijn lering te trekken.

Enfin. Ik, een n00b, wil beginnen met programmeren. En dat is om mijzelf uit te kunnen dagen met een testcase. :Y.

Wat kan ik?

Enige ervaring met HTML/CSS en MySQL, en freelance aantal websites gebouwd.
Ingelezen in tutorials over PHP, Javascript en C#.
Gespeeld met Visual Studio.

Kortom, enige theoretische kennis. Maar 0,0 praktijkervaring. Daarom dit topic, om mijn kennis in kunde om te kunnen zetten.

Wat wil het geval?

Een andere hobby van mij, is het verzamelen van zoveel mogelijk plaatjes die mooi zijn.
Niet gewoon mooi, maar echt juweeltjes. Archief telt inmiddels 15k plaatjes, allemaal keurig gesorteerd. :Y).
Met VisualBasic heb ik een applicatie ontwikkeld, die de afbeeldingen uittrekt op fullscreen zonder Window of knoppen eromheen, wat je helaas met standaard Windows imageviewer hebt.
Met toetsenbord kun je dan door de afbeeldingen bladeren.
Met deze combinatie zullen kleine afbeeldingen sterk gepixeleerd worden, wanneer ze opgeschaald worden tot de maximale resolutie van de schermen. Zeker wanneer je een grote resolutie hebt (5140x1600 :7).

Geen nood, daarvoor heeft Google sinds vorig jaar een afbeeldingenzoeker. Je laadt een afbeelding in Google, en hij gaat dan op zoek naar meerdere websites die dezelfde afbeelding hosten.

Afbeeldingslocatie: http://www.google.nl/insidesearch/images/landing/searchbyimg-hero.jpg

Vervolgens kun je op meerdere resoluties zoeken. En dan is de eerste afbeelding meestal degene met de grootste resolutie. Dit verhelpt m'n probleem, mits er grotere resoluties voor te handen zijn.

Wat wil ik?

Met een archief van 15k plaatjes één voor één handmatig te doen, is dit vrij ondoenlijk. Kortom, dat wordt automatiseren!

Erover nagedacht, hoe ik dit het beste kan aanpakken. (8>.
[handeling 1]
Een batchscript schrijven in .BAT-formaat als shell.
Dit script opent meerdere schermen, waar de thuispagina Google afbeeldingen zal zijn. Dit vermindert de belasting om elke keer een commando te geven om naar Google te surfen. Vervolgens laadt de script een plaatje en stuurt het naar Google d.m.v. hex waarde van Enter.
Output ziet dan uit als volgt:

Afbeeldingslocatie: http://img818.imageshack.us/img818/861/58152497.png(Een voorbeeld).

Eenmaal afgerond, begint de script weer terug naar de eerste commando dat met een een increment verhoogd wordt zodat de volgende afbeelding weer geselecteerd wordt voor upload. Oneindige loop, ik breek het dan af wanneer ik zie dat-ie zover is.
[handeling 2]
Een ander script zal automatisch 'Alle formaten' klikken, en vervolgens met een pointer de eerste afbeelding selecteren die de grootste resolutie heeft. Dit wordt opgeslagen in een nieuwe map.
[handeling 3]
Vervolgens wordt de naam van een afbeelding in de map gewijzigd naar 1, en verhoogd met increment +. Dit zorgt voor dezelfde volgorde als de orginele geüploade afbeeldingen uit een andere map. Hierdoor kunnen ze handmatig 1 op 1 vergeleken worden om vast te stellen of de nieuwe afbeelding een verbetering is in resolutie en of het daadwerkelijk dezelfde afbeelding betreft (Google gaat hier soms de fout in). Daarvoor heb ik een php-script in gedachten.
PHP:
1
2
3
4
5
6
7
8
9
10
11
$afbeeldingnaam= uniqFile('outdir', '.png');
move_uploaded_file($_FILES['imagedata']['tmp_name'], $afbeeldingnaam);
function uniqFile($dir, $ext)
{   if (substr($dir, -1, 1) != '/')   {     $dir .= '/';   }

    for ($i=1; $i<999999; $i++)
    {  if (!is_file($dir . $i . $ext))
        { return $i . $ext; }
    }
    return false;
}
Mijn gedachten
Vooral over handeling 2 twijfel ik welke taal hiervoor aangewend moet worden. Ik zat te denken aan Javascript, omdat-ie herkent welke afbeelding als eerste geladen wordt.

Vervolgens moet het overgenomen worden door C#-toepassing, die het opslaat. PHP renamet het vervolgens in handeling 3 en slaat het vervolgens op.

Het kan heel goed dat ik met het opzoeken, uitdokteren, schrijven en het werkend krijgen van dit systeem langer mee bezig ben, dan handmatig alle afbeeldingen langsgaan voor een grotere resolutie. :').
Maar zo leer ik ook te programmeren, en daar gaat het uiteindelijk ook om, wel? B).

Hoe dit precies geïmplementeerd moet worden enz. dat is de vraag niet in dit topic (Alhoewel, daar ga ik jullie wel later mee lastig vallen in andere topics, mocht ik écht zelf niet eruit geraken. })) . De vraag is vooral welke gereedschap (de talen zelf) ik het beste kan aanwenden, om zoiets te fiksen en uit te dokteren. :?.

Ben een en al oor! :9.

  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
Ik denk niet dat google het leuk vind als je zomaar een paar duizend requests in hun image-search gaat automatiseren, daar hebben ze speciale regels voor.

Als je Google in software wil gebruiken, dan moet je daar hun API voor gebruiken.

  • Pepperoni
  • Registratie: April 2010
  • Laatst online: 21:11
Google custom search API is inderdaad leuker/netter dan de manier die je beschreef. Alleen zul je je wel wat moeten inlezen over het aanroepen van webservices en parsen van Json. Maar dat gaat in .net en waarschijnlijk alle frameworks vrij simpel. Lijkt me een leuke uitdaging voor je. (of wie weet zijn er al wel libraries voor gemaakt, dan moet je even zoeken) Enige nadeel is dat die api je maar max 100 queries per dag gratis geeft.

Oh ja, snap ook niet helemaal waarom je het opslaan in c# wilt doen en vervolgens het hernamen in php, dat maakt de boel nodeloos complex.

  • MrBrown
  • Registratie: Augustus 2000
  • Laatst online: 27-10 15:53

MrBrown

Reservoir Dog

Waar je wellich, als je niet via de API wilt werken, ook eens naar zou kunnen kijken is PhantomJS. Dit is een headless browser; een browser zonder GUI, die door middel van Javascript is te scripten. Je kan dus calls doen naar sites, en acties ondernemen met de resonse. Het is even uitzoeken, maar ik denk dat je ver komt.

Powered by Manetti (compiled by Jura)


  • Tarilo
  • Registratie: December 2007
  • Laatst online: 18-11 15:02
MrBrown schreef op maandag 25 maart 2013 @ 11:55:
Waar je wellich, als je niet via de API wilt werken, ook eens naar zou kunnen kijken is PhantomJS. Dit is een headless browser; een browser zonder GUI, die door middel van Javascript is te scripten. Je kan dus calls doen naar sites, en acties ondernemen met de resonse. Het is even uitzoeken, maar ik denk dat je ver komt.
Totdat Google doorheeft dat je wel erg veel requests per dag doet van dat IP en je een leuke brief stuurt. Het is natuurlijk niet zo heel moeilijk om verdachte gevallen op te sporen voor Google. Ze bieden netjes een API aan dus ik zie geen reden om die niet te gebruiken.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Tarilo schreef op maandag 25 maart 2013 @ 12:04:
[...]

Totdat Google doorheeft dat je wel erg veel requests per dag doet van dat IP en je een leuke brief stuurt. Het is natuurlijk niet zo heel moeilijk om verdachte gevallen op te sporen voor Google. Ze bieden netjes een API aan dus ik zie geen reden om die niet te gebruiken.
De grap van Javascript is dat het bij de client wordt uitgevoerd en je IP dus niet per definitie steeds hetzelfde is. Doet niet af aan het feit dat het niet netjes is overigens.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • MrBrown
  • Registratie: Augustus 2000
  • Laatst online: 27-10 15:53

MrBrown

Reservoir Dog

Tarilo schreef op maandag 25 maart 2013 @ 12:04:
[...]


Totdat Google doorheeft dat je wel erg veel requests per dag doet van dat IP en je een leuke brief stuurt. Het is natuurlijk niet zo heel moeilijk om verdachte gevallen op te sporen voor Google. Ze bieden netjes een API aan dus ik zie geen reden om die niet te gebruiken.
Eens, API is netter (en als je een beetje kan programmeren makkelijker). Zit trouwens wel een rate limit op de API van 100 queries per dag bij gratis versie.

Powered by Manetti (compiled by Jura)

Pagina: 1