?

Log in

I do care [entries|friends|calendar]
Алексей Стёпкин

My Wish list
Личные данные
Френды
Архив
ru_dollar - Изучение финансовой системы мира
Метки записей
Twitter

[ userinfo | livejournal userinfo ]
[ calendar | livejournal calendar ]

Бот в телеграм: чтение данных из БД [21 Sep 2016|05:56pm]
Сегодня о том, как читать данные из БД (использовать их в программе).
Простой вариант выгрузки всех данных выглядит следующим образом:
import sqlite3
db = sqlite3.connect("telegram.db")
c = db.cursor()

#чтение из таблицы
def db_read():
    c.execute("SELECT * FROM usersdata  ")
    for row in c.fetchall():
       print(row)
    db.commit()
    c.close()
    db.close()

db_read()
post comment

Бот в телеграм: лог сообщений в БД [20 Sep 2016|04:44pm]
 photo 2016-09-20  16.21.21.png
Сегодня сделал лог сообщений в БД.
Код выглядит так:
def log(message, answer):
    print('\n -----') # пустая строка и разделитель сообщений
    from datetime import datetime
    print(datetime.now())
    print('Сообщение от', message.from_user.first_name, message.from_user.last_name, 'id', str(message.from_user.id))
    print(message.text)
    print(answer)

    import sqlite3

    db = sqlite3.connect("telegram.db")
    c = db.cursor()

    def create_table():        
        c.execute(
            "CREATE TABLE IF NOT EXISTS usersdata(date REAL, id REAL, first_name TEXT, last_name TEXT, user_message TEXT, bot_answer TEXT)")

    create_table()

    date = datetime.now()
    id = str(message.from_user.id)
    first_name = message.from_user.first_name
    last_name = message.from_user.last_name
    user_message = message.text
    bot_answer = answer
    c.execute("INSERT INTO usersdata VALUES (?, ?, ?, ?, ?, ?)",
              [date, id, first_name, last_name, user_message, bot_answer])
    db.commit()
    c.close()
    db.close()
post comment

Бот в телеграм: записал значение из переписки с ботом в БД [19 Sep 2016|04:46pm]
 photo 2016-09-19  16.43.00.png
Сегодня мне удалось записать в БД значение из переписки с ботом в чате, а именно — внести в БД имя пользователя.
Код выглядит так:
@bot.message_handler(commands=['help'])
def handle_text(message):
    answer = 'Жаль, еще не работает, вы можете посмотреть котировки тут — https://news.yandex.ru/quotes/213/index.html'
    log(message, answer)
    bot.send_message(message.chat.id, answer)

    import sqlite3

    db = sqlite3.connect("telegram.db")
    c = db.cursor()

    def create_table():
        c.execute("CREATE TABLE IF NOT EXISTS usersdata(first_name TEXT)")
    create_table()
    first_name = message.from_user.first_name
    c.execute("INSERT INTO usersdata VALUES (?)", [first_name])
    db.commit()
    c.close()
    db.close()
post comment

Выборы 2016 [18 Sep 2016|02:07pm]
 photo VIBORY_2016.jpg
Каждый делает свой выбор.
Я выбираю — трудиться и адаптироваться.
post comment

Бот в телеграм: как записать значение переменной в БД SQLite [17 Sep 2016|02:42pm]
 photo 2016-09-17  14.39.28.png
Ок, а как записать значение переменной в таблицу БД?
Так.
import sqlite3


db = sqlite3.connect("telegram.db")
c = db.cursor()

def create_table():
    c.execute("CREATE TABLE IF NOT EXISTS usersdata(key TEXT, value1 REAL, value2 REAL)")

key = float(XML.dollar_quoete())
value1 = 64
value2 = 65
def data_entry():
    
    c.execute("INSERT INTO usersdata VALUES (?, ?, ?)", (key, value1, value2 ))
    db.commit()
    c.close()
    db.close()
Т.е. мы записываем в БД текущий курс USD ЦБ.
post comment

Бот в телеграм: создание БД из Питона и запись первых значений [16 Sep 2016|10:01pm]
 photo 2016-09-16  21.55.02.png
