Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz

25.02.2010, 15:23
|
|
Новичок
Регистрация: 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
|
|
|

26.02.2010, 19:03
|
|
Познавший АНТИЧАТ
Регистрация: 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:ru  fficial&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
но скрипт скорей всего не рабочий так как авторизация ВК менялась...
|
|
|

26.02.2010, 20:09
|
|
Новичок
Регистрация: 09.02.2009
Сообщений: 5
Провел на форуме: 6720
Репутация:
0
|
|
Спасибо большое)))))
|
|
|

28.02.2010, 19:41
|
|
Новичок
Регистрация: 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..
|
|
|

28.02.2010, 22:01
|
|
Постоянный
Регистрация: 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 всё собрал с полпинка...
|
|
|

03.03.2010, 23:21
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме: 9257858
Репутация:
979
|
|
Сообщение от login999
Такое делает только если собрана через py2exe и консольный вариант 
Лично я - хз как убрать этот ворнинг. Могу посоветовать только поюзать PyInstaller -мб с ним такого не будет.
P.S. Хотя я и сомнительно отношусь к ксакепу как к журналу, но после гугления на тему собиралок в экзе я наткунулся именно на их статью о PyInstaller. Жирный плюс авторам, так как сегодня полтора часа пытался собрать приложение через py2exe который в упор не тянул бинарных зависимостей, а PyInstaller всё собрал с полпинка...
PyInstaller крутая вещь, особенно полезно почитать его исходники в плане защиты кода 
|
|
|

04.03.2010, 13:25
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме: 4512757
Репутация:
973
|
|
Сообщение от rushter
PyInstaller крутая вещь, особенно полезно почитать его исходники в плане защиты кода 
ну защита кода для мну такая задача не стояла, а вот выкурить приложение на PyQt4 со всеми зависимостями вместе то у него получилось на 5+, не радует только то, как это реализовано - посредством хуков 
|
|
|

03.03.2010, 21:24
|
|
Постоянный
Регистрация: 06.01.2010
Сообщений: 785
Провел на форуме: 1777031
Репутация:
256
|
|
Вот я учу питон где-то месяц(по одной книге), программный код могу прочитать, что выучил понимаю, но определенную задачу решить не могу, это нормально?
Дайте ссылки на какие-то задачники по питону, или сайты с задачами, что бы попробовать что-то написать.
|
|
|

03.03.2010, 22:47
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме: 4512757
Репутация:
973
|
|
Сообщение от CyberHunter
Вот я учу питон где-то месяц(по одной книге), программный код могу прочитать, что выучил понимаю, но определенную задачу решить не могу, это нормально?
Дайте ссылки на какие-то задачники по питону, или сайты с задачами, что бы попробовать что-то написать.
Ну вот я уже год с чем-то как пытаюсь программировать на Python, а асинхронное программирование и web так и не осилил, код прочитать могу(и не только свой!), это нормально ?
Подскажите где вьехать в сам концепт асинхронного программирования - меня интересует конкретно тот момент, как именно из бесконечного потока данных выделяется что именно тот пакет - это ответ на именно этот запрос, и почему это не превращается в кашу.
P.S. Практика - лучший задачник ИМХО. Заглянь в раздел купли-продажи, посмотри что там хотят купить и попробуй реализовать сам...
|
|
|

04.03.2010, 17:26
|
|
Познающий
Регистрация: 06.04.2009
Сообщений: 69
Провел на форуме: 1032476
Репутация:
39
|
|
Как на pygtk создать многострочное поле для ввода/вывода текста? Желательно со скроллом. Например, для инициализации однострочного поля, надо использовать:
element=gtk.Entry()
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|