ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 25.02.2010, 15:23
Аватар для -tatarin-
-tatarin-
Новичок
Регистрация: 09.02.2009
Сообщений: 5
Провел на форуме:
6720

Репутация: 0
По умолчанию

нашел в инете скрипт приглашения в друзья всех членов определенной группы вконтакте, но не знаю как запустить его, помогите пжл! Вот скрипт:
Код:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#  Created by Nuclear Worm
#
#
#  Vkontakte friends adder  #
#  Version 0.1.a.1
#

import os, sys, time, re, logging,  sqlite3,  urllib,  urllib2,  cookielib
try:
    from cStringIO import StringIO
except ImportError:
    from StringIO import StringIO
VERSION='0.1.a.1'
COOKIEFILE = '/tmp/cookies1.lwp'
LOG_FILENAME = '/tmp/dbg.log'
logging.basicConfig(filename=LOG_FILENAME, filemode = 'w', level=logging.DEBUG,)

class PostCommand:
    def __init__(self, url, req = None):
        self.request  = req
        self.headers = ''
        self.url = url
    
    def perform(self):
        cj = cookielib.LWPCookieJar()
        if os.path.isfile(COOKIEFILE): cj.load(COOKIEFILE)
        url_retr = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
        self.res =  url_retr.open(self.url,  self.request).read()
        cj.save(COOKIEFILE)
        logging.debug("Got to PostCommand request = %s, url = %s"%(self.request,  self.url))
        #self.res =  urllib.urlopen(self.url,  self.request).read()
        logging.debug("Got result = %s"%self.res)

class GetCommand:
    def __init__(self, url):
        self.headers = ''
        self.url = url
    def perform(self):
        cj = cookielib.LWPCookieJar()
        if os.path.isfile(COOKIEFILE): cj.load(COOKIEFILE)
        url_retr = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
        self.res =  url_retr.open(self.url).read()
        cj.save(COOKIEFILE)
        logging.debug("Got to GetCommand url = %s"%(self.url))
        #self.res =  urllib.urlopen(self.url).read()
        logging.debug("Got result = %s"%self.res)
        
class Vkontakte:
    def __init__(self,  mail,  password):
        self.mail = mail
        self.password = password
        
    def login(self):
        request = 'op=a_login_attempt&email=' + self.mail + '&pass=' + self.password +'&expire=0'
        req = PostCommand('http://vkontakte.ru/login.php', request)
        req.perform()
        my_id = re.compile('good(\d+)')
        logging.debug("Reply from login:\n" + req.res)
        if "failed" in req.res: return "Error! Check your login/pass!"
        else:
            myid = my_id.search(req.res).groups()[0]
            return myid

class Group:
    def __init__(self, group_id):
        self.group_id = group_id
        
    def find(self,  datafile = None):
        if datafile: self.datafile = datafile
        else:
            print "No datafile to store your friends"
            sys.exit(1)
        gp = GetCommand('http://vkontakte.ru/search.php?group=' + self.group_id)
        gp.perform()
        logging.debug("Reply from login:\n" + gp.res)
        sum = re.compile('<strong>.* (\d+) .*\.</strong>')
        all_those = sum.search(gp.res).groups()[0]
        logging.debug("Sum of all users in group:\n" + all_those)
        friends = extract_id(gp.res)
        add_to_file(self.datafile, friends)
        time.sleep(1)
        for i in range(1, int(all_those)/10 + 1):
            gp = GetCommand('http://vkontakte.ru/search.php?&group=' + self.group_id + '&o=0&st=' + str(i*10))
            gp.perform()
            friends = extract_id(gp.res)
            add_to_file(self.datafile, friends)
            time.sleep(1)
        return sum


class Friend:
    def __init__(self):
        pass
    def add(self,  datafile = None,  limit = None,  message = None):
        if datafile: self.datafile = datafile
        else: pass
        if limit: self.limit = limit
        else: self.limit = 20000000
        if message: self.message = message
        else: self.message=''
        df = open(self.datafile, 'r')
        ind = 0
        hash_find = re.compile('id="hash" value="([^"]+)"')
        for line in df.readlines():
            id = line.strip(' \n')
            fp = PostCommand('http://vkontakte.ru/friends_ajax.php', req = 'act=request_form&fid=' + id)
            fp.perform()
            #print fp.res
            for line1 in fp.res.split('\\n'):
                if  hash_find.search(line1.replace('\\',  '')):
                    hash = hash_find.search(line1.replace('\\',  '')).groups()[0]
                    break
            try: hash
            except:
                print "Hash not found"
                logging.debug("Hash for user %s not found!"%id)
                continue
            fp = PostCommand('http://vkontakte.ru/friends_ajax.php',  req = 'act=accept_friend&fid=' + id + '&hash=' + hash +'&verbose=1&message=' + self.message)
            fp.perform()
            ind +=1
            if ind >= self.limit: break
        return ind
    