Есть другой способ создания БД прямо из Питона.
import sqlite3

db = sqlite3.connect("telegram.db")
c = db.cursor()

def create_table():
    c.execute("CREATE TABLE IF NOT EXISTS usersdata(value1 REAL, value2 REAL)")


def data_entry():
    c.execute("INSERT INTO usersdata VALUES(64, 65)")
    db.commit()
    c.close()
    db.close()
create_table()
data_entry()
Тут мы создаем БД и таблицу. И записываем первые значения в таблицу. Для того, чтобы просмотреть БД можно скачать прогу браузера БД, я качал отсюда. Так мы записали первые значения в БД из Питона.
post comment

Бот в телеграм: создание тестовой базы данных [15 Sep 2016|08:38pm]
 photo sqlite-database.png
Для того, чтобы иметь возможность уведомлять каждого пользователя о достижении установленных им значений курса доллара, необходимо где-то эти значения хранить.
Вероятно, потребуется база данных. Я выбрал SQLite.
Создадим тестовую базу данных в Мак.
Для этого в терминале, в папке будущей БД, пишем команды:
1. sqlite3 test.db
2. create table first (a int, b strinb);
3. .schema
4. insert into first (a, b) values (1, 'hello');
5. .quit

Видео-туториал, как это делать.
post comment

Бот в телеграм: автоматическая проверка достижения курсом заданных значений [13 Sep 2016|10:06am]
Возвращаемся к коду логики, сигнализирующей достижение курсом определенных значений.
Вместо записанного вручную значения курса теперь используем данные курса, полученные с сайта.
Код выглядит так:
import XML
import threading

quoeteup = 65
quoetedown = 64
# обращение к функции парсинга курса из другого файла
quoete = float(XML.dollar_quoete())

def update():
  global timer
  timer = threading.Timer(5.0, update)
  timer.start()

  if quoete > quoeteup:
    print("Курс USD достиг верхний лимит заданного значения, сейчас составляет")
    timer.cancel()

  if quoete < quoetedown:
    print("Курс USD достиг нижний лимит заданного значения, сейчас составляет")
    timer.cancel()

  print(quoete)

update()

Важно обратить внимание на оператор "float", который переводит значение курса для питона в число. (Без него выполнение кода выдает ошибку.)

Результат выполнения кода
Курс USD достиг верхний лимит заданного значения, сейчас составляет
65.0539
post comment

Бот в телеграм: меняем в значении курса запятую на точку [12 Sep 2016|08:09am]
Меняем запятую из полученных значений курса с сайта на точку.
Раньше часть функции парсинга значений у нас выглядела следующим образом:
for x in quoetes_list:
    id_v = x.get("ID")
    if id_v == id_dollar:
        dollar = (x.find("Value").text)

Теперь, изменим запятую на точку:
for x in quoetes_list:
    id_v = x.get("ID")
    if id_v == id_dollar:
        dollarp = (x.find("Value").text)
        # изменение запятой на точку в полученном с сайта значении dollarp
        dollar = str(dollarp).replace(',', '.')

Если не ошибаюсь, есть другой, более корректный метод сделать это, но на данный момент я выбрал более грубый и более простой.
(Что-то связанное с локалью (locale), а я еще не знаю, что это.)
post comment

"Мы — молодцы" или сравнение с другими людьми [11 Sep 2016|06:02pm]
 photo 2016-09-11  18.01.00.png

Когда мой ум начинает сравнивать меня с кем-то, я стал использовать мысль: "мы — молодцы".
Например, во время пробежки, встречается кто-то менее подготовленный и следом мысль, типо, я круче. Важно ли это? Человек молодец и я тоже.
Или обгоняет кто-то тебя, и вместо я — "лох" и минорных настроений, "мы — молодцы".
Ну и мы, это как-бы я, "все — молодцы".
Используйте :).
1 comment|post comment

Бот в телеграм: сигнализировать достижение определенных значений курса [10 Sep 2016|06:21am]
Сейчас бот только обновляет периодически курс доллара.
Попросим его по достижению курсом определенных значений, сигнализировать это событие сообщением.
import threading

quoeteup = 64
quoetedown = 60


