История изменений
Исправление Siado, (текущая версия) :
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# getlor.py
#
# http://www.linux.org.ru/forum/talks/10069358?lastmod=1390061311824
from urllib2 import urlopen
from BeautifulSoup import BeautifulSoup
from cookielib import MozillaCookieJar
import requests
class GetTheLOR():
def __init__(self, getnum=1000000, cookiefile="cookies.txt", pw=''):
self.getnum = getnum
self.cookiefile = cookiefile
self.cookiejar = MozillaCookieJar()
self.passwd = pw
self.lorurl = u'http://www.linux.org.ru'
def get_last_lorpost_url():
'''
return url like that:
u'http://www.linux.org.ru/forum/general/10069764?lastmod=1390065794661'
'''
tracker_page = urlopen(self.lorurl+'/tracker/').read()
last_post_url = BeautifulSoup(tracker_page) \
.find(u'table', {u'class':u'message-table'}) \
.findAll(u'a')[1][u'href']
return lor + last_post_url
def get_last_msgid(url):
'''
return last message id string
'''
page = urlopen(url).read()
lastid=BeautifulSoup(page) \
.findAll(u'article',{u'class':u'msg'})[-1][u'id'] \
.split(u'-')[1]
return lastid
def get_the_lor():
'''
post the lorget message with autoban
'''
cookies = self.cookiejar.load(self.cookiefile)
url = self.lorurl + '/add.jsp'
csrf = BeautifulSoup(requests.get(url+u'?group=8404' \
,cookies=cookies).text) \
.find(u'input',{u'name':u'csrf'})[u'value']
data={u'noinfo':u'false',
u'group':u'8404',
u'title':str(self.getnum),
u'msg':u"%s/forum/talks/%s\n\n%s" % (self.lorurl,
self.getnum, self.passwd),
u'tags':"",
u'draft':"",
u'csrf':csrf
}
return requests.post(url, data, cookies=cookies)
def check_and_make_get():
last_msgid = self.get_last_msgid()
if int(last_msgid) == self.getnum-1:
return self.get_the_lor()
else:
return 0
Привел к более читабельному виду, добавил автозабан.
З.ы. код не тестил, возможны баги.
Исходная версия Siado, :
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# getlor.py
#
# http://www.linux.org.ru/forum/talks/10069358?lastmod=1390061311824
from urllib2 import urlopen
from BeautifulSoup import BeautifulSoup
from cookielib import MozillaCookieJar
import requests
class GetTheLOR():
def __init__(self, getnum=1000000, cookiefile="cookies.txt", pw=''):
self.getnum = getnum
self.cookiefile = cookiefile
self.cookiejar = MozillaCookieJar()
self.passwd = pw
self.lorurl = u'http://www.linux.org.ru'
def get_last_lorpost_url():
'''
return url like that:
u'http://www.linux.org.ru/forum/general/10069764?lastmod=1390065794661'
'''
tracker_page = urlopen(self.lorurl+'/tracker/').read()
last_post_url = BeautifulSoup(tracker_page) \
.find(u'table', {u'class':u'message-table'}) \
.findAll(u'a')[1][u'href']
return lor + last_post_url
def get_last_msgid(url):
'''
return last message id string
'''
page = urlopen(url).read()
lastid=BeautifulSoup(page) \
.findAll(u'article',{u'class':u'msg'})[-1][u'id'] \
.split(u'-')[1]
return lastid
def get_the_lor():
'''
post the lorget message with autoban
'''
cookies = self.cookiejar.load(self.cookiefile)
url = self.lorurl + '/add.jsp'
csrf = BeautifulSoup(requests.get(url+u'?group=8404' \
,cookies=cookies).text) \
.find(u'input',{u'name':u'csrf'})[u'value']
data={u'noinfo':u'false',
u'group':u'8404',
u'title':str(self.getnum),
u'msg':u"%s/forum/talks/%s\n\n%s" % (self.lorurl,
self.getnum, self.passwd),
u'tags':"",
u'draft':"",
u'csrf':csrf
}
return requests.post(url, data, cookies=cookies)
def check_and_make_get():
last_msgid = self.get_last_msgid()
if int(last_msgid) == self.getnum-1:
return self.get_the_lor()
else:
return 0
Привел к более читабельному виду, добавил автозабан.
З.ы. код не тестил, возможны баги.