def extract_id(data):
    result = ''
    link = re.compile('<div class="info" id="row2(\d+)">')
    for line in StringIO(data).readlines():
        if link.search(line):
            result += link.search(line).groups()[0] + '\n'
    return result  


def write_file(file, string):
    file1 = open(file, 'w')
    file1.write(string)
    file1.close()

def add_to_file(file, data):
    file1 = open(file, 'a')
    file1.write(data)
    file1.close()

def main(*args):
    mail,  password = sys.argv[1:]
    #mail = "mymail@mail.ru"
    #password = "mypass"
    ###  For Windows change to your path
    tmp_file = '/tmp/group_mems'
    mail = mail.replace("@","%40")
    mylogin = Vkontakte(mail,  password).login()
    #print "Your ID = ", mylogin
    link = raw_input("Give link of group: ")
    group_id = re.search('http://vkontakte.ru/club(\d+)',  link).groups()[0]
    gr = Group(group_id)
    gr.find(datafile = tmp_file)
    
    fr = Friend()
    print "Added ", fr.add(datafile = tmp_file),  " friends"
    ###  Limit fo adding 30 friends, example:
    #print "Added ", fr.add(datafile = '/tmp/group_mems',  limit = 30),  " friends"
    ###  Add friends with message "Куку", example
    #message_to_send = urllib.quote("Куку")
    #print "Added ", fr.add(datafile = '/tmp/group_mems',  message = message_to_send),  " friends"

if __name__ == '__main__': main(sys.argv)
Или вот сылка http://code.google.com/p/socialbot/source/browse/trunk/trunk/kontakt.py
 
Ответить с цитированием

  #2  
Старый 26.02.2010, 19:03
Аватар для gold-goblin
gold-goblin
Познавший АНТИЧАТ
Регистрация: 26.03.2007
Сообщений: 1,095
Провел на форуме:
5265510

Репутация: 455


По умолчанию

Полистав скрипт видим строки
def __init__(self, mail, password):
self.mail = mail
self.password = password
что, куда я думаю понятно.

Цитата:
а как запустить http://www.google.ru/search?hl=ru&newwindow=1&client=firefox&hs=2ah&rls =org.mozilla:rufficial&ei=ZOKHS8-sD87csAahldSrDw&sa=X&oi=spell&resnum=0&ct=result&c d=1&ved=0CBoQBSgA&q=%D0%BA%D0%B0%D0%BA+%D0%B7%D0%B 0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C+%D1%81 %D0%BA%D1%80%D0%B8%D0%BF%D1%82+python&spell=1
но скрипт скорей всего не рабочий так как авторизация ВК менялась...
 
Ответить с цитированием

  #3  
Старый 26.02.2010, 20:09
Аватар для -tatarin-
-tatarin-
Новичок
Регистрация: 09.02.2009
Сообщений: 5
Провел на форуме:
6720

Репутация: 0
По умолчанию

Спасибо большое)))))
 
Ответить с цитированием

  #4  
Старый 28.02.2010, 19:41
Аватар для Vaal
Vaal
Новичок
Регистрация: 08.01.2010
Сообщений: 11
Провел на форуме:
14160

Репутация: 0
По умолчанию

2 login999
спасибо!

а можно как-то сделать чтобы программа собранная в ехе не выводила подобные предупреждения?

D:\Python!\PARSER\dist\library.zip\MySQLdb\__init_ _.py:34: DeprecationWarning: the sets module is deprecated

Последний раз редактировалось Vaal; 28.02.2010 в 19:47..
 
Ответить с цитированием

  #5  
Старый 28.02.2010, 22:01
Аватар для login999
login999
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме:
4512757

Репутация: 973


По умолчанию

Цитата:
Сообщение от Vaal  
2 login999
спасибо!

