Random news downloader (first script!)

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Kim

    #1

    Random news downloader (first script!)

    Random image downloader for specified newsgroup. Hi I'm writing a small script that will download random images from a specified newsgroup. I've imported yenc into the script but I can't open the image or save it. This is my first script so be gentle!

    Heres the script


    ####random group downloader####
    import nntplib
    import string, random
    import mimetools
    import StringIO
    import rfc822
    import sys, base64
    import os
    import email
    import errno
    import mimetypes


    SERVER = "news.server.co .uk" #Insert news server here
    GROUP = "alt.binaries.p ictures.blah" #newsgroup will go here

    # connect to server
    server = nntplib.NNTP(SE RVER)

    resp, count, first, last, name = server.group(GR OUP)

    for i in range(10):
    try:
    id = random.randint( int(first), int(last))
    resp, id, message_id, text = server.article( str(id))
    except (nntplib.error_ temp, nntplib.error_p erm):
    pass # no such message (maybe it was deleted?)
    else:
    break # found a message!
    else:
    raise SystemExit

    text = string.join(tex t, "\n")
    file = StringIO.String IO(text)

    msg = mimetools.Messa ge(file)

    #display message information
    #print "File type", "=>", msg.gettype()
    #print "Encoding", "=>", msg.getencoding ()
    #print "plist", "=>", msg.getplist()

    message = rfc822.Message( file)

    for k, v in message.items() :
    print k, "=", v

    file = message.fp.read ()

    def yenc_decode(fil e):
    # <i>find body</i>
    while 1:
    line = file.readline()
    if not line:
    return None
    if line[:7] == "=ybegin":
    break
    # <i>extract data</i>
    buffer = []
    while 1:
    line = file.readline()
    if not line or line[:5] == "=yend":
    break
    if line[-2:] == "\r\n":
    line = line[:-2]
    elif line[-1:] in "\r\n":
    line = line[:-1]
    data = string.split(li ne, "=")
    buffer.append(s tring.translate (data[0], yenc42))
    for data in data[1:]:
    data = string.translat e(data, yenc42)
    buffer.append(s tring.translate (data[0], yenc64))
    buffer.append(d ata[1:])
    return buffer
    #the following should write to a text file
    #inp = ("file","r")
    #outp = open("text.txt" ,"w")
    #for line in file:
    #outp.write(lin e)
    #print file
    #outp.close()



    --------------= Posted using GrabIt =----------------
    ------= Binary Usenet downloading made easy =---------
    -= Get GrabIt for free from http://www.shemes.com/ =-


Working...