Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3476 posts.

Python для новичков » Постепенная анимация роста » Март 16, 2023 15:17:32

Здравствуйте, нужно сделать чтобы при открытие программы, показывало видео, на котором растёт дерево, при запуске рост достигает 1 стадии, при нажатие кнопки, чтобы дерево еще больше выросло, еще раз нажать на кнопку, еще больше выросло, и так 10 раз. Реализовал с помощью tkinter, но при нажатие кнопки картинка мигает, появляется белый фон на секунду, что не очень красиво выглядит

 from tkinter import *
from tkVideoPlayer import TkinterVideo
num = 1
home = Tk()
home.geometry("500x500+500+200")
home.title("1 LVL")
videoplayer = TkinterVideo(master=home, scaled=True)
def print_key(event):
    global num
    args = event.keysym, event.keycode, event.char
    print("Знак: {}, Код: {}, Символ: {}".format(*args))
    if event.keycode == 87: # KEY   W
        if num != 10:
            num += 1
            home.title(f"{num} LVL")
            play_video(num)
    elif event.keycode == 83: # KEY   S
        if num != 1:
            num -= 1
            home.title(f"{num} LVL")
            play_video(num)
def play_video(num):
    videoplayer.load(f"UpGrow/{num}.mp4")
    videoplayer.pack(expand=True, fill="both")
    videoplayer.play()
home.bind("<Key>", print_key)
play_video(1)
home.mainloop()

Как сделать чтобы этого мигания не было?

Python для новичков » Как сделать чтобы бот ждал сообщения от пользователя, а не выполнял команду сразу? » Март 13, 2023 11:29:05

Не даёт ввести пользователю значение, а сразу обновляет и заносит команду, которую юзер использует для активации функции в качестве введенного значение.

import json
import requests

TOKEN = “” # Replace with your bot token

points = 0
task_list =

def add_task(chat_id):
message = “Type the task you want to add to your list:”
send_message(chat_id, message)
# Wait for response
while True:
updates = get_updates()
if len(updates) > 0:
task = updates
task_list.append({“task”: task, “completed”: False})
message = “Task added: {}”.format(task)
send_message(chat_id, message)
break

def print_tasks(chat_id):
if len(task_list) == 0:
message = “No tasks added yet!”
send_message(chat_id, message)
else:
for i, task in enumerate(task_list):
status = “Incomplete”
if task:
status = “Complete (+1 point)”
message = “{}) {} - {}”.format(i+1, task, status)
send_message(chat_id, message)

def mark_complete(chat_id):
message = “Enter task number to mark as complete:”
send_message(chat_id, message)
# Wait for response
while True:
updates = get_updates()
if len(updates) > 0:
task_num = int(updates)
task_list = True
global points
points += 1
message = “Task marked as complete, you now have {} points!”.format(points)
send_message(chat_id, message)
break

def view_outstanding(chat_id):
incomplete_tasks = [task for task in task_list if not task]
if len(incomplete_tasks) == 0:
message = “All tasks completed!”
else:
message = “Outstanding tasks:\n”
for i, task in enumerate(incomplete_tasks):
message += “{}) {}\n”.format(i+1, task)
send_message(chat_id, message)

def view_points(chat_id):
message = “You have earned {} points!”.format(points)
send_message(chat_id, message)

def save_data():
with open(“task_list.json”, “w”) as f:
data = {“points”: points, “tasks”: task_list}
json.dump(data, f)
print(“Data saved successfully!”)

def get_updates():
url = "https://api.telegram.org/bot{}/getUpdates".format(TOKEN)
response = requests.get(url)
data = response.json()
updates = data
return updates

def send_message(chat_id, message):
url = "https://api.telegram.org/bot{}/sendMessage“.format(TOKEN)
params = {”chat_id“: chat_id, ”text“: message}
response = requests.post(url, data=params)
print(response.status_code, response.content)