а можно как-то сделать чтобы программа собранная в ехе не выводила подобные предупреждения?

D:\Python!\PARSER\dist\library.zip\MySQLdb\__init_ _.py:34: DeprecationWarning: the sets module is deprecated
Такое делает только если собрана через py2exe и консольный вариант
Лично я - хз как убрать этот ворнинг. Могу посоветовать только поюзать PyInstaller -мб с ним такого не будет.

P.S. Хотя я и сомнительно отношусь к ксакепу как к журналу, но после гугления на тему собиралок в экзе я наткунулся именно на их статью о PyInstaller. Жирный плюс авторам, так как сегодня полтора часа пытался собрать приложение через py2exe который в упор не тянул бинарных зависимостей, а PyInstaller всё собрал с полпинка...
 
Ответить с цитированием

  #6  
Старый 03.03.2010, 23:21
Аватар для rushter
rushter
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме:
9257858

Репутация: 979


Отправить сообщение для rushter с помощью ICQ
По умолчанию

Цитата:
Сообщение от login999  
Такое делает только если собрана через py2exe и консольный вариант
Лично я - хз как убрать этот ворнинг. Могу посоветовать только поюзать PyInstaller -мб с ним такого не будет.

P.S. Хотя я и сомнительно отношусь к ксакепу как к журналу, но после гугления на тему собиралок в экзе я наткунулся именно на их статью о PyInstaller. Жирный плюс авторам, так как сегодня полтора часа пытался собрать приложение через py2exe который в упор не тянул бинарных зависимостей, а PyInstaller всё собрал с полпинка...
PyInstaller крутая вещь, особенно полезно почитать его исходники в плане защиты кода
__________________
Blog
 
Ответить с цитированием

  #7  
Старый 04.03.2010, 13:25
Аватар для login999
login999
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме:
4512757

Репутация: 973


По умолчанию

Цитата:
Сообщение от rushter  
PyInstaller крутая вещь, особенно полезно почитать его исходники в плане защиты кода
ну защита кода для мну такая задача не стояла, а вот выкурить приложение на PyQt4 со всеми зависимостями вместе то у него получилось на 5+, не радует только то, как это реализовано - посредством хуков
 
Ответить с цитированием

  #8  
Старый 03.03.2010, 21:24
Аватар для CyberHunter
CyberHunter
Постоянный
Регистрация: 06.01.2010
Сообщений: 785
Провел на форуме:
1777031

Репутация: 256


Отправить сообщение для CyberHunter с помощью ICQ
По умолчанию

Вот я учу питон где-то месяц(по одной книге), программный код могу прочитать, что выучил понимаю, но определенную задачу решить не могу, это нормально?

Дайте ссылки на какие-то задачники по питону, или сайты с задачами, что бы попробовать что-то написать.
 
Ответить с цитированием

  #9  
Старый 03.03.2010, 22:47
Аватар для login999
login999
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме:
4512757

Репутация: 973


По умолчанию

Цитата:
Сообщение от CyberHunter  
Вот я учу питон где-то месяц(по одной книге), программный код могу прочитать, что выучил понимаю, но определенную задачу решить не могу, это нормально?

Дайте ссылки на какие-то задачники по питону, или сайты с задачами, что бы попробовать что-то написать.
Ну вот я уже год с чем-то как пытаюсь программировать на Python, а асинхронное программирование и web так и не осилил, код прочитать могу(и не только свой!), это нормально ?

Подскажите где вьехать в сам концепт асинхронного программирования - меня интересует конкретно тот момент, как именно из бесконечного потока данных выделяется что именно тот пакет - это ответ на именно этот запрос, и почему это не превращается в кашу.

P.S. Практика - лучший задачник ИМХО. Заглянь в раздел купли-продажи, посмотри что там хотят купить и попробуй реализовать сам...
 
Ответить с цитированием

  #10  
Старый 04.03.2010, 17:26
Аватар для Chubakur
Chubakur
Познающий
Регистрация: 06.04.2009
Сообщений: 69
Провел на форуме:
1032476

Репутация: 39
Отправить сообщение для Chubakur с помощью ICQ
По умолчанию

Как на pygtk создать многострочное поле для ввода/вывода текста? Желательно со скроллом. Например, для инициализации однострочного поля, надо использовать:
element=gtk.Entry()
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