pip install --user requests в командной строке cmd (он же терминал, она же консоль)import requests, urllib.parse, json, re
s = requests.session()
ua = r"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0"
s.headers = {"User-Agent": ua}
url = 'https://money.yandex.ru/'
login = 'vasya-ivanov'
password = 'secret'
resp = s.get(url, allow_redirects = True).content.decode("utf8")
if not "balance-widget__amount" in resp:
authurl = "https://passport.yandex.ru/auth?origin=money&retpath=https%3A%2F%2Fmoney.yandex.ru%2F"
resp = s.get(authurl, allow_redirects = True).content.decode("utf8")
token = re.search(r'data-csrf="([^"]+)"', resp).group(1)
resp = s.post(authurl, headers = {
"Referer":authurl
}, data = {
"retpath":url,
"fretpath":"",
"clean":"",
"service":"",
"origin":"",
"policy":"",
"is_pdd":"",
"csrf_token": token,
"login":login,
"hidden-password":password,
"passwd":password,
"twoweeks":"no"
}, allow_redirects = True).content.decode("utf8")
resp = s.get(url, allow_redirects = True).content.decode("utf8")
r = re.search(r'<div class="balance-widget__amount">.*?>([\d]+)<.*?>([\d]+)<', resp)
balance = float(r.group(1)+"."+r.group(2))
price_label = re.search(r'<span.*?price__label.*?">([^<]+)</span>', resp).group(1)
print("Я спарсил баланс!", balance, price_label) Клиент обязан иметь timeout ответа от сервера не менее 60 секунд для всех API вызовов,
если в описании конкретного REST метода данный параметр не уточняется отдельно.
Установлен
запрет на количество запросов с одного ip адреса
-
не чаще чем 2 раза за 1
минуту
.
$proxy_ip = '12.34.21.23:9050'; //IP адрес сервера прокси и порт
$loginpassw = 'login:password'; //логин и пароль для прокси
$ch = curl_init();
curl_setopt($ch, CURLOPT_PROXY, $proxy_ip );
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $loginpassw);
//доступные значения для типа используемого прокси-сервера: CURLPROXY_HTTP (по умолчанию), CURLPROXY_SOCKS4, CURLPROXY_SOCKS5, CURLPROXY_SOCKS4A или CURLPROXY_SOCKS5_HOSTNAME.
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); """
Библиотека для сервиса
https://vkmix.com/settings/api
"""
import requests, urllib.parse, json
class VkMixException(Exception): pass
class VkMixApiError(VkMixException): pass
class VkMix():
"""API для ботов
API VKMix
Мы предоставляем открытый для всех разработчиков доступ к созданию заданий в нашей системе.
Взаимодействие с API"""
s = requests.session()
ua = r"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0"
s.headers = {"User-Agent": ua, "X-Requested-With":"XMLHttpRequest"}
api_token = ""
url = "https://vkmix.com/api/2/"
def __init__(self, api_token):
"Авторизация"
self.api_token = api_token
def _request(self, uri, method="get", data = {}, headers={}, **kw):
method = method.lower()
if method not in ["get", "post"]:
raise ValueError("method GET or POST")
kw.update({"api_token": self.api_token})
data.update(kw)
if method == "get":
hndlr = self.s.get
uri = uri + "?" + urllib.parse.urlencode(data)
data = {}
if method == "post":
hndlr = self.s.post
try:
resp = hndlr(self.url+uri, data = data, headers = headers, allow_redirects = False).content.decode("utf8")
except:
raise
if resp == "":
raise VkMixApiError("empty response")
try:
j = json.loads(resp)
except json.JSONDecodeError:
raise VkMixApiError("not json"+resp)
if "error" in j and not "response" in j:
raise VkMixApiError(j["error"])
return j["response"]
def createTask(self, **kw):
"""Добавление нового задания
Параметры
network
Социальная сеть задания. Укажите одно из значений:
vk - ВКонтакте
instagram - Инстаграм
youtube - Ютуб
telegram - Телеграм
ok - Одноклассники
twitter - Твиттер
section
Тип задания. Для каждой социальной сети доступны свои типы:
vk: likes, reposts, comments, friends, groups, polls
instagram: likes, subscribers, comments, comments_likes
youtube: likes, friends, dislikes, comments
twitter: retweets, followers, favorites
ok: likes, friends, groups
telegram: subscribers
Для Instagram дополнительно доступны: likes_q4, subscribers_q4, likes_q5, subscribers_q5, likes_q7, subscribers_q7.
link
Ссылка на объект задания.
count
Количество необходимых выполнений.
amount
Вознаграждение пользователю за выполнение задания.
comments (опц. для section = comments)
Массив вариантов комментариев
# todo: массив comments может передаваться не корректно
poll (опц. для section = polls)
Номер варианта за который необходимо проголосовать
hourly_limit
Лимит выполнений в час
Результат
Метод возвращает ID созданного задания."""
return self._request("createTask", method="post", data = kw)
def getTasks(self, ids = "", count = 100, offset = 0):
"""Получение списка заданий
Параметры
ids
Id заданий. Если не передан - вернёт все задания
count
Количество заданий, которые необходимо вернуть. Не более 100
offset
Смещение необходимое для выборки определенного подмножества
Результат
Метод возвращает список заданий."""
return self._request("getTasks", ids = ids, count = count, offset = offset)
def getBalance(self):
"""Получение текущего баланса аккаунта
Результат
Метод возвращает баланс аккаунта."""
return self._request("getBalance")from vkmix import VkMix
vkm = VkMix("cdcfgthytyujujkuikunfvfdvfc")
# вставь туда ключ
print("Баланс: ", vkm.getBalance()) print(msg.reply_markup.rows) и посмотри что там.function getRandomIntInclusive(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function generate_name(maxlength) {
var s = "";
var simb = 'abcdefghijklmnopqrstuwvxyz';
for (var i = 0; i < maxlength; i++) {
s = s + simb[getRandomIntInclusive(0, simb.length - 1)]
}
return s;
}
function generate_list(maxlimit) {
var arr = [];
for (let i = 1; i <= maxlimit; i++) {
arr.push({
id: "list-"+i,
name: generate_name(getRandomIntInclusive(7, 9)) + " " + generate_name(getRandomIntInclusive(10, 12))
});
}
return arr;
}
console.log( generate_list(100) ); import sqlite3
# Создаём базу,
# если её ещё не существует
with sqlite3.connect("tg.sqlite") as conn:
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS users
(CHAT_ID INTEGER, name TEXT)
""")
# Теперь запишем:
chat_id = 123 # допустим
text = "Vasya"
with sqlite3.connect("tg.sqlite") as conn:
cursor.execute("INSERT INTO users VALUES (?,?)", (chat_id, text))
conn.commit()
# И теперь прочитаем.
chat_id = 123 # допустим
# У нас есть только chat_id,
# получим имя из нашей базы:
with sqlite3.connect("tg.sqlite") as conn:
sql = "SELECT name FROM users WHERE chat_id=?"
cursor.execute(sql, [(chat_id)])
name = cursor.fetchone()[0]
print(f"Пользователя с айди {chat_id} зовут {name}.")
# всё!