Gå til innhold

[Løst] Laste ned samtlige Lunch-striper fra Dagbladet


Anbefalte innlegg

Hei,

 

Jeg er ikke super rå på php men ville vise hvordan jeg fikk det til :)

$imageFolder = 'strip';        //Sett mappenavn
$prefix = 'strip_from_date';    // Sett prefiks, dette blir etterfulgt av datoen
$date = '2014-02-05';           // Startdato
$end_date = '2014-03-20';       // Sluttdato


$i = 0;
while (strtotime($date) <= strtotime($end_date)) {
    file_put_contents($imageFolder.'/'.$prefix.'_'.$date.".gif",file_get_contents('http://www.dagbladet.no/tegneserie/pondusarkiv/serveconfig.php?date='.strtotime($date).'&strip=lunch'));
    $date = date ("Y-m-d", strtotime("+1 day", strtotime($date)));
    $i++;
}

Edit:

 

Så i all hovedsak kan du laste ned alle strips ved å modifisere det litt. sånn som slik:

$imageFolder = 'strip';         //Sett mappenavn
$prefix = 'strip_from_date';    // Sett prefiks, dette blir etterfulgt av datoen
$strip = 'lunch';               // pondus, lunch, nemi, kellermannen, rocky, zelda, 
$date = '2014-02-05';           // Startdato
$end_date = '2014-03-20';       // Sluttdato


$i = 0;
while (strtotime($date) <= strtotime($end_date)) {
    file_put_contents($imageFolder.'/'.$prefix.'_'.$date.".gif",file_get_contents('http://www.dagbladet.no/tegneserie/pondusarkiv/serveconfig.php?date='.strtotime($date).'&strip='.$strip));
    $date = date ("Y-m-d", strtotime("+1 day", strtotime($date)));
    $i++;
}

Ok jeg kunne ikke la det stoppe der. Hvis du er en skikkelig røver etter disse stripene kan du laste ned alle sammen, legger ved hele fila. Testa den lokalt og den fungerer. Det er noen feilmeldinger siden den ikke finner alle bildene, raskt og skittent så deaktiverte jeg feilmeldinger.

 

Obs. Lag mapper som heter pondus, lunch, nemi, rocky, kellermannen, zelda. (se bilde)

<?php
error_reporting(0);
ini_set("display_errors", false);
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Strip stripper!</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
    </head>
    <body>
        <h1>Fetch those images plox!</h1>

<?php

$prefix = 'strip_from_date';    // Sett prefiks, dette blir etterfulgt av datoen
$date = '2014-02-20';           // Startdato
$end_date = '2014-04-20';       // Sluttdato

// Ikke rør under her
$strips = array('pondus','lunch','nemi','rocky','kellermannen','zelda');

while (strtotime($date) <= strtotime($end_date)) {
    foreach ($strips as $strip) {
    file_put_contents($strip.'/'.$prefix.'_'.$date.".gif",file_get_contents('http://www.dagbladet.no/tegneserie/pondusarkiv/serveconfig.php?date='.strtotime($date).'&strip='.$strip));
    $date = date ("Y-m-d", strtotime("+1 day", strtotime($date)));
    }
}
echo "Done!";

?>

    </body>
</html>

Jeg tar ikke ansvar for misbruk av denne koden.

post-102512-0-64933400-1395280579_thumb.png

post-102512-0-64135900-1395284243_thumb.png

Endret av JanTerjeRiisOttoJohansen
  • Liker 1
Lenke til kommentar
Videoannonse
Annonse

Hahaha, Windows. Vel, da suger det å være deg.

 

 

--

 

Python har wget libs, så du kan sikkert bruke det.

Eller PowerShell så trenger ikke TS installere noe som helst.

 

$endDate = Get-Date
$startDate = $endDate.AddDays(-7)
$unixEpoch = (Get-Date -Year 1970 -Month 1 -Day 1).AddHours(1)


$currentDate = $startDate
$webClient = New-Object System.Net.WebClient

while($currentDate -lt $endDate) {

    $timeStamp = [int]($currentDate - $unixEpoch).TotalSeconds
    $filename = "lunch-" + $currentDate.ToShortDateString() + ".jpg"
    $url = New-Object System.Uri "http://www.dagbladet.no/tegneserie/pondusarkiv/serveconfig.php?date=$timestamp&strip=lunch"
    Write-Host $url "->" $filename
    Try
    {
        $webClient.DownloadFile($url, $filename)
    }
    Catch
    {
        Write-Host $_.Exception.InnerException.InnerException.Message
    }
    $currentDate = $currentDate.AddDays(1)    
}
Jeg er ingen ekspert i PowerShell, så jeg har skrevet alt imperativt. Endret av GeirGrusom
  • Liker 2