def update():
  global timer
  timer = threading.Timer(5.0, update)
  timer.start()
  quoete = 64.1617
  if quoete > quoeteup:
    print("Курс USD достиг верхний лимит заданного значения, сейчас составляет")
    timer.cancel()

  if quoete < quoetedown:
    print("Курс USD достиг нижний лимит заданного значения, сейчас составляет")
    timer.cancel()

  print(quoete)

update()

Результат выполнения кода
Курс USD достиг верхний лимит заданного значения, сейчас составляет 64.1617

В данном коде курс доллара мы вводим самостоятельно вместо получения его значений с сайта т.к. котировки с сайта в качестве разделителя используют запятую — выполнение программы в этом случае выдает ошибку.
Для применения значений с сайта, необходимо используемую в качестве разделителя запятую заменить на точку.
post comment

Бот в телеграм: автоматическая проверка текущего курса [09 Sep 2016|05:31am]
 photo 20140716_1_1.jpg
Далее, я планировал сделать уведомление от бота, в случае достижения заданных значений курса.
Для этого бот должен самостоятельно периодично проверять текущий курс доллара.
Как это сделать?
import XML
import threading
def update():
  threading.Timer(5.0, update).start()
  quoete = XML.dollar_quoete()
  print(quoete)

update()

Курс проверяется каждые 5 секунд и выводится его текущее значение.

USD ЦБ РФ равен 63,9730 рублей

USD ЦБ РФ равен 63,9730 рублей

USD ЦБ РФ равен 63,9730 рублей
post comment

Бот в телеграм: сообщение с текущим курсом доллара от бота [08 Sep 2016|02:08pm]
Вставляем сделанную функцию запроса курса доллара в основной код:
import XML
@bot.message_handler(commands=['Курс'])
def handle_text(message):
    answer = XML.dollar_quoete()
    log(message, answer)
    bot.send_message(message.chat.id, answer)

Теперь, при вводе в Телеграм команды "Курс" боту мы получаем он него в ответ сообщение с текущим курсом доллара.

Курс доллара США равен 64,3804 рублей
post comment

Спасибо, кэп: мысли [06 Sep 2016|04:43am]
 photo 26211262.jpg

Ну, хорошо, скажите вы, ад и рай: здесь и сейчас, в уме, у каждого свой; но что мне то с этим делать — как улучшить свое самочувствие?
"Это простой, но бесспорный факт: мы становимся тем, о чем мы думаем. Если у вас злые мысли — вы испытываете злость, если у вас радостные мысли — вы испытываете радость, если у вас счастливые мысли — вы испытываете счастье... и если ваши мысли полны любви — вы испытываете любовь."

Мысль — фундамент действия.
Бывают разрушительные мысли; бывают мысли функциональные, деятельные, вдохновляющие.
Важно наблюдать за разрушительными vs. развивать их;
переключать на функциональные и развивать их. :)
post comment

Бот в телеграм: функция запроса курса доллара США с сайта ЦБ РФ [05 Sep 2016|01:17am]
 photo 1468688927_ruble.jpg

Теперь сделаем из прошлого кода — функцию.
# Подключение бибилиотек
import urllib.request as url
import xml.etree.ElementTree as et

# Функция запроса курса доллара США с сайта ЦБ РФ
def dollar_quoete():

    id_dollar = "R01235"

    web_data = url.urlopen("http://www.cbr.ru/scripts/XML_daily.asp")

    str_data = web_data.read()

    xml_data = et.fromstring(str_data)

    quoetes_list = xml_data.findall("Valute")

    for x in quoetes_list:
        id_v = x.get("ID")
        if id_v == id_dollar:
            dollar = (x.find("Value").text)
    #return "\nКурс доллара США равен"rub()"рублей"
    return '{0} {1} {2}'.format('\nUSD ЦБ РФ равен', dollar, 'рублей')
post comment

Бот в телеграм: запрос курса доллара США с сайта ЦБ РФ [04 Sep 2016|01:43am]
 photo logo.png

Вывести конкретные данные с сайта средствами Python оказалось не так просто для меня.
Вот код:
import urllib.request as url
import xml.etree.ElementTree as et

id_dollar = "R01235"