# Try to load saved data, if it exists
try:
with open(”task_list.json“, ”r") as f:
data = json.load(f
)
points = data
task_list = data
print(“Data loaded successfully!”)
except:
print(“No saved data found.”)

# Main loop
while True:
updates = get_updates()
if len(updates) > 0:
last_update_id = updates
# Process each message since last update
for update in updates:
message = update
chat_id = update

if message == “/start”:
send_message(chat_id, “Welcome to the Task Manager bot!”)
elif message == “/add”:
add_task(chat_id)
elif message == “/view”:
print_tasks(chat_id)
elif message == “/complete”:
mark_complete(chat_id)
elif message == “/points”:
view_points(chat_id)
elif message == “/outstanding”:
view_outstanding(chat_id)

# Mark last update as read
url = "https://api.telegram.org/bot{}/getUpdates?offset={}".format(TOKEN, last_update_id+1)
requests.get(url)

Python для новичков » как максимально укорить модель детектирования лиц retinaface или аналог?  » Март 10, 2023 08:16:05

как максимально укорить модель детектирования лиц retinaface или аналог?

Python для новичков » Какой самый быстрый способ разобрать видеофайл на фреймы? Быстрее чем реальное время. cv2 работает слишком медленно » Март 10, 2023 08:11:33

Вот этот пример работает слишком медленно
 cap = cv2.VideoCapture('video.mp4')
while(cap.isOpened()):
 ret, frame = cap.read()
  if ret == True:

Python проекты » Игра - Snake (консольная графика) » Март 7, 2023 17:33:06

Привет. Пытался сделать игру без дополнительных библиотек, но пришлось использовать pynput. Может кто подсказать как отслеживать нажатия клавишь возможностями из коробки?

Python для новичков » Python and Excel » Март 5, 2023 11:36:20

Всем доброго дня!!!
В столбце “С” содержится информация из 10 и более символов, необходимо получить первые 10 символов из этого столбца всех строк и перенести, скопировать (записать) их в новый документ эксель.

import openpyxl

wb = openpyxl.load_workbook(“sample — копия.xlsx”)
type(wb)

sheet = wb.active

rows = sheet.max_row
cols = sheet.max_column

for row in sheet:
string = ‘'
for cell in row:
string = string + str(cell.value) + ’ '
print(string)

Python для новичков » Разделние сплошного текста на слова » Март 5, 2023 09:06:25

Прошу подсказать библиотеку или примерный алгоритм(не обязательно с кодом, просто ход мыслей) для решения задачи из темы.
Есть сплошной текст без пробелов на русском языке. Даже если будут иногда ошибки - не страшно.
На входе строка, на выходе тоже строка.

IN: Довстречистобой
OUT: До встречи с тобой
IN: Разбежавшисьпрыгнусоскалы
OUT: Разбежавшись прыгну со скалы


Центр помощи » Даны два списка чисел, введенных с клавиатуры. Определить, сколько и каких чисел одновременно встречается в двух списках. » Март 4, 2023 14:21:45

Помогите, пожалуйста, разобраться в коде.
Даны два списка чисел, введенных с клавиатуры. Определить, сколько и каких чисел одновременно встречается в двух списках.
У меня получилось так, но выводятся не числа, а именно цифры:

list1 =
list2 =
def foo(list1,list2):
d = { }
for a in list1:
if a in list2:
d = foo(a, d)
print('\n'.join(f'{k} - {v} раз' for k, v in sorted(d.items())))

Выход:
0 - 1 раз
1 - 2 раз
2 - 2 раз
4 - 1 раз
5 - 2 раз
6 - 1 раз
7 - 2 раз
8 - 1 раз
9 - 1 раз

Python для новичков » Скрипт telegram для быстрого комментария » Март 2, 2023 19:11:47

Подскажите, как правильно реализовать скрипт на питоне для того, чтобы быстро при появления нового поста в канале написать определенный текстовый комментарий

Python для новичков » Ошибка в коде парсинга курсов валют с сайта банка » Фев. 27, 2023 04:41:08


Прошу помочь с написанием кода для бота в Телеграм, чтобы при команде /currency он писал текущие курсы покупка/продажа валют из сайта
https://www.primbank.ru/local/cron/infoVl.php?idType=4&idCity=1
текущий код выдает ошибку с сертификатом…. никак не могу понять как с ней справиться. Может быть есть другие варианты для парсинга курсов с данного сайта?
по аналогии пытался подтянуть курсы по ссылке https://www.primbank.ru/currency/ , но ошибка идентичная

requests.exceptions.SSLError: HTTPSConnectionPool(host='www.primbank.ru', port=443): Max retries exceeded with url: /local/cron/infoVl.php?idType=4&idCity=1 (Caused by SSLError(SSLCertVerificationError(1, ' certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')))

[code python]
import requests
import telebot

# Укажите токен вашего бота
TOKEN = 'your_bot_token_here'

# Создаем экземпляр бота
bot = telebot.TeleBot(TOKEN)

# Обработчик команды /start
@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.reply_to(message, "Привет! Введите команду /exchange, чтобы получить актуальные курсы валют.")

# Обработчик команды /exchange
@bot.message_handler(commands=['exchange'])
def send_exchange(message):
url = 'https://www.primbank.ru/local/cron/infoVl.php?idType=4&idCity=1'
response = requests.get(url)
if response.status_code == 200:
data = response.json()
# Отправляем сообщение с актуальными курсами валют
bot.reply_to(message, f"Курс USD: {data['USD']['buy']} / {data['USD']['sell']}\nКурс EUR: {data['EUR']['buy']} / {data['EUR']['sell']}")
else:
bot.reply_to(message, "Произошла ошибка при получении курсов валют.")

# Запускаем бота
bot.polling()
[/code]
__________________

Python для новичков » непрерывные возрастающие последовательности чисел » Фев. 25, 2023 11:29:55

Реализуйте функцию, которая находит в списке непрерывные возрастающие последовательности чисел и возвращает список с их перечислением.

Python для новичков » Внести данные о цвете пикселя из QLable в QTableWidget  » Фев. 24, 2023 19:10:17

Привет всем. Имеется программный код в котором, когда вы нажимаете на пиксель изображения, загруженного через OpenFileDialog в Pixmap QGraphicsScene, выводит значения цвета x, y и HEX в QLable. Кто-нибудь может подсказать, как HEX также можно вывести в ячейку QTableWidget?

     def table(self):
        # создание таблицы
        self.table = QtWidgets.QTableWidget(self.centralwidget)
        self.table.setGeometry(QtCore.QRect(10, 50, 462, 950))
        self.table.setStyleSheet("background-color:rgb(209, 209, 209)")
        self.headerLabels = list('A')
        n = 3000
        self.table.setRowCount(n)
        self.table.setColumnCount(len(self.headerLabels))
        self.table.setHorizontalHeaderLabels(self.headerLabels)
        self.table.horizontalHeader().setDefaultSectionSize(100)
        self.table.horizontalHeader().setMinimumSectionSize(125)
        self.table.verticalHeader().setVisible(False)
        self.table.verticalHeader().setDefaultSectionSize(25)
        self.table.verticalHeader().setMinimumSectionSize(25)
        for row in range(n):
            for col in range(len(self.headerLabels)):
                item = QTableWidgetItem(''.format(self.headerLabels[col], row))
                self.table.setItem(row, col, item)
        self.table.resizeColumnsToContents()
        self.table.resizeRowsToContents()


 class GraphicsView(QGraphicsView):  # +++
    clicked = pyqtSignal(str, str)
    def mousePressEvent(self, event):
        super(GraphicsView, self).mousePressEvent(event)
        self.setCursor(Qt.DragMoveCursor)
        # Получить положение мыши на экране
        pos = event.globalPos()
        image = QApplication.primaryScreen().grabWindow(
            int(QApplication.desktop().winId()),
            pos.x() - 23, pos.y() - 23, 47, 47).toImage()
        color = image.pixelColor(23, 23)
        if color.isValid():
            self.clicked.emit('View', color.name())
    def mouseReleaseEvent(self, event):
        super(GraphicsView, self).mouseReleaseEvent(event)
        self.setCursor(Qt.ArrowCursor)

 class MainssWindow(QMainWindow, Ui_MainsWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.layout = QtWidgets.QHBoxLayout(self.wid)
        self.layout.addWidget(self.wid)
        self.scene = GraphicsScene()
        self.scene.setSceneRect(0, 0, 1400, 900)
        width = Settings.NUM_BLOCKS_X * Settings.WIDTH
        height = Settings.NUM_BLOCKS_Y * Settings.HEIGHT
        self.scene.setSceneRect(0, 0, width, height)
        self.scene.setItemIndexMethod(QtWidgets.QGraphicsScene.NoIndex)
        self.setMouseTracking(True)
        self.graphicsView.setScene(self.scene)
        self.scene.clicked.connect(self.point1)
        self.graphicsView.clicked.connect(self.point1) # +++
        self.table()

 class QS(QtWidgets.QGraphicsScene):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        width = Settings.NUM_BLOCKS_X * Settings.WIDTH
        height = Settings.NUM_BLOCKS_Y * Settings.HEIGHT
        self.setSceneRect(0, 0, width, height)
        self.setItemIndexMethod(QtWidgets.QGraphicsScene.NoIndex)
        for x in range(0,Settings.NUM_BLOCKS_X+1):
            xc = x * Settings.WIDTH
            self.addLine(xc,0,xc,height)
        for y in range(0,Settings.NUM_BLOCKS_Y+1):
            yc = y * Settings.HEIGHT
            self.addLine(0,yc,width,yc)

 class GraphicsScene(QGraphicsScene):
    clicked = pyqtSignal(str, QPointF)
    def mousePressEvent(self, event):
        super(GraphicsScene, self).mousePressEvent(event)
        sp = event.scenePos()
        self.clicked.emit('Scene', sp)

     def point1(self, text, value):
        if text == 'Scene':
            self.lab.setText(f'x1 = {value.x()}, y1 = {value.y()}. Интенсивность: ')
        if text == 'View':
            self.lab.setText(f'{self.lab.text()} {value}')

Python для новичков » Подскажите мои ошибки. » Фев. 19, 2023 08:25:03

(Python 3.10 64-bit)
Win 10
——————–
Такая задача:
Создать окно управления на Python и PyQt
(Все скрипты находятся в каталоге: E:\__Moi_scripti)
Рамер главного окна: win.setGeometry(1400,1400,1400,1300)
Разместить равномерно - 5 столбцов 5 рядов
В этом окне 25 одинаковых зон управления и запуска моих скриптов.
В каждой зоне управления должно быть:
Название скрипта
Открыть (Путь к каталогу скрипта)
Кнопка запуска скрипта
———————-
В пояснении указать:
В каких строках я вставлю:
Название скрипта
Открыть (Путь к каталогу скрипта)
Кнопка запуска скрипта
Вот сам скрипт:
 import sys
from pathlib import Path
from PyQt5.QtWidgets import *
 
app = QApplication(sys.argv)
win = QWidget()
win.setGeometry(1400, 1400, 1400, 1300)
 
layout = QGridLayout()
 
for i in range(5):
    for j in range(5):
        label = QLabel('plist_down.py')
        button1 = QPushButton('Open (E:\__Moi_scripti\03_yotube_plist_downloader)')
        button2 = QPushButton('Run Script')
        layout.addWidget(label, i, j)
        layout.addWidget(button1, i, j+1)
        layout.addWidget(button2, i, j+2)
 
win.setLayout(layout)
win.show()
 
sys.exit(app.exec_())
Окно не появляется ?

Python для новичков » Помогите озвучить переведённый текст. » Фев. 15, 2023 08:32:11

Приветствую всех! Прошу сильно не пинать, поскольку я занимаюсь этим всего 2 дня и в тонкостях не смыслю. Суть в следующем: я набросал простейшее приложение для перевода En-Ru, там всё криво и безобразно, но почти работает. На данном этапе главный затык – не могу добиться озвучки перевода на русский, т.е. в верхнем поле я ввожу английское слово (вводимые символы озвучиваются NVDA), а в нижнем возникает перевод, но не проговаривается. Буду очень признателен всем, кто откликнется.

import pyttsx3
from tkinter import*
from googletrans import Translator
from gtts import gTTS
from playsound import playsound

te = pyttsx3.init()
language = ‘ru’
obj1 = gTTS('Пишите слово', lang=language, slow=False)
te.say('obj1')
obj1.save(“fict.mp3”)
playsound(“fict.mp3”)

def tran():
text = t.get('1.0', END)
a = translator.translate(text, dest='ru')
t1.delete('1.0', END)
t1.insert('1.0', a.text)

root = Tk()
root.geometry('500x350')
root.title('Переводчик')
root.resizable(width=False, height=False)
root = ‘yellow’
translator = Translator()

label = Label(root, fg='black', bg='yellow', font='Arial 14 bold', text='Введите текст для перевода')
label.place(relx=0.5, y=30, anchor=CENTER)
t = Text(root, width=35, height=5, font='Arial 12 bold')
t.place(relx=0.5, y=100, anchor=CENTER)

btn = Button(root, width=45, text='Перевести', command=tran)
btn.place(relx=0.5, y=180, anchor=CENTER)

t1 = Text(root, width=35, height=5, font='Arial 12 bold')
t1.place(relx=0.5, y=260, anchor=CENTER)

root.mainloop()

Python для новичков » import whisper error » Фев. 12, 2023 22:33:54

 import discord
import os
from discord.ext import commands
from dotenv import load_dotenv
import whisper
from tts import tts
from parse_statement import parse
load_dotenv()
intents = discord.Intents.all()
client = commands.Bot(command_prefix="&", intents=intents)
# model = whisper.load_model("base")
model = whisper.load_model("small")
# join vc
@client.command()
async def join(ctx):
    if ctx.author.voice:
        channel = ctx.message.author.voice.channel
        await channel.connect()
    else:
        await ctx.send("not in a voice channel!")
# leave vc
@client.command()
async def leave(ctx):
    if ctx.voice_client:
        await ctx.voice_client.disconnect()
    else:
        await ctx.send("not in a voice channel!")
# play tts audio from command
@client.command()
async def play(ctx, *, arg):
    tts(ctx, arg)
@client.command()
async def listen(ctx):
    if ctx.voice_client:
        ctx.voice_client.start_recording(discord.sinks.WaveSink(), callback, ctx)
        await ctx.send("listening...")
    else:
        await ctx.send("not in a voice channel!")
async def callback(sink: discord.sinks, ctx):
    for user_id, audio in sink.audio_data.items():
        if user_id == ctx.author.id:
            audio: discord.sinks.core.AudioData = audio
            print(user_id)
            filename = "audio.wav"
            with open(filename, "wb") as f:
                f.write(audio.file.getvalue())
            text = model.transcribe(filename)["text"]
            os.remove(filename)
            print(f"Received from {ctx.author.name}: {text}")
            reply = parse(text)
            print(f"Reply: {reply}")
            tts(ctx, reply)
# stops recording
@client.command()
async def stop(ctx):
    ctx.voice_client.stop_recording()
@client.event
async def on_ready():
    print(f"We have logged in as {client.user}")
@client.event
async def on_message(message):
    await client.process_commands(message)
    if message.author == client.user:
        return
    # ping
    if message.content.startswith("ping"):
        await message.channel.send("pong")
client.run(os.environ.get("DISCORD"))


(discord) PS D:\discord> & CUsers/Gena/.virtualenvs/discord-q4ERoUCO/Scripts/python.exe ddiscord/package/test/bot.py
Traceback (most recent call last):
File “d:\discord\package\test\bot.py”, line 7, in <module>
import whisper
File “C:\Users\Gena\.virtualenvs\discord-q4ERoUCO\lib\site-packages\whisper.py”, line 69, in <module>
libc = ctypes.CDLL(libc_name)
File “C:\Users\Gena\AppData\Local\Programs\Python\Python310\lib\ctypes\__init__.py”, line 364, in __init__
if ‘/’ in name or ‘\\’ in name:
TypeError: argument of type ‘NoneType’ is not iterable
(discord) PS D:\discord>

подскажите что с этим делать
полный исходник
https://github.com/sergmister/Discord-VC-Bot

Python для новичков » Помогите доработать программу » Фев. 6, 2023 22:21:36

Мне нужно чтобЫ
Пользователей, у которых день рождения был в выходные, нужно поздравить в понедельник.

 import calendar
import datetime
def get_birthdays_per_week(users):
    # get the current day
    now = datetime.datetime.now()
    # get the day of the week, 0-monday, 1-tuesday
    day_num = now.weekday()
    # create a dictionary to store the list of users per day
    birthdays_by_day = dict()
    # iterate over the users list
    for user in users:
        # calculate the difference in days between the current day and the user's birthday
        difference_in_days = (user['birthday'] - now).days
        # check if the difference is between 0 and 7
        if 0 <= difference_in_days <= 7:
            # get the day number of the user's birthday
            user_day_num = (user['birthday'].weekday() - day_num) % 7
            # extract the name of the user
            user_name = user['name']
            # get the list of users for the user's birthday day
            user_list = birthdays_by_day.get(user_day_num, [])
            # add the name of the user to the list of users on the user's birthday day
            user_list.append(user_name)
            # update the dictionary
            birthdays_by_day[user_day_num] = user_list
    # loop over days
    for day_num, user_list in birthdays_by_day.items():
        # get the day name
        day_name = calendar.day_name[day_num]
        # format and print users
        print('{}: {}'.format(day_name, ', '.join(user_list)))

Python для новичков » Exception in thread Thread error » Фев. 4, 2023 20:38:07

 Exception in thread Thread-2988:
Exception in thread Thread-2987:
Traceback (most recent call last):
Traceback (most recent call last):
  File "C:\Users\Gena\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1016, in _bootstrap_inner
  File "C:\Users\Gena\.virtualenvs\discord-q4ERoUCO\lib\site-packages\mysql\connector\cursor_cext.py", line 279, in execute
    self.run()
  File "C:\Users\Gena\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1378, in run
    result = self._cnx.cmd_query(
  File "C:\Users\Gena\.virtualenvs\discord-q4ERoUCO\lib\site-packages\mysql\connector\connection_cext.py", line 587, in cmd_query
    self.function(*self.args, **self.kwargs)
    return self.fetch_eof_status()
  File "D:\discord\package\time\timelocal.py", line 45, in timenows
  File "C:\Users\Gena\.virtualenvs\discord-q4ERoUCO\lib\site-packages\mysql\connector\connection_cext.py", line 510, in fetch_eof_status
    showdostime = package.setup.getsettings.timeingshowindows()
    "insert_id": self._cmysql.insert_id(),
  File "D:\discord\package\setup\getsettings.py", line 115, in timeingshowindows
_mysql_connector.MySQLInterfaceError: Lost connection to MySQL server during query
    selectsettingfromdatabase()
The above exception was the direct cause of the following exception:
  File "D:\discord\package\setup\getsettings.py", line 25, in selectsettingfromdatabase
Traceback (most recent call last):
    mycursor = myconnect.cursor(buffered=False)
  File "C:\Users\Gena\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1016, in _bootstrap_inner
  File "C:\Users\Gena\.virtualenvs\discord-q4ERoUCO\lib\site-packages\mysql\connector\connection_cext.py", line 632, in cursor
    self.run()
    raise OperationalError("MySQL Connection not available.")
  File "C:\Users\Gena\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1378, in run
mysql.connector.errors.OperationalError: MySQL Connection not available.

программа иногда взбешивается и теряет конект с mySQL базой
что это может быть?

Python для новичков » pyaudio boost » Фев. 4, 2023 14:38:30

как в pyaudio или другом аудио модуле сделать обработку буфера кью что бы забустить голос?

Django » Как увеличить числовое значение в базе данных Django по нажатию кнопки, которая будет отображена через html шаблон? » Фев. 4, 2023 13:11:22

views.py:
from django.shortcuts import render
from django.contrib.auth.models import User
from django.views.generic import DetailView
from register.models import UserCoin


def index2(request):
username = User.objects.all()
usercoin = UserCoin.objects.all()
return render(request, 'main2/index2.html', {"username": username, "usercoin": usercoin})


class Users(DetailView):
model = User
template_name = 'index2.html'
context_object_name = 'user'


class Coins(DetailView):
model = UserCoin
template_name = 'index2.html'
context_object_name = 'coin'

models.py:
from django.db import models
from django.contrib.auth.models import User


class UserCoin(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
coin = models.DecimalField(null=False, decimal_places=2, max_digits=1000, default=1)

def __str__(self):
return f'{self.coin}'

Вопрос: Я хочу, чтобы при нажатии на кнопку значение usercoin увеличивалось на допустим 1 и это изменение сразу отображалось на сайте через html шаблон, как мне это сделать?Может как-то с помощью js?