Модуль tabun_api¶
Переменные¶
-
tabun_api.
http_host
= 'https://tabun.everypony.ru'¶ Адрес Табуна. Именно на указанный здесь адрес направляются запросы.
-
tabun_api.
halfclosed
= ('shipping', 'RPG', 'borderline', 'ponymanie', 'erpg', 'tearsfromthemoon', 'abode_Clan', 'knifemanes', 'zootopia')¶ Список полузакрытых блогов.
-
tabun_api.
http_headers
= {'connection': 'close', 'user-agent': 'tabun_api/0.7.9 (Linux x86_64 6.8.2-arch1-1) Python/3.11.8 CPython/3.11.8 urllib/3.11'}¶ Заголовки для HTTP-запросов. Возможно, стоит менять user-agent.
-
tabun_api.
post_url_regex
= re.compile('/blog/(([A-z0-9_\\-\\.]{1,})/)?([0-9]{1,}).html')¶ Регулярка для парсинга ссылки на пост.
-
tabun_api.
post_file_regex
= re.compile('^Скачать \\"(.+)" \\(([0-9]*(\\.[0-9]*)?) (Кб|Мб)\\)$')¶ Регулярка для парсинга прикреплённых файлов.
Самое главное тут: класс User¶
-
class
tabun_api.
User
(login=None, passwd=None, session_id=None, security_ls_key=None, key=None, proxy=None, http_host=None, session_cookie_name='TABUNSESSIONID', avoid_cf=None, ssl_params=None, phpsessid=None)[исходный код]¶ Через божественные объекты класса User осуществляется всё взаимодействие с Табуном. Почти все методы могут кидаться исключением
TabunResultError
с текстом ошибки (который на сайте обычно показывается во всплывашке в углу). Плюс к этому может выкидыватьсяTabunError
при ошибках связи и других подобных нештатных событиях.Допустимые комбинации параметров (в квадратных скобках опциональные):
- login + passwd [ + session_id]
- session_id [+ key] — без куки key разлогинивает через некоторое время
- login + session_id + security_ls_key [+ key] (с такой комбинацией конструктор отработает без запроса к серверу)
- без параметров (анонимус)
Если у метода есть параметр
raw_data
, то через него можно передать код страницы, чтобы избежать лишнего запроса к Табуну. Если есть параметрurl
, то при его указании открывается именно указанный URL вместо формирования стандартного с помощью других параметров метода.session_id
— печенька (cookie), по которой идентифицируется пользователь (на самом Табуне называется TABUNSESSIONID).security_ls_key
— секретный ключ движка LiveStreet для отправки POST-запросов (CSRF-токен).key
- печенька неизвестного мне назначения.Можно не париться с ними, их автоматически пришлёт сервер во время инициализации объекта. А можно, например, не авторизоваться по логину и паролю, а выдрать из браузера печеньку TABUNSESSIONID, скормить в аргумент session_id и авторизоваться через неё.
С помощью аргумента
proxy
можно задать используемый прокси-сервер. Это URL видаproto://username:password@hostname:port
. Поддерживаются протоколы socks4, socks5 и http. Имя пользователя и пароль не обязательны, порт для SOCKS-прокси по умолчанию 1080, так что адрес можно записать в кратком виде например так:socks5://myserver.com
Вместо передачи параметра можно установить переменную окружения
TABUN_API_PROXY=socks5://myserver.com
— конструктор её подхватит. Если нужно наоборот проигнорировать установленныйTABUN_API_PROXY
, пропишите в аргументеproxy
пустую строку (не None).По умолчанию все запросы направляются по адресу
https://tabun.everypony.ru
. Если нужно парсить какой-то другой сайт (например, транк или локально запущенную копию Табуна), можно указать нужный адрес в опцииhttp_host
.Если нужно добавить или переопределить какие-то HTTP-заголовки для конкретного объекта, можно запихнуть всё нужное в словарь
override_headers
. При этом Cookie, Content-Type, X-Requested-With, Referer или ещё что-нибудь в любом случае затираются, если они нужны для отправки запроса (например, формы с созданием поста). Для установки дополнительных Cookie можно воспользоваться атрибутомextra_cookies
. Названия заголовков не чувствительны к регистру.Иногда CloudFlare внезапно хочет узнать, что клиент является нормальным браузером, и вместо Табуна присылает JavaScript-задачку. Здесь она автоматически решается при помощи Js2Py, если он установлен (
pip install Js2Py
). Вы можете прописать в конструктореavoid_cf=False
, чтобы отключить решение задачки (в таком случае будут выпадать ошибки 503) илиavoid_cf=True
, и в таком случае будет выкидываться исключениеImportError
при отсутствующем Js2Py. Обход CloudFlare работает только при отправке запросов через методыurlopen()
илиurlread()
.В
ssl_params
можно передать дополнительный параметр с настройками SSL. На данный момент параметр всего один —verify_mode
:skip_all
— не проверять SSL-сертификаты серверов вообщеskip_current_host
— не проверять SSL-сертификат только того сервера, который прописан вhttp_host
- любое другое значение — проверять все SSL-сертификаты
У класса также есть следующие поля:
username
— имя пользователя или Nonetalk_unread
— число непрочитанных личных сообщений (обновляется послеupdate_userinfo
)skill
— силушка (послеupdate_userinfo
)rating
— кармушка (послеupdate_userinfo
)timeout
— таймаут ожидания ответа от сервера (для функцииurlopen
, по умолчанию 20)session_id
,security_ls_key
,key
— ну вы понялиsession_cookie_name
— название печеньки, в которую положитьsession_id
(по умолчанию TABUNSESSIONID)
-
add_poll
(blog_id, title, choices, body, tags, *args, **kwargs)[исходный код]¶ Создает опрос и возвращает имя блога с номером поста. Может кидаться исключением
TabunResultError
при невалидном посте.Параметры: - blog_id (int) – ID блога, в который добавляется опрос
- title (строка) – заголовок создаваемого поста (должен содержать сам вопрос)
- choices (коллекция строк) – варианты ответов (не более 20)
- body (строка) – текст поста
- tags (строка или коллекция строк) – теги поста
- forbid_comment (bool) – закрыть (True) или открыть (False) написание комментариев
- draft (bool) – если True, то создание в черновиках вместо публикации
- check_if_error (bool) – проверяет наличие поста по заголовку даже в случае ошибки (если, например, таймаут или 404, но пост, как иногда бывает, добавляется)
Результат: кортеж
(blog, post_id)
или(None, None)
при неудаче
-
add_post
(blog_id, title, body, tags, *args, **kwargs)[исходный код]¶ Отправляет пост и возвращает имя блога с номером поста. Может кидаться исключением
TabunResultError
при невалидном посте.Параметры: - blog_id (int) – ID блога, в который добавляется пост
- title (строка) – заголовок создаваемого поста
- body (строка) – текст поста
- tags (строка или коллекция строк) – теги поста
- forbid_comment (bool) – закрыть (True) или открыть (False) написание комментариев
- draft (bool) – если True, то создание в черновиках вместо публикации
- check_if_error (bool) – проверяет наличие поста по заголовку даже в случае ошибки (если, например, таймаут или 404, но пост, как иногда бывает, добавляется)
Результат: кортеж
(blog, post_id)
или(None, None)
при неудаче
-
add_talk
(talk_users, title, body)[исходный код]¶ Отправляет новое личное сообщение пользователям.
Параметры: - talk_users (строка или коллекция строк) – имена пользователей, для которых создаётся сообщение (если строка, то имена через запятую)
- title (строка) – заголовок сообщения
- body (строка) – текст сообщения
Результат: ID созданного личного сообщения
Тип результата: int
-
ajax
(url, fields=None, files=(), headers=None, throw_if_error=True)[исходный код]¶ Отправляет ajax-запрос и возвращает распарсенный json-ответ. Или кидается исключением
TabunResultError
в случае ошибки.Параметры: - url (строка или Request) – ссылка, на которую отправляется запрос, или сам объект
Request
- fields (коллекция кортежей (название, имя файла, значение)) – простые поля запроса
- fields – файлы запроса (MIME-тип будет выбран по расширению)
- headers (кортежи из двух строк/bytes или словарь) – HTTP-заголовки (повторяться не могут)
- throw_if_error (bool) – выкидывать ли TabunResultError, если придёт ошибка
Тип результата: dict
Исключение: TabunResultError – если сервер вернёт непустой
bStateError
приthrow_if_error=True
- url (строка или Request) – ссылка, на которую отправляется запрос, или сам объект
-
build_request
(url, data=None, headers=None, with_cookies=True)[исходный код]¶ Собирает и возвращает объект
Request
. Используется в методеurlopen()
.
-
check_login
()[исходный код]¶ Генерирует исключение, если нет
session_id
илиsecurity_ls_key
.
-
comment
(target_id=None, body=None, reply=0, typ='blog', post_id=None)[исходный код]¶ Отправляет коммент и возвращает его номер.
Параметры: - target_id (int) – ID поста или лички, куда отправляется коммент
- body (строка) – текст комментария
- reply (int) – ID комментария, на который отправляется ответ (0 — не является ответом)
- typ (строка) –
blog
— пост,talk
— личное сообщение
Результат: ID созданного комментария
Тип результата: int
-
create_blog
(title, url, description, rating_limit=0, status=0, closed=None)[исходный код]¶ Создаёт блог и возвращает его url-имя или None в случае неудачи.
Параметры: - title (строка) – заголовок нового блога
- url (строка) – url-имя блога (на латинице без пробелов)
- description (строка) – описание блога (допустим HTML-код)
- rating_limit (int) – минимальный рейтинг пользователя, при котором можно писать в блог
- status (int) – 0 - открытый блог, 1 - закрытый
Тип результата: строка или None
-
delete_blog
(blog_id)[исходный код]¶ Удаляет блог.
Параметры: blog_id (int) – ID удалямого блога
-
delete_post
(post_id)[исходный код]¶ Удаляет пост.
Параметры: post_id (int) – ID удаляемого поста
-
delete_talk
(talk_id)[исходный код]¶ Удаляет личное сообщение.
Параметры: talk_id (int) – ID удаляемого письма
-
edit_blog
(blog_id, title, description, rating_limit=0, status=0, closed=False)[исходный код]¶ Редактирует блог и возвращает его url-имя или None в случае неудачи.
Параметры: - blog_id (int) – ID блога, который редактируется
- title (строка) – заголовок блога
- description (строка) – описание блога (допустим HTML-код)
- rating_limit (int) – минимальный рейтинг пользователя, при котором можно писать в блог
- status (int) – 0 - открытый блог, 1 - закрытый
Тип результата: строка или None
-
edit_comment
(comment_id, body, set_lock=False)[исходный код]¶ Редактирует комментарий и возвращает кортеж из трёх строк: новый (или старый, если изменений нет) html-код комментария, сообщение с информацией для пользователя и некий
notice
. В исключенииTabunResultError
в словаре data доступно полеnewText
, тоже содержащее тело комментария даже в случае ошибки.Параметры: - comment_id (int) – ID комментария, который редактируем
- body (строка) – новый текст комментария
- set_lock (bool) – заблокировать дальнейшее изменение
Тип результата: (строка, строка или None, строка или None)
-
edit_post
(post_id, blog_id, title, body, tags, forbid_comment=False, draft=False, check_if_error=False)[исходный код]¶ Редактирует пост и возвращает его блог и номер. Может кидаться исключением
TabunResultError
при невалидном посте.Параметры: - post_id (int) – ID редактируемого поста
- blog_id (int) – ID блога, в который поместить пост
- title (строка) – заголовок поста
- body (строка) – текст поста
- tags (строка или коллекция строк) – теги поста
- forbid_comment (bool) – закрыть (True) или открыть (False) написание комментариев
- draft (bool) – перемещение в черновики (True) или публикация из черновиков (False)
- check_if_error (bool) – проверяет наличие поста по заголовку даже в случае ошибки
(если, например, таймаут или 404, но пост, как иногда бывает, добавляется). Учтите, что
в отличие от
add_post
здесь при проверке будет загружен сам пост, что может привести к слёту подсветки новых комментариев
Результат: кортеж
(blog, post_id)
или(None, None)
при неудаче
-
favourite_comment
(comment_id, type=True)[исходный код]¶ Добавляет (type=True) коммент в избранное или убирает (type=False) оттуда. Возвращает новое число пользователей, добавивших коммент в избранное.
-
favourite_talk
(talk_id, type=True)[исходный код]¶ Добавляет (type=True) личное сообщение в избранное или убирает (type=False) оттуда. Возвращает новое состояние (1/0).
-
favourite_topic
(post_id, type=True)[исходный код]¶ Добавляет (type=True) пост в избранное или убирает (type=False) оттуда. Возвращает новое число пользователей, добавивших пост в избранное.
-
get_activity
(url='/stream/all/', raw_data=None)[исходный код]¶ Возвращает кортеж из двух элементов: номер самого старого события в списке и собственно список последних событий.
-
get_blog
(blog, raw_data=None)[исходный код]¶ Возвращает информацию о блоге. Функция не доделана.
-
get_blogs_list
(page=1, order_by='blog_rating', order_way='desc', url=None)[исходный код]¶ Возвращает список объектов Blog.
-
get_comments
(url='/comments/', raw_data=None)[исходный код]¶ Парсит комменты со страницы по указанной ссылке. Допустимы как страницы постов, так и страницы ленты комментов. Но из ленты комментов доступны не все данные
context
.Параметры: - url (строка) – ссылка на страницу, с которой достать комменты
- raw_data (bytes) – код страницы (чтобы не скачивать его по ссылке)
Тип результата: dict {id:
Comment
, …}
-
get_comments_from
(target_id=None, comment_id=0, typ='blog', post_id=None)[исходный код]¶ Возвращает словарь комментариев к посту или личке c id больше чем comment_id. На сайте используется для подгрузки новых комментариев (ajaxresponsecomment).
Параметры: - target_id (int) – ID поста или личного сообщения, с которого загружать комментарии
- comment_id (int) – ID комментария, начиная с которого (но не включая его самого) запросить комментарии
- typ –
blog
— пост,talk
— личное сообщение
Тип результата: dict {id:
Comment
, …}
-
get_editable_blog
(blog_id, raw_data=None)[исходный код]¶ Возвращает заголовок блога, URL, тип (True - закрытый, False - открытый), описание и ограничение рейтинга.
Параметры: - blog_id (int) – ID блога (должен быть доступ на редактирование)
- raw_data (bytes) – код страницы (чтобы не скачивать его)
Тип результата: (строка, строка, bool, строка, float)
-
get_editable_post
(post_id, raw_data=None)[исходный код]¶ Возвращает blog_id, заголовок, исходный код поста, список тегов и галочку закрытия комментариев (True/False).
Параметры: - post_id (int) – ID поста (должен быть доступ на редактирование)
- raw_data (bytes) – код страницы (чтобы не скачивать его)
Тип результата: (int, строка, строка, список строк, bool)
-
get_favourited_talk_list
(page=1, raw_data=None)[исходный код]¶ Возвращает список объектов
TalkItem
с избранными личными сообщениями.
-
get_main_context
(raw_data, url=None)[исходный код]¶ Парсит основные параметры контекста со страницы Табуна.
Возвращает что-то вроде такого:
{ 'http_host': 'https://tabun.everypony.ru', 'url': 'https://tabun.everypony.ru/blog/2.html', 'username': 'Orhideous' }
Параметры: - raw_data (bytes) – исходный код страницы
- url (строка или None) – переопределение URL контекста при необходимости
Тип результата: dict
-
get_more_activity
(last_id=2147483647)[исходный код]¶ Возвращает список событий старее данного id.
-
get_notes
(page=1, url=None, raw_data=None)[исходный код]¶ Получает заметки, установленные текущим пользователем — список из словарей с ключами
username
,note
иdate
.Параметры: - page (int) – страница
- url (строка) – ссылка на страницу, с которой достать заметки (при наличии page игнорируется)
- raw_data (bytes) – код страницы (чтобы не скачивать его по ссылке)
-
get_pagination
(raw_data)[исходный код]¶ Возвращает со страницы номер текущей страницы и список с номерами страниц и текстами ссылок (кортеж из номера и строки), которые содержатся в элементе с пагинацией (
<div class="pagination">
). Соответственно, первый элемент списка — номер первой страницы, последний — последней страницы. Номера могут повторяться, если так в коде страницы. Если пагинаций ноль или больше одного, возвращается(None, None)
.Параметры: raw_data (bytes) – код страницы Тип результата: (int, list)
-
get_people_list
(page=1, order_by='user_rating', order_way='desc', url=None, raw_data=None)[исходный код]¶ Загружает список пользователей со страницы
/people/
.Параметры: - page (int) – страница
- order_by (строка) – сортировка (
user_rating
,user_skill
,user_login
илиuser_id
) - order_way (строка) – сортировка по возрастанию (
asc
) или убыванию (desc
) - url (строка) – ссылка, с которых скачать пользователей (если указать, игнорируются все предыдущие параметры)
Тип результата: список из
UserInfo
-
get_post
(post_id, blog=None, raw_data=None)[исходный код]¶ Возвращает пост по номеру.
Рекомендуется указать url-имя блога, чтобы избежать перенаправления и лишнего запроса.
Если поста нет - кидается исключением
TabunError("No post")
. В случае проблем с парсингом может вернутьNone
.Также, в отличие от
get_posts()
, добавляет can_comment в контекст.Параметры: - post_id (int) – ID скачиваемого поста
- blog (строка) – url-имя блога (опционально, для оптимизации)
- raw_data (bytes) – код страницы (чтобы не скачивать его)
Тип результата: Post
илиNone
-
get_post_and_comments
(post_id, blog=None, raw_data=None)[исходный код]¶ Возвращает пост и словарь комментариев. По сути просто вызывает метод
get_post()
иget_comments()
.Параметры: - post_id (int) – ID скачиваемого поста
- blog – url-имя блога (опционально, для оптимизации)
- raw_data (bytes) – код страницы (чтобы не скачивать его)
Результат: (Post, {id: Comment, ...})
Тип результата: tuple
-
get_posts
(url='/index/newall/', raw_data=None)[исходный код]¶ Возвращает список постов со страницы или RSS. Если постов нет — кидает исключение TabunError(«No post»).
Сортирует в порядке, обратном порядку на странице (т.е. на странице новые посты вверху, а в возвращаемом списке новые посты в его конце).
Параметры: - url (строка) – ссылка на страницу, с которой достать посты
- raw_data (bytes) – код страницы (чтобы не скачивать его по ссылке)
Тип результата: список объектов
Post
-
get_profile
(username=None, url=None, raw_data=None)[исходный код]¶ Получает информацию об указанном пользователе.
В
raw_data
можно указать не только страницу с профилем пользователя, но также список публикаций или комментариев и т.п. — в таком случае будет получена частичная информация, доступная на этих страницах.Параметры: - username (строка) – имя пользователя
- url (строка) – ссылка на страницу, с которой парсить информацию
- raw_data (bytes) – код страницы (чтобы не скачивать его)
Тип результата: UserInfo
-
get_short_blogs_list
(raw_data=None)[исходный код]¶ Возвращает пустой список. После обновления Табуна не работает, функция оставлена для обратной совместимости.
-
get_stream_comments
()[исходный код]¶ Возвращает «Прямой эфир» - объекты
StreamItem()
.
-
get_stream_topics
()[исходный код]¶ Возвращает список последних постов (без самого содержимого постов, только автор, дата, заголовки и число комментариев).
-
get_talk
(talk_id, raw_data=None)[исходный код]¶ Возвращает объект
TalkItem
беседы с переданным номером.
-
get_talk_list
(page=1, raw_data=None)[исходный код]¶ Возвращает список объектов
TalkItem
с личными сообщениями.
-
invite
(blog_id, users=None, username=None)[исходный код]¶ Отправляет инвайт в блог с указанным номером указанному пользователю (или пользователям, если указать несколько через запятую).
Возвращает словарь, который содержит пары юзернейм-текст ошибки в случае, если кому-то инвайт не отправился. Если всё хорошо, то словарь пустой.
Параметры: - blog_id (int) – ID блога, инвайты для которого рассылаются
- users (строка (с никами через запятую) или коллекция строк) – пользователи, которым рассылаются инвайты
Тип результата: dict
-
login
(login, password, return_path=None, remember=True)[исходный код]¶ Логинится и записывает печеньку key в случае успеха. Параметр return_path нафиг не нужен, remember - галочка «Запомнить меня».
-
poll_answer
(post_id, answer=-1)[исходный код]¶ Проголосовать в опросе. -1 - воздержаться.
Параметры: - post_id (int) – ID поста с опросом, в котором голосуем
- answer (int) – порядковый номер ответа (отсчёт с нуля)
Результат: обновлённые данные опроса
Тип результата: Poll
-
preview_comment
(body, fix=False, save=False)[исходный код]¶ Возвращает HTML-код предпросмотра комментария.
Параметры: - body (строка) – текст комментария
- fix (bool) – если False, то предпросмотр для создания комментария, если True, то для редактирования
- save (bool) – неизвестно
Тип результата: строка
-
preview_post
(blog_id, title, body, tags)[исходный код]¶ Возвращает HTML-код предпросмотра поста (сам пост плюс мусор типа заголовка «Предпросмотр»).
Параметры: - blog_id (int) – ID блога, в который добавляется пост
- title (строка) – заголовок создаваемого поста
- body (строка) – текст поста
- tags (строка или коллекция строк) – теги поста
Тип результата: строка
-
remove_note
(user_id)[исходный код]¶ Удаляет заметку у пользователя.
Параметры: user_id (int) – ID пользователя, у которого удаляем заметку
-
saferead
(resp)[исходный код]¶ Вызывает функцию read у переданного объекта с перехватом ошибок ввода-вывода и выкидыванием
TabunError
вместо них (оригинальное исключение может быть доступно через полеexc
). Также вызывает методclose
при его наличии.
Редактирует теги избранного поста и возвращает новый их список (элементы — словари с ключами tag и url).
Параметры: - target_id (int) – ID поста
- tags (строка или коллекция строк) – новые теги (старые будут удалены)
- target_type (строка) – неизвестно
Тип результата: список словарей
-
save_note
(user_id, note)[исходный код]¶ Меняет заметку у пользователя.
Параметры: - user_id (int) – ID пользователя, которому пишем заметку
- note (строка) – Собственно заметка
Результат: установленная заметка (с учётом фильтрации html-тегов)
Тип результата: строка
-
send_form
(url, fields=(), files=(), headers=None, redir=True)[исходный код]¶ Формирует multipart/form-data запрос и отправляет его через метод
urlopen()
с аргументами по умолчанию.Значения полей и файлов могут быть строками (закодируются в utf-8), bytes или числами (будут преобразованы в строку).
Параметры: - url (строка или Request) – ссылка, на которую отправляется запрос, или сам объект
Request
- fields (коллекция кортежей (название, имя файла, значение)) – простые поля запроса
- fields – файлы запроса (MIME-тип будет выбран по расширению)
- headers (кортежи из двух строк/bytes или словарь) – HTTP-заголовки (повторяться не могут)
- redir (bool) – следовать ли по перенаправлениям (3xx)
Тип результата: urllib.addinfourl
/urllib.response.addinfourl
- url (строка или Request) – ссылка, на которую отправляется запрос, или сам объект
-
send_form_and_read
(url, fields=(), files=(), headers=None, redir=True)[исходный код]¶ Аналогично
send_form()
, но сразу возвращает тело ответа (bytes).
-
send_request
(request, redir=True, nowait=False, timeout=None)[исходный код]¶ Отправляет запрос (строку со ссылкой или объект
Request
). Возвращает результат вызоваurllib.urlopen
(объектurllib.addinfourl
). Используется в методеurlopen
. Если установленquery_interval
, то метод может сделать паузу перед запросом для соблюдения интервала. Таймаут на эту паузу не влияет.
-
sleep_func
()¶ sleep(seconds)
Delay execution for a given number of seconds. The argument may be a floating point number for subsecond precision.
-
subscribe_to_new_comments
(post_id, subscribed, mail=None)[исходный код]¶ Меняет статус подписки на новые комментарии у поста.
Параметры: - post_id (int) – ID поста
- subscribed (bool) – True — подписаться, False — отписаться
- mail (строка) – неизвестно
Тип результата: None
-
toggle_subscription_to_blog
(blog_id)[исходный код]¶ Подписывается на блог/отписывается от блога и возвращает новое состояние: True - подписан, False - не подписан.
Параметры: blog_id (int) – ID блога Тип результата: bool
-
update_security_ls_key
(raw_data)[исходный код]¶ Выдирает security_ls_key из страницы. Вызывается из update_userinfo.
-
update_userinfo
(raw_data)[исходный код]¶ Парсит security_ls_key, имя пользователя, рейтинг и число непрочитанных сообщений с переданного кода страницы и записывает в объект. Возвращает имя пользователя или None при его отсутствии.
-
upload_image_file
(fp, title='', parse_link=False, filename=None)[исходный код]¶ Загружает файл с картинкой на Табун.
Параметры: - fp (строка или file) – путь к файлу или файловый объект
- title (строка) – заголовок картинки
- parse_link (bool) – если True, пытаться достать ссылку из html-кода вместо возвращения самого html-кода
- filename (строка) – имя файла, если передан файловый объект (по его расширению вычисляется Content-Type)
Тип результата: строка
-
upload_image_link
(url, title='', parse_link=False)[исходный код]¶ Загружает на Табун картинку по ссылке.
Параметры: - url (строка) – ссылка на файл или файловый объект
- title (строка) – заголовок картинки
- parse_link (bool) – если True, пытаться достать ссылку из html-кода вместо возвращения самого html-кода
Тип результата: строка
-
urlopen
(url, data=None, headers=None, redir=True, nowait=False, with_cookies=True, timeout=None, avoid_cf=None)[исходный код]¶ Отправляет HTTP-запрос и возвращает результат вызова
urllib.urlopen
(объектaddinfourl
).Во избежание случайной DoS-атаки между несколькими запросами подряд имеется пауза в
user.query_interval
секунд (по умолчанию 0; отключается черезnowait=True
).Параметры: - url (строка или Request) – ссылка, на которую отправляется запрос, или сам объект
Request
- data (строка (utf-8) или bytes или None) – содержимое тела HTTP. Если присутствует (даже пустое), то отправится POST-запрос
- headers (кортежи из двух строк/bytes или словарь) – HTTP-заголовки (повторяться не могут)
- redir (bool) – следовать ли по перенаправлениям (3xx)
- nowait (bool) – игнорирование очереди запросов (которая нужна во избежание DoS)
- with_cookies (bool) – прикреплять ли session_id и остальные печеньки
(отключайте для запросов не к Табуну) (печеньки из
extra_cookies
прикрепляются в любом случае) - timeout (float или None) – таймаут (по умолчанию
user.timeout
) - avoid_cf (bool) – переопределяет значение поля
avoid_cf
(см. конструктор)
Тип результата: urllib.addinfourl
/urllib.response.addinfourl
- url (строка или Request) – ссылка, на которую отправляется запрос, или сам объект
-
urlread
(url, data=None, headers=None, redir=True, nowait=False, with_cookies=True, timeout=None, avoid_cf=None)[исходный код]¶ Как
return self.urlopen(*args, **kwargs).read()
, но с перехватом исключений, возникших в процессе чтения (см.saferead()
).
-
vote
(post_id, value=0)[исходный код]¶ Ставит плюсик (1) или минусик (-1) или ничего (0) посту и возвращает его рейтинг.
-
vote_blog
(blog_id, value)[исходный код]¶ Ставит плюсик (1) или минусик (-1) блогу и возвращает его рейтинг.
-
vote_comment
(comment_id, value)[исходный код]¶ Ставит плюсик (1) или минусик (-1) комменту и возвращает его рейтинг.
-
vote_user
(user_id, value)[исходный код]¶ Ставит плюсик (1) или минусик (-1) пользователю и возвращает его рейтинг.