web_data = url.urlopen("http://www.cbr.ru/scripts/XML_daily.asp")

str_data = web_data.read()

xml_data = et.fromstring(str_data)

quoetes_list = xml_data.findall("Valute")

for x in quoetes_list:
  id_v = x.get("ID")
  if id_v == id_dollar:
    rub = (x.find("Value").text)
    print("\nКурс доллара США равен", rub, "рублей")

Результат выполнения кода — курс доллара США на последнюю зарегистрированную дату, установленный ЦБ РФ, выглядит так:
Курс доллара США равен 65,8684 рублей
post comment

Руководствоваться Целью в следующих действиях [03 Sep 2016|04:55am]
 photo 2016-09-03  4.50.56.png

Друзья, привет.
Я размышлял — чем можно руководствоваться при выборе своих следующих действий и на данный момент пришел к двум возможным вариантам.
1. Цель
2. Состояние

Каждый человек в определенный момент времени начинает руководствоваться состоянием — тем, как он себя чувствует, это особенно наглядно на разных циклических соревнованиях.
Есть такие, которые начинают руководствоваться состоянием значительно раньше, называя это настроением, а также в поисках деятельности делающей проживание текущего момента с удовольствием и подальше от страдания.
У многих нет целей.
Решиться на действия таким помогает страх, ведь иначе — "жопа", в каких конкретно негативных следствиях она состоит неизвестно, ведь думать лень, поэтому делать надо.
Цели также многие находят опору в страхе, движении от неприятного.
Часто границей бывает, превышение неприятности от бездействия от восприятия дискомфорта от действия. Следствия от бездействия более неприятны, чем действия для их предотвращения.

Кратко: если поставлена цель, мы ей руководствуемся до границы какого-то состояния, после которого приостанавливаем или прекращаем действие. Граница эта у каждого своя.

П.С.
"Жизнь — череда маленьких и больших стимулов, между которыми путь. Путь к цели. Есть цель. Есть стимул — добиться ее. Простейший пример: я лежу на диване и смотрю телевизор. Захотелось в туалет. Облегчиться — стимул. Очень сильный, особенно после трех-четырех бутылок пива. Так вот, чтобы добиться цели (получить удовольствие от опорожнения мочевого пузыря), мне надо встать и пройти в туалет. То есть имеем цель — облегчиться, стимул — чтобы больше в туалет не хотелось, и план выполнения задачи — встать и дойти до сортира. И если стимул перевешивает лень и неохоту, то мы движемся к цели. Поэтому очень важно ставить перед собой хорошие стимулы и реальные цели."
Сургалинов "Кирпичи 2.0"
1 comment|post comment

XML DOM Tree [31 Aug 2016|03:35am]
 photo nodetree.gif
Для того, чтобы использовать только интересующие значения с сайтов при парсинге важно познакомиться с xml.
XML — это язык разметки сайтов.
XML DOM Tree – представляет сайт в древовидной структуре и позволяет обратиться к конкретным данным с сайта.
post comment

Парсинг с сайтов средствами Python [30 Aug 2016|01:10am]
 photo 440_123b2.jpg
Стандартная библиотека Python содержит готовые модули для работы с HTTP.
Один из них — urllib.

Добавим следующий код в программу:

#Подключаем библиотеку
import urllib.request

#открываем интересующую страницу в интернет
data = urllib.request.urlopen("http://www.cbr.ru/")
#выводим полученные данные
print(data.read())

В результате мы увидим исходный код страницы.
Если по нему выполнить поиск, то мы найдем, например, котировку курса доллара с сайта.

Теперь важно найти способ запрашивать только интересующие значения с сайта.
post comment

Ад и рай [29 Aug 2016|12:52am]
 photo 14072861_553739341502375_716963882_n.jpg
Многие религии склоняют к своей вере этими словами.
"Делай как я" и тогда после смерти — рай; нарушаешь наши законы — помни об аде и воображай самое страшное.
И многие почему-то думают, что это где-то там — после смерти.
Я же все больше склоняюсь к тому, что все это здесь, каждый выбирает и творит свой ад или рай здесь и сейчас, в своем уме.
post comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]