Advertisement
Guest User

Untitled

a guest
Oct 3rd, 2010
363
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.67 KB | None | 0 0
  1. import urllib, urllib2, cookielib, sys, re, copy, os, urlparse
  2. from BeautifulSoup import BeautifulSoup
  3.  
  4. cj = cookielib.CookieJar()
  5.  
  6. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
  7.  
  8. opener.addheaders.append(('User-agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.X.Y.Z Safari/525.13.'))
  9.  
  10. imggetter = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
  11. imggetter.addheaders = [("User-agent",'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.X.Y.Z Safari/525.13.'),
  12.                             ("Connection","keep-alive"),
  13.                             ('Accept','application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
  14.                             ('Accept-Encoding','gzip,deflate,sdch')]
  15.  
  16. login_data = None
  17.  
  18. def ShowFrog(saystuff):
  19.     print "-------------------------"
  20.     print "                        "
  21.     print "                   +++++              "
  22.     print "                 +++++7 MM            "+str(saystuff[0:30])
  23.     print "   ++++++       ++++++7               "+str(saystuff[30:60])
  24.     print " +++++7MM  ++++++++++++++++++         "+str(saystuff[60:90])
  25.     print " +++++7    +77+++++++++++M+++++      /"+str(saystuff[90:120])
  26.     print "77++++77777+++++++++++MM++++++++++    "+str(saystuff[120:150])
  27.     print "77++++++++++++++++++++++++++???????   "
  28.     print "77++++++++++++++?????????~~~~~~~~~~~  "
  29.     print "7+++++++++++???~~~~~~~~~~~~~~~~~~~~~  "
  30.     print "7+++++++++???~~~~~~~~~~~~~~~~~~~~~~~~ "
  31.     print "77+++++??~~~~~~~~~~~~~~~~~~~~~~~~~~~~ "
  32.     print "77++???~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  "
  33.     print "777+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~++  "
  34.     print "7777~~~~~~~~~~~~~~~~~~~~~~~~~~~~+777  "
  35.     print "7777777~~~~~~~~~~~~~~~~~~+++++++++++++"
  36.     print "7777777777777777++++++++++++++++++++++"
  37.    
  38. def ShowHammered():
  39.     print "                    ...............................                            "
  40.     print "                    ...............................                            "
  41.     print "                    ...............  ..............                            "
  42.     print "               . ................=IIII7=..............        HAVE A NICE      "
  43.     print "                ........=7MMMMND$+:,:,,IDNMM$+. ..,...            DAY          "
  44.     print "               .   .,8MMMM7+,,:::::::::::,,:ZNMM:.....      /                  "
  45.     print "        .......,.8NNZ.,:,::::::::::::::,~,~,,:,,=M7.,........                  "
  46.     print "        ..,.,..~M8=,,~::::::::,::,,:~,::,,,:::::,:Z=.........                  "
  47.     print "        ....,.M8,:,:::,:,:::::,::,,:,,,N~II,,:~::::OM,.......                  "
  48.     print "     .. ...,NM,,,:::,::,::,:::::::::::,:8DNZ::,::~::I+. ...., . ...   .        "
  49.     print "       ....O$,:::::::::::,::::,,:::::::::,$=:+O=,:,:,...ZMNM?=.. . . .         "
  50.     print "       . .M8:,::::::,$DNDO7?+=::~~:::~~::O~~~IZMN$ZONMZ,..... .,8: ,..         "
  51.     print "     . .,IZ,,,:::::,::::$I$ZOO$Z8MMMMMMN8~,~7::.Z7NZ.,.......  . =N. .         "
  52.     print "........MD,:,::,N:~:,MN..............+D+~I:+:$:~:M+............,...$.N~N~.,...."
  53.     print ".......,N~::,,::,M+:=D.:.........,.=..:==:77+~??I7............,I,..D.8,,O~,...."
  54.     print "..... .N~,~,,,:::+M.8?............7O:.,D::~+~,:+D?............MM+..77::,M+....."
  55.     print ".......M:,::,:::,,DI?N.................Z=7++:+??MM~..............,:87,:,M=....."
  56.     print "......~Z::::::::,=N:,+NM=..,.........NZ=~:I:=:I~NMMD~..,.........M7,,::~I......"
  57.     print "......O~,::,::::=M8,:,,?MMMNDD8DDDMMO78D:I:~~$:~:MMOM8~,..,:~?8NO,,=:~,M......."
  58.     print ". ...MM,::,+MMM8+,7MN?::::,,~++$N8Z$$O=:Z+=:7==,7~IDDODMOZ~,,:~:::,+OM7. . .   "
  59.     print ".....MD,::,:,,,,~,:,IMMZ,,,,:~?II??=?,~~~:==~~,:=:,I=~:=,,::,:,:7MMDDZ,..      "
  60.     print ".....MN:::::~:,,~,,,:,~NMN$+,,:,~+?~,?I?,~~::~~~~~::~~:,,,:+8MMM$....:M....    "
  61.     print ".....MM,:,::::::::::::::,,:+MMMNMZOI?~,,::,::,:,,,:?$MMMD$:..,DM.......Z  ,    "
  62.     print ".....NM.,::::::::::::::::::,MD..+7DMMNMMMDMMMMMMMMMO?,,+D,..,.?N8M$,,7N..,.    "
  63.     print "~+.,.=M$,,::::::::::,:::::,,:O$.:.~=I7.,.?=... .8MM:.:.IIDMZ:.MO...,... ....   "
  64.     print ",,,,~.ZM:::::::::::::::::::,,,DNNMN,.MM,$MMN,...$.IMD:=M,?,78O.........,..     "
  65.     print "=:~I+,,M7,~:::::::::::::::::::,,:::,:,,,:::,7NO?::::,,,:O$...                  "
  66.     print ".I,~.?:ZN$::::::::::::::::::::,::::::,,,:,~,~::,,~::~:,Z?....                  "
  67.     print ",,7.:,7:7MI:,::::::::::::::::::::::::::=MNNZ+:,:,:,7NMI,.....                  "
  68.     print "=?,:~I,::ZMD:~::::::::::::::::::::::::::,,~+ZDNMM8D:,7.......                  "
  69.     print ".,,+:.,~+,~N=:~:::::::::::::::::::::::::,,,::,,:,,~DM........                  "
  70.     print "??D887~~,,.+IM::,:::::::::::::::::::::::,:::::~::N8..........                  "
  71.     print "MOI+I$O8DDMM~:NM,,~::~::,:,::,:::::::,,,:::::,~ZM,....................         "
  72.     print ",~~:::::::,,,~MD,MN:~,:,~,::::::::::::~:,,IOMM,..=7O88O:,,.............        "
  73.     print "::,::::::::~:~,,O+M.IMMN8$I=::::,,,,:=?NMM8+,=ND7,,,,,,=MN:,.,,,.......        "
  74.     print ":~:::::::~::,:::::ONO::,,,~+I7$$$OM77D7+I~,:,:::::::::::,,,,DN+,:......        "
  75.     print "$ZZ$O,,.:,::::::,,,~Z,~,:::::::,:MI~O:~+,:::::::::::::::::,::,$N~......       "
  76.     print "~~:?==,7Z,,::::::,::.M$,,::::::,N~=O+:,:::::::,,,,,,:::,:::::~$=,....        "
  77.     print ",,:::,~,$M:,:,,:::::~:$~::::::,:N=.,,:,::::::::::::+II+,,,,:::,:,M~....        "
  78.     print "~:+I=,~?N,$M:,::::::::::::::::,:N+,,:::::,:==~NO+.,.=,.?NI,:::::,OM.,.........."
  79.     print ".I.,,?.D?..==,::::::::::::::::::?=,:::::::,8$$=:,,$~::?++M,,,::,,+M,,.........."
  80.     print "+,,,?::M..,::::::::::::::::::~,,,:::::,:=M,~,.,I,,,7:,.$,,,:::,~M,,.........."
  81.     print "=~,+=?$O,,,,:::::::::::::::::::::::::::::,DO=I~,=.+,:,+,,I:,,::::~N:,7,:,~....."
  82.     print ",,,~,,N=,,::::::::::::::::::::::::::::::,:N+I.,,7:,+?:.?IM,~:::::$M:=,:.Z.:.,.."
  83.     print "+,=?ION::~::::::::::::::::::::::::::::::,,N=,+,=::.=,~?M,,~::::,~M==?+,=,I.~:I."
  84.     print ",7==,MM,::::,::::::::::::::::::::::::::::,M.:.??=~?8MDI,:,:::,,:N=,?.,.I=.+=+.+"
  85.     print "8=7::+~,:::~::::::::::::::::::::::::::::::M8?I+=,,,::,::~:~::+MN=,+:+,=~,.,:,,:"
  86.     print "IZ8$7ZDZ,,::::::::::::::::::::::::::::::,~O.,,::~::::::,::+OMM+:,7=~,7=+.I~?,=="
  87.     print ",:::::::MD,,::::::::::::::::::::::::::::,~N,,:~:::,,,=7MMM.~.?~=.,=.,,I,:,I:,,+"
  88.     print ",,:::,::~M:::,,:::,,:::::::::::::::::::::,N:,:,::?$MMN8:.,N?Z=:.$::,I=:,:+,,,?,"
  89.     print ":,,,,:,,,I7,,,:,,,,,,,,,,,,,,,,,,,,,,,,:,,M:,,:ZMN$::::,::ZO:.:,~,,$,.,$::,I=,:"
  90.  
  91. def YosThosePos( pageid = 3338398, pagestart=0, pageend=0 ):
  92.     ShowFrog("Hello "+sys.argv[1]+", how are you? Let's pull some images shall we? Lets start at page "+str(pagestart)+"!")
  93.     print '---------------------------------------------'
  94.     print "Determining total pages..."
  95.     # fetching the last page, so we know the extent
  96.     pageurl = "http://forums.somethingawful.com/showthread.php?threadid={0}&userid=0&perpage=40&pagenumber={1}".format(pageid,pagestart)
  97.     response = opener.open(pageurl,login_data)
  98.     buffer = response.read()
  99.     try:
  100.         maxpages = int(buffer[buffer.find("Pages (")+7:buffer.find("): ")])
  101.     except ValueError:
  102.         ShowHammered()
  103.         print "I couldn't determine the maximum amount of pages. Are you sure your params are correct?"
  104.         exit(0)
  105.     print "TOTAL PAGES: (" + str(maxpages) +")"
  106.     del buffer
  107.     del response
  108.     del pageurl
  109.     pageend = maxpages if (pageend > maxpages or pageend is None) else pageend    
  110.     pageend = int(pageend)
  111.     pagestart = int(pagestart)
  112.     outpath = os.path.join("/yosposbitch/")
  113.     for i in range(pagestart, pageend):
  114.         pageurl = "http://forums.somethingawful.com/showthread.php?threadid={0}&userid=0&perpage=40&pagenumber={1}".format(pageid, i)
  115.         print '---------------------------------------------'
  116.         print 'MOVING ONTO : ' + pageurl
  117.         print '---------------------------------------------'
  118.         response = opener.open(pageurl,login_data)
  119.         buffer = response.read()
  120.         buffer = buffer.replace('</<br>','<br />',-1)
  121.         soup = BeautifulSoup(buffer)
  122.         for image in soup.findAll('img'):
  123.             try:
  124.                 imgvalue = image['src']
  125.                 if imgvalue.find("waffleimages") >= 0:
  126.                     imgvalue.replace('/t/','/',-1)
  127.                 try:
  128.                     if imgvalue.find("somethingawful") >= 0 or image['style']=="display:none;":
  129.                         continue
  130.                 except KeyError:
  131.                     pass
  132.                 print "Found an image: (" + imgvalue + "). Downloading..."
  133.                 if os.path.exists(imgvalue[imgvalue.rfind('/')+1:]):
  134.                     continue
  135.                 try:
  136.                     newfile = imggetter.open(imgvalue)
  137.                 except (ValueError, urllib2.HTTPError, urllib2.URLError):
  138.                     print 'Failed to know wtf is going on with: ' + imgvalue
  139.                     continue
  140.                 output = open(imgvalue[imgvalue.rfind('/')+1:],'wb')
  141.                 output.write(newfile.read())
  142.                 output.close()
  143.             except KeyError:
  144.                 continue
  145.    
  146. if __name__ == "__main__":
  147.     try:
  148.         urllib.urlencode({
  149.             'username':sys.argv[1],
  150.             'password':sys.argv[2]
  151.         })
  152.         pageid = sys.argv[3]
  153.         pagestart = sys.argv[4] if len(sys.argv) >= 5 else 0
  154.         pageend = sys.argv[5] if len(sys.argv) >= 6 else None
  155.     except IndexError:
  156.         print "You're so fucking stupid. Holy shit. usage:\npython yospos.py username password threadid [startpage [endpage]]"
  157.         exit(0)
  158.     YosThosePos(pageid, pagestart,pageend)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement