Python продолжение.

Discussion in 'PHP' started by SwordMaster, 8 Sep 2010.

  1. SwordMaster

    SwordMaster Banned

    Joined:
    12 Aug 2009
    Messages:
    98
    Likes Received:
    9
    Reputations:
    0
    Скрипт изменяет описание к видео только на первых двоих страницах с видео,максимально это 100 видео. Как сделать что б изменяло описание ко всем видео ?


    http://svedm.com/?p=195

    Code:
    # -*- coding: utf-8 -*-
    import urllib.request, urllib.parse, re, hashlib, time
    from xml.dom.minidom import parse, parseString
    
    ######################
    #  Writed by VeNOm   #
    #  ICQ: 206415153    #
    #     Svedm.com      #
    ######################
    
    mail=input("Login\n")
    pas=input("Password\n")
    desc=input("Description\n")
    
    vk = urllib.request.build_opener()
    
    def login (mail, pas):
        global vk
        res = urllib.request.urlopen('http://login.vk.com/?act=login&email='+mail+'&pass='+pas+'&expire=&vk=')
        res= res.read().decode()
        #print(res)
        if re.search("s' value='",res)!=None:
            s = re.search(r"s' value='(.*?)' \/>",res)
            sid = s.group(1)
            cookie = 'remixap=1; remixlang=0; remixchk=5; remixsid='+sid
            vk = urllib.request.build_opener()
            vk.addheaders = [('cookie', cookie)]
        else:
            cookie=0      
    
        return cookie
    
    def decod(has):
        l = len(has)
        st = has[l-5:]+has[4:l-8]
        l = len(st)
        t = ''
        for i in range(l):
            t=t+st[l-i-1]
        return t
    
    print('authorizate...')
    s=login(mail,pas)
    if s!=0:
        api='1895617'#id приложения
        secret = 'bszTIcIkzk'#secret key
        res = vk.open('http://vkontakte.ru/apps.php').read().decode('cp1251')
        if re.search(api,res)==None:
            print('Install app...')
            res = vk.open('http://vkontakte.ru/app'+api).read().decode('cp1251')
            ha = re.findall("appHash = '(.*?)';",res)
            res = vk.open('http://vkontakte.ru/apps.php?act=join&id='+api+'&hash='+ha[0]).read().decode('cp1251')
            print('Edit settigs')
            res = vk.open('http://vkontakte.ru/apps.php?act=a_load_settings','id='+api+'&mask=0&main=1').read().decode()
            ha = re.findall("query.hash = '(.*?)';",res)
            res=vk.open('http://vkontakte.ru/apps.php?act=a_save_settings','app_settings_1=1&app_settings_2=&app_settings_4=&app_settings_8=&app_settings_16=16&app_settings_256=&hash='+ha[0]+'&id='+api).read().decode()
            print(res)
            if re.search('captcha',res)!=None:
                print('Capcha! allow edit your video in app "video.edit" on your page by hands')
                pass
    
        res = vk.open('http://vkontakte.ru/feed.php')
        res = res.read().decode('cp1251')
        res = re.split('[\=,\,]+',res)
        vid = res[1]#парсим id
        sig=vid+'api_id='+api+'method=video.getv=2.0'+secret
        sig=hashlib.md5(sig.encode()).hexdigest()
        print('Geting video list...')
        link='http://api.vkontakte.ru/api.php?api_id='+api+'&method=video.get&v=2.0&sig='+sig
        res=vk.open(link).read().decode()
        dom1 = parseString(res)
        dom2=dom1.getElementsByTagName("title")
        dom3=dom1.getElementsByTagName("vid")
    
        for i in range(len(dom2)):
            print('Edit video №'+str(i+1))
            sig=vid+'api_id='+api+'desc='+desc+'method=video.editname='+str(dom2[i].childNodes[0].data)+'oid='+vid+'v=2.0vid='+str(dom3[i].childNodes[0].data)+secret
            sig=hashlib.md5(sig.encode()).hexdigest()
            link='http://api.vkontakte.ru/api.php?api_id='+api+'&method=video.edit&desc='+urllib.parse.quote(desc)+'&name='+urllib.parse.quote(str(dom2[i].childNodes[0].data))+'&oid='+vid+'&v=2.0&vid='+urllib.parse.quote(str(dom3[i].childNodes[0].data))+'&sig='+sig
            res=vk.open(link).read().decode()
            print(res)
            time.sleep(1)
    else:
        print('Auth fail')
    
     
  2. brutos

    brutos Member

    Joined:
    25 Nov 2009
    Messages:
    123
    Likes Received:
    27
    Reputations:
    8
    Кажется, там ограничение в самом приложении. Т.к. я не вижу в скрипте задания кол-ва видео/страниц.
    Один запрос на получение списка видео и его парсинг:
    Можно видоизменить скрипт. Вместо вышеприведенного кода - парсить список видео со своей страницы через http://vkontakte.ru/video.php?id=12345&st=0 (0,50,100 и т.д., предварительно узнав кол-во добавленного видео).
    Сделать список видео, и изменять их описание через приложение, подменив здесь параметр:
    Если я ничего не упустил...
     
    1 person likes this.
  3. SwordMaster

    SwordMaster Banned

    Joined:
    12 Aug 2009
    Messages:
    98
    Likes Received:
    9
    Reputations:
    0
    написал автору скрипта на счет приложения.
    В питоне не силен.