vk_get_all_image - сливаем все изображения с аккаунта.

Discussion in 'PHP' started by De-visible, 8 Feb 2011.

  1. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Вообщем удалось получить доступ к одной странице вконтакте, и времени было вобрез, надо было слить все изображения, именно поэтому накидал этот скриптик, простенький без потоков, с таймслипами, вообщем функция его слить все фотографии пользователя.

    Настройки:
    Code:
           1. YouLogin = ‘Ваш емэйл вконтакте’
           2. YouPass = ‘Ваш пароль вконтакте’
           3. IdFromDownload = ‘id вконтакте того, чьи фото сливаем, без префикса id, просто цифры’
    
    

    PHP:
    #! /usr/bin/env python
    # -*- coding:windows-1251 -*-

    about_me = \
    '''

     #######################################
     # (c) De-visible aka _dex_, 2011      #                 ****
     # script: vk_get_all_image            #                 *   * *   *
     # site/blog: nakodim.net              #                 ****   * *
     # url: http://nakodim.net             #                 *       *
     # icq: 22-3333-575                    #                 *       *
     #######################################

    '''


    import re
    import urllib
    import urllib2
    import cookielib
    import time

    YouLogin 
    '[email protected]'
    YouPass  'password'
    IdFromDownload 'id'


    def Login(email,password):
        
    cookie cookielib.CookieJar()
        
    opener urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
        
    urllib2.install_opener(opener)
        
    headers = {
            
    "User-Agent" "Mozilla/4.0 (compatible; MSIE 5.5; WindowsNT)",
            
    "Referer" "http://vkontakte.ru/"
        
    }
        
    datas urllib.urlencode(
            {
                
    "act"         "login",
                
    "q"           "1",
                
    "al_frame"    "1",
                
    "expire"      "",
                
    "captcha_sid" "",
                
    "captcha_key" "",
                
    "from_host"   "vkontakte.ru",
                
    "email"       email,
                
    "pass"        password
            
    }
            )

        
    req urllib2.Request('http://login.vk.com/?act=login',datas,headers)
        try:
            
    page urllib2.urlopen(req).read()
        
    except Exception as e:
            print 
    u"fuck send, "e
        
    if (page <> '') and ('parent.onLoginDone' in page) :
            print 
    u"[ ] Login OK"
            
    return {"status":True,
                
    "cookie":cookie
            
    }
        else:
            print 
    u'[ ] Login Failed'
            
    return {"status":False,
                
    "cookie":cookie
        
    }


    def GetImage(id,cookies):
        
    get_count 0
        my_fotos 
    = []
        
    cookie cookielib.CookieJar()
        
    cookie cookies
        opener 
    urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
        
    urllib2.install_opener(opener)
        
    headers = {
            
    "User-Agent" "Mozilla/4.0 (compatible; MSIE 5.5; WindowsNT)"
        
    }
        
    req urllib2.Request('http://vkontakte.ru/photos'+id,None,headers)
        try:
            
    page urllib2.urlopen(req).read()
        
    except Exception as e:
            print 
    u"Fuck send "e
        
    if page <> "":
            
    count re.findall(r'<div class=\"summary\">(.*?) ',page).pop(0)
            print 
    '[ ] ',count," images founded"
            
    count int(count)
            
    get_count count
            count 
    0
            
    while count get_count:
                
    time.sleep(0.5)
                
    headers = {
                
    "User-Agent" "Mozilla/4.0 (compatible; MSIE 5.5; WindowsNT)",
                
    "Referer"    "http://vkontakte.ru/photos" id
                
    }
                
    request urllib2.Request('http://vkontakte.ru/photos'+id+'?al=1&offset='+str(count)+'&part=1'Noneheaders)
                try:
                    
    page urllib2.urlopen(request).read()
                
    except Exception as e:
                    print 
    u"Fuck Get Page, ",e
                
    finally:
                    if 
    page <>'':
                        
    fotos re.findall(r"return showPhoto\(\'(.*?)\'\,",page)
                        if 
    len(fotos)>0:
                            
    my_fotos.extend(fotos)
                    
    count int(count)+40
            
    print u'[ ] Links grabbed'
            
    print len(my_fotos)
            return {
    "err":0,"links":my_fotos}
        else:
            print 
    u'[ ] Links not grabbed'
            
    return {"err":1,"links":None}


    def DownloadLink(photos,cookies):
        
    link ''
        
    cookie cookielib.CookieJar()
        
    cookie cookies
        opener 
    urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
        
    urllib2.install_opener(opener)
        
    headers = {
            
    "User-Agent" "Mozilla/4.0 (compatible; MSIE 5.5; WindowsNT)"
        
    }
        
    count 0
        
    for photo in photos:
            
    time.sleep(0.3)
            
    request urllib2.Request('http://vkontakte.ru/photo'+photo+'?all=1',None,headers)
            try:
                
    page urllib2.urlopen(request).read()
            
    except Exception as e:
                print 
    u"Photos not request, ",e
            
    if page <> '':
                
    link str(re.findall(r'\{\"id\":\"%s\"(.*?)\}'%photo,page))
                if 
    'y_src' in link:
                    
    link re.findall(r'\"y_src\":\"(.*?)\"',link)
                else:
                    
    link re.findall(r'\"x_src\":\"(.*?)\"',link)
                
    link str(link)[2:-2].replace('\\','')
            
    time.sleep(0.5)
            print 
    u'[ ] Download: 'link
            req 
    urllib2.Request(link,None,headers)
            try:
                
    img urllib2.urlopen(req).read()
                print 
    u'[+] OK!'
            
    except Exception as e:
                print 
    u'What The Fuck?! ',e
            link 
    link.split('/')
            
    filename link[len(link)-1]
            
    with open(filename,'wb') as imgfile:
                
    imgfile.write(img)
                print 
    u'[ ] File: ',filename,' saved'
            
    count +=1
            
    print u'[ ]',count,' images completed'
        
    def main():
        print 
    about_me
        logdata 
    Login(YouLogin,YouPass)
        if (
    logdata["status"]):
            
    links GetImage(IdFromDownload,logdata["cookie"])
            if 
    links["err"] == 0:
                
    DownloadLink(links["links"],logdata["cookie"])
            else:
                print 
    u'Exit...'
        
    else:
            print 
    u'Exit...'
        

    try:
        if 
    __name__ == "__main__":
            
    main()
    except Exception as e:
        print 
    u'Error, ',e
        
    print u'Exit...'
    time.sleep(5)

    Может кому надо будет.


    UPDATE: Забыл сказать, что если фотографии в хорошем качестве он сливает, фотки в хорошем качестве. А не те которые показываются в режиме просмотра.
     
    #1 De-visible, 8 Feb 2011
    Last edited: 8 Feb 2011
    3 people like this.