Lenke til kommentar

 

Massiv fanboyisme her. +/- med alle platformer. Ikke kom å si Linux trumfer gjennom.

Jeg vil bare påpeke at det utelukkende har blitt diskutert et (massivt) minus her, intet mindre.

 

 

Ja (et ikke så massivt). For brukere i det hele tatt, og støtte for applikasjoner rundt hele verden, samt spill, så er Windows uten tvil vinneren.

 

Nå tar heldigvis selskaper fatt og satser på støtte på tvers av platformer, men linux er fortsatt ikke intressant nok for massene. Helst for utviklere og folk som William Wallace. Håper derimot det blir like god støtte for linux mtp alle spill og enkelte applikasjoner da jeg liker lite retningen Windows går i. Masse som støtter linux, men gjør det svært dårlig. Er på ingen måte motstander av Linux. Tvert i mot, men dine sneidige kommentarer som i grunn forteller at: "Linux er best. Alle andre er for tapere.", er så latterlige å lese, og ikke minst feilaktige, at det måtte kommenteres.

 

Anyway, sorry for derail. Ser jo ut til at du fikk ordnet problemet(?).

Lenke til kommentar

Ja (et ikke så massivt). For brukere i det hele tatt, og støtte for applikasjoner rundt hele verden, samt spill, så er Windows uten tvil vinneren.

Nåja. Kanskje på spillfronten.

 

Nå tar heldigvis selskaper fatt og satser på støtte på tvers av platformer, men linux er fortsatt ikke intressant nok for massene.

Dette er utrolig off topic, men når du tyr til dette bør du fikes forsiktig over ansiktet med en ørrett. Det er nemlig helt uvesentlig og et utrolig dårlig poeng å ta opp - faktum er nemlig at her hadde *nix userland (som er ganske portabelt) løst problemet, også for "massene". At massene, om de i det hele tatt hadde vært interessante, verken har behovet eller forstår at de har behovet har ingenting med saken å gjøre.

 

Lyc bruker vel open solaris anyhows.

Debian.
Lenke til kommentar
Ah, mente selvsagt 45-60 spørringer/iterasjoner, f.eks. fra koden lenger opp.

Dette er uansett ikke så ille,og når dagbladet ikke lagrer enn ca 14 dager tilbake.

Da laster man ned alt av tegneserier på et par min uten at server blir særlig belastet av den grunn.
Kan være en tanke å sette ett lite "sleep()" mellom hver iterasjon om man skal laste ned så mange striper på en gang,

Det er jo en måte og gjøre det på,si at dagbladet hadde flere år i arkiv med tegneserier,

så hadde sleep() vært en måte,men ikke ideelt.
Jeg bruker Scrapy på litt større jobber.
For gøy lager en til som tar ned alle tegneserier striper hver dag.
Nå bruker jeg innebygd scheduler i Python kjører en gang i døgnet,det kan nok være like hensiktsmessig og bruke Windows scheduler,Linux cron og kalle koden når man kun skal gjøre en oppgave hver dag.
from lxml.html import parse #http://lxml.de/
from datetime import datetime
from urllib import urlretrieve
import sched, time
import re

def cartoon_dagbladet():
    '''
    Parse dayliy cartoons from Dagbladet
    Give images correct name and date
    '''
    cartoons = ['Pondus','Lunch','Nemi','Kellermannen','Rocky','Zelda','Fagprat','Egil Olsen']
    for index, name in enumerate(cartoons, 1):
        tag = parse('http://www.dagbladet.no/tegneserie/').getroot()
        code = tag.xpath ('.//*[@id="content"]/div[{}]/div/a[3]/img/@src'.format(index))
        url = '{}{}'.format(tag.base, code[0])
        time_stamp = re.search(r'date=(\d+)', code[0])
        dates = datetime.fromtimestamp(int(time_stamp.group(1))).strftime('%d-%m-%Y')
        if name == 'Kellermannen':
            name_dates = '{} {}.jpg'.format(name, dates)
            urlretrieve(url, name_dates)
        else:
            name_dates = '{} {}.gif'.format(name, dates)
            urlretrieve(url, name_dates)
        schedule.enter(86400, 1, cartoon_dagbladet, ())

if __name__ == '__main__':
    schedule = sched.scheduler(time.time, time.sleep)
    schedule.enter(86400, 1, cartoon_dagbladet, ())
    schedule.run()
Endret av snippsat
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...