webForumDet fria alternativet

Hämta undertexter

Programmeringur Script - Övrigt

1 svar · 12 718 visningar · startad av sThorn

Medlem sedan apr. 20117 inlägg
Frågan#1

Tjena, tänkte dela med mig av ett script som jag använder mig själv mycket av.
Med detta så laddar man ner undertexter från undertexter.se

Ladda ner och spara som text.py
sedan kör ni det med:
$ ./text.py vantage point
http://pastie.org/1786404

PS.
Eugen som driver sidan tycker inte om detta och gillar att byta ut länkar för att jävlas..

hoppas att det hjälper någon :)

Medlem sedan aug. 20039 340 inlägg
#2

Du får gärna klistra in skriptet här. Vem vet vad som händer med Pastie om fem år? :)
Nean har jag använt doldis-taggen highlight med Python-färgning:

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import sys, urllib, os, re
"""
get_text.py
Detta script hämtar en undertext's filen från undertexter.se
./get-text.py <sökterm>
ex:
./get-text.py johan
./get-text.py house md s05e17
"""
def filter_page():
    """
    Filtrerar fram möjliga resultat från hemsidan,
    och returnerar dessa som tupler i form: (id, url)
    """
    #ut = "http://undertexter.se/?p=arkiv&cat=" + '%20'.join(sys.argv[1:])

    ut = "http://www.undertexter.se/?p=soek&add=arkiv&str=" + '%20'.join(sys.argv[1:]) + "&submit=S%F6k&select2=&select3=&select="

    webtext = urllib.urlopen(ut).read()
    first = webtext.find('Serielistor')
    last = webtext.rfind('function jump')
    newtext = webtext[first:last]
    textlist = []
    rawtextlist = newtext.split('\n')
    [textlist.append(line.strip()) for line in rawtextlist]

    hits = []
    hits.append(('Ingen av dessa.',0))
    iter = len(textlist)
    i = 0
    while i < iter:
        if 'href="http://www.undertexter.se/?p=undertext&id=' in textlist[i] and textlist[i][0:2] == "<a":
            hits.append((textlist[i+10][:-5], "http://www.undertexter.se/laddatext.php?id=" + re.search('id=([0-9])*', textlist[i]).group(0)[3:]))
        i +=1
    return hits

def get_textfile_url(hits):
    """
    Frågar användaren vilken rls som den vill ladda ner.
    0 betyder att man vill avbryta.
    """
    i = 0
    for item in hits:
        print "[" + str(i) + "] " + item[0]
        i +=1
    return hits[int(raw_input("Vilken rls? "))][1]

def down_load_sub(url):
    """
    Tar en url och laddar ner filen.
    """

    if url:
        a = urllib.urlopen(url)
        url = a.geturl()
        a.close()
        urllib.urlretrieve(url, url.rsplit('/')[-1])
        print 'Laddade ner' ,url.rsplit('/')[-1]

if __name__ == "__main__":
    result = filter_page()
    choice = get_textfile_url(result)
    down_load_sub(choice)
132 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
128 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)