• Как парсить телеграмм канал в онлайне?

    Lapita12
    @Lapita12
    Тесты, тесты?
    https://github.com/mmat16/telegram_channel_parser

    import logging  # стандартная библиотека для логирования
    import parser_functions  # библиотека этого парсера
    from telethon import TelegramClient, events, sync, connection  # pip3 install telethon
    from telethon.tl.functions.channels import JoinChannelRequest
    from config import api_id, api_hash  # получение айди и хэша нашего приложения из файла config.py
    from loguru import logger
    import asyncio
    from telethon.errors.rpcerrorlist import FloodWaitError
    
    
    # настройка логгера
    logging.basicConfig(
        level=logging.INFO,
        filename='parser_log.log',
        filemode='w',
        format="%(asctime)s %(levelname)s %(message)s"
    )
    
    
    url = ["XXXX"]
    flag = True
    
    
    
    async def main():
        async with TelegramClient('new', api_id, api_hash) as client:
            for channel in url:
                try:
                    logger.info(f"Аккаунт был подключен!")
                    await client(JoinChannelRequest(channel))
                    client.on_message(parser_functions.on_message)  # регистрация обработчика сообщений
                    await client.run_until_disconnected()
                except FloodWaitError as fwe:
                    print(f'Waiting for {fwe}')
                    await asyncio.sleep(delay=fwe.seconds)
    
    
    
    
    if __name__ == "__main__":
        asyncio.run(main())
    
    
    
    
    def on_message(event):
        try:
            channel_id = event.message.chat.id
            directory_name = str(event.message.id)
            os.makedirs(f"{channel_id}/{directory_name}", exist_ok=True)
            await parser_functions.get_message_content(client, event.message, url, channel_id, directory_name)
        except Exception as passing:
            logger.error(passing)
    Ответ написан
    1 комментарий
  • Почему gsap не меняет изображение?

    Lapita12
    @Lapita12
    Тесты, тесты?
    const img = document.querySelector("#communication-img");
    
    gsap
      .timeline({
        scrollTrigger: {
          trigger: img,
          pin: img,
        },
      })
      .to(img, {
        set: {
          src: "/assets/img/communication/chat1.png",
        },
      });
    Ответ написан
  • Scheduler'ы в pytorch слишком сильно занижают lr?

    Lapita12
    @Lapita12
    Тесты, тесты?
    def get_lr(epoch):
        min_lr = 0.00001
        max_lr = 0.001
        step = 0.00002
    
        return max(min_lr, max_lr * (1 - step * epoch)**2)
    Ответ написан
    Комментировать
  • Почему subprocess выдает непонятные символы?

    Lapita12
    @Lapita12
    Тесты, тесты?
    output = subprocess.check_output(["ping", "www.youtube.com"])
    print(output.decode())


    Либо:

    output = subprocess.run(["ping", "www.youtube.com"], capture_output=True, text=True)
    print(output.stdout)


    PING www.youtube.com (2a00:1450:4010:c06::c6) 56(84) bytes of data.
    64 bytes from wide-youtube.l.google.com (2a00:1450:4010:c06::c6): icmp_seq=1 ttl=56 time=131 ms
    64 bytes from wide-youtube.l.google.com (2a00:1450:4010:c06::c6): icmp_seq=2 ttl=56 time=88 ms
    64 bytes from wide-youtube.l.google.com (2a00:1450:4010:c06::c6): icmp_seq=3 ttl=56 time=327 ms
    64 bytes from wide-youtube.l.google.com (2a00:1450:4010:c06::c6): icmp_seq=4 ttl=56 time=86 ms

    --- www.youtube.com ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 2999ms
    rtt min/avg/max/mdev = 86/192/327/115 ms
    Ответ написан
    1 комментарий
  • Как убрать пролистывание вверх?

    Lapita12
    @Lapita12
    Тесты, тесты?
    var swiper = new Swiper('.swiper-container', {
      direction: 'horizontal', // Измените на «вертикальный», если хотите вертикальную прокрутку
      mousewheel: true, // Измените значение на false, если вы хотите отключить управление колесом мыши
    });


    // Вручную устанавливаем индекс слайда, когда пользователь прокручивает вверх
    swiper.slideTo(index, speed, runCallbacks);
    Ответ написан
  • Отображение блока в самом низу?

    Lapita12
    @Lapita12
    Тесты, тесты?
    async function elUp(selector) {
      try {
        var html = await (await fetch(location.href)).text();
        var newdoc = new DOMParser().parseFromString(html, 'text/html');
        var chat = document.querySelector(selector);
        chat.outerHTML = newdoc.querySelector(selector).outerHTML;
        
        chat = document.querySelector(selector);
        chat.scrollTop = chat.scrollHeight;
    
        return true;
      } catch(err) {return false;}
    }
    Ответ написан
    Комментировать
  • Анимированная выезжающая вкладка xamarin?

    Lapita12
    @Lapita12
    Тесты, тесты?
    Тебе нужно использовать контрол Expander из Xamarin Community Toolkit. Expander - это контейнер, в который можно положить любой контент. У него есть заголовок и содержимое, и когда ты нажимаешь на заголовок, содержимое показывается или прячется с анимацией.

    <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                 xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
                 x:Class="YourNamespace.YourPage">
        <StackLayout>
            <xct:Expander>
                <xct:Expander.Header>
                    <Label Text="Информация"
                           FontSize="Large"
                           HorizontalOptions="Center" />
                </xct:Expander.Header>
                <xct:Expander.Content>
                    <Label Text="Здесь будет твой текст"
                           FontSize="Medium"
                           HorizontalOptions="Center"
                           VerticalOptions="Center" />
                </xct:Expander.Content>
            </xct:Expander>
        </StackLayout>
    </ContentPage>


    Тут мы используем StackLayout, чтобы разместить Expander. В заголовке Expander есть метка с текстом "Информация", а в содержимом - метка с текстом "Здесь будет твой текст". Когда ты нажимаешь на заголовок, содержимое анимированно показывается или прячется.

    Если хочешь добавить иконку к заголовку, то код ниже

    <xct:Expander.Header>
        <StackLayout Orientation="Horizontal">
            <Image Source="your_icon.png"
                   WidthRequest="24"
                   HeightRequest="24" />
            <Label Text="Информация"
                   FontSize="Large"
                   HorizontalOptions="Center" />
        </StackLayout>
    </xct:Expander.Header>


    Замени your_icon.png на имя файла с твоей иконкой. Это добавит иконку слева от текста заголовка.

    Не забудь добавить ссылку на Xamarin Community Toolkit в своем проекте и импортировать пространство имен http://xamarin.com/schemas/2020/toolkit в своем XAML-файле.
    Ответ написан
    Комментировать
  • Есть ли библиотеки похожие на sao.js для генерации шаблонов проекта?

    Lapita12
    @Lapita12
    Тесты, тесты?
    Здравствуйте!
    Если вы ищете альтернативы библиотеке SAO для генерации шаблонов проекта, вот несколько рекомендаций:
    1. Lass- инструмент для создания современных шаблонов пакетов для Node.js. Он предоставляет готовые настройки для разработки, тестирования и публикации пакетов

    2. Simple Scaffold - пакет NPM, который упрощает процесс организации и копирования часто создаваемых файлов. Он позволяет генерировать любую структуру файлов, от отдельных компонентов до полных шаблонов приложений

    3. create-node-lib - инструмент для создания шаблонов проектов Node.js с включенными батарейками, включая документацию, тесты и семантические релизы

    4. node-cli-boilerplate - шаблон для создания инструментов командной строки на Node.js. Он предоставляет базовую структуру и настройки для разработки CLI-приложений

    5. bystro- CLI-утилита для создания шаблонов кода и каркасов, написанная с использованием TypeScript и Clean Architecture
    Ответ написан
    Комментировать
  • Как НЕ выполнять условие при таче по UI элементам?

    Lapita12
    @Lapita12
    Тесты, тесты?
    void Update()
    {
        if (canExecute && (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space)) && !EventSystem.current.IsPointerOverGameObject(null, null) && !EventSystem.current.IsPointerOverGameObject(null, EventSystem.current.currentTouchEvent)) && !endGame)
        {
            canExecute = false;
            cooldownTimer = cooldownDuration;
    
            Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            directionKnife = mousePosition;
            mousePosition.z = 0f;
            GameObject knife = Instantiate(knifePrefab, mousePosition, Quaternion.identity);
    
            StartCoroutine(RotateKnife(knife));
        }
    }
    Ответ написан
    3 комментария
  • Как вывести неповторяющие числа с помощью рандома?

    Lapita12
    @Lapita12
    Тесты, тесты?
    function getRandomInt(min, max) {
      return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    
    const random = new Set();
    
    while (random.size < 3) {
      let number = getRandomInt(1, 5);
      random.add(number);
    }
    
    console.log(Array.from(random));
    Ответ написан
    Комментировать
  • Как взаимодействовать из Razor-pages с файлом cs этих страниц?

    Lapita12
    @Lapita12
    Тесты, тесты?
    CreateModel.cs:
    public class CreateModel : PageModel
    {
        // Добавьте ваш контекст базы данных здесь
        // Например: private readonly AppDbContext _context;
    
        public CreateModel(/*AppDbContext context*/)
        {
            // _context = context;
        }
    
        public async Task<IActionResult> OnPostAsync(string name, string comment)
        {
            // Сохраните данные в базе данных здесь
            // Например: _context.Comments.Add(new Comment { Name = name, CommentText = comment });
            // await _context.SaveChangesAsync();
    
            return RedirectToPage();
        }
    }


    Create.cshtml:
    @page
    @model WebApplication1.Pages.CreateModel
    @{
        ViewData["Title"] = "Create";
    }
    <h2>Create</h2>
    
    <form method="post">
        <label for="name">Name:</label>
        <input id="name" name="name" type="text" required />
        <br />
    
        <label for="comment">Comment:</label>
        <input id="comment" name="comment" type="text" required />
        <br />
    
        <input type="submit" value="Submit" />
    </form>

    В этом примере, я удалил обработку POST-запроса из Razor-страницы и переместил ее в метод OnPostAsync в CreateModel. Метод OnPostAsync будет автоматически вызываться и сохранять данные в базу данных.
    Ответ написан
    Комментировать
  • Как вывести всю таблицу MySql C#?

    Lapita12
    @Lapita12
    Тесты, тесты?
    using System;
    using System.Data;
    using MySql.Data.MySqlClient;
    
    class Program
    {
        static void Main()
        {
            string connectionString = "Server=localhost;Database=myDatabase;Uid=myUsername;Pwd=myPassword;";
            
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                connection.Open();
                
                MySqlCommand cmd = new MySqlCommand("SELECT * FROM myTable", connection);
                MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
                DataTable table = new DataTable();
                adapter.Fill(table);
                
                connection.Close();
                
                foreach (DataRow row in table.Rows)
                {
                    Console.WriteLine($"{row["Column1"]}, {row["Column2"]}, {row["Column3"]}");
                }
            }
        }
    }

    Не забудьте заменить myDatabase, myUsername, myPassword на реальные значения для вашей базы данных, а также myTable и Column1, Column2, Column3 на реальные имена таблицы и столбцов.
    Ответ написан
    Комментировать
  • Почему персонаж не двигается и не показывает анимации?

    Lapita12
    @Lapita12
    Тесты, тесты?
    1. Добавить Rigidbody к персонажу
    2. Обновить скрипт для работы с Rigidbody

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Mouse : MonoBehaviour 
    {
        public float speed;
        public float sensitive;
        
        float horizontal;
        float vertical;
        float x;
        float z;
        
        public GameObject player;
        
        private Animator playerAnimator;
        private Rigidbody playerRigidbody;
        
        void Start()
        {
            Cursor.lockState = CursorLockMode.Locked;
            playerAnimator = player.GetComponent<Animator>();
            playerRigidbody = player.GetComponent<Rigidbody>();
        }
    
        void Update() 
        {
            x = Input.GetAxis("Horizontal") * speed * Time.deltaTime;
            z = Input.GetAxis("Vertical") * speed * Time.deltaTime;
    
            horizontal += Input.GetAxis("Mouse X") * sensitive;
            vertical += Input.GetAxis("Mouse Y") * sensitive;
            vertical = Mathf.Clamp(vertical, -20, 20);
    
            Vector3 newPosition = playerRigidbody.position + player.transform.right * x + player.transform.forward * z;
            playerRigidbody.MovePosition(newPosition);
    
            transform.localRotation = Quaternion.Euler(-vertical, 0, 0);
            player.transform.localRotation = Quaternion.Euler(0, horizontal, 0);
            
            PlayerController(); 
        }
    
        void PlayerController() 
        {
            if (z > 0) 
            {
                if (Input.GetKey(KeyCode.LeftShift)) 
                {
                    playerAnimator.SetInteger("Move", 2);
                    speed = 4;
                } 
                else 
                {
                    playerAnimator.SetInteger("Move", 1);
                    speed = 2;
                }
            } 
            else if (z < 0) 
            {
                playerAnimator.SetInteger("Move", -1);
                speed = 2;
            } 
            else 
            {
                playerAnimator.SetInteger("Move", 0);
                speed = 0;
            }
        }
    }
    Ответ написан
    Комментировать
  • Чем не угодили 2G и 3G?

    Lapita12
    @Lapita12
    Тесты, тесты?
    2G и 3G устарели, поэтому многие страны убирают их в пользу более современных стандартов связи, например, 4G и 5G. В США 2G и 3G уже полностью отключены, что было связано с освобождением дополнительного спектра радиочастот для более производительной сети. Вероятность отключения 2G и 3G в других странах зависит от развития сетевых технологий и инвестиций в сети.
    Ответ написан
    1 комментарий
  • Быть программистом, но не учиться?

    Lapita12
    @Lapita12
    Тесты, тесты?
    Да, человек может научиться программировать, не зная, что он делает. Это называется "механическое программирование", когда человек просто слепо применяет шаблоны и рецепты, которые он узнал из учебных материалов или других источников, без понимания того, как они работают на глубоком уровне.
    Это может быть эффективным способом создания простых программ, но для создания сложных или инновационных программ это может быть неэффективным, поскольку требуется глубокое понимание алгоритмов, структуры данных и других аспектов программирования.
    Ответ написан
    6 комментариев
  • Unity или Unreal Engine для мобильной разработки?

    Lapita12
    @Lapita12
    Тесты, тесты?
    Для мобильных игр лучше всего использувать Unity, потому что это наиболее распространенная библиотека, поддерживающая множество платформ и позволяет легко портировать проекты. Кроме того, Unity имеет широкий спектр инструментов и компонентов для разработки игр, включая графический движок, редактор уровней, систему управления играбельным процессом и многое другое.
    Unity также обладает высокой производительностью благодаря оптимизированному трассированию лучей и использованию multiprocessing, что делает её идеальной для разработки сложных трехмерных игр.
    Однако, если ваш проект фокусируется только на двухмерной графике, то Unreal Engine может показаться излишним роскошью, учитывая, что он основан на трёхмерном движке.
    Важно отметить, что для решения такого вопроса необходимо провести собственные эксперименты, чтобы определить, какая библиотека лучше подходит для вашего конкретного проекта.
    Ответ написан
    2 комментария
  • Как объединить два javaскрипта?

    Lapita12
    @Lapita12
    Тесты, тесты?
    const targetNavbarDesktop = document.querySelector('.targetNavbarDesktop');
    const fixedNavbarDesktop = document.querySelector('.fixedNavbarDesktop');
    const obFixedNavbarDesktop = new IntersectionObserver(obCallbackDesktop);
    
    function obCallbackDesktop(payload) {
      if (document.documentElement.clientWidth > 992) {
        if (payload[0].boundingClientRect.y < 0) {
          document.querySelector('.class1').style.marginBottom = fixedNavbarDesktop.offsetHeight + 'px';
          fixedNavbarDesktop.classList.add('class2');
        } else {
          fixedNavbarDesktop.classList.remove('class2');
          document.querySelector('.class1').style.marginBottom = '0';
        }
      }
    }
    obFixedNavbarDesktop.observe(targetNavbarDesktop);
    
    const targetNavbarMobile = document.querySelector('.targetNavbarMobile');
    const fixedNavbarMobile = document.querySelector('.fixedNavbarMobile');
    const obFixedNavbarMobile = new IntersectionObserver(obCallbackMobile);
    
    function obCallbackMobile(payload) {
      if (document.documentElement.clientWidth < 992) {
        if (payload[0].boundingClientRect.y < 0) {
          document.querySelector('.class1').style.marginBottom = fixedNavbarMobile.offsetHeight + 'px';
          fixedNavbarMobile.classList.add('class3');
        } else {
          document.querySelector('.class1').style.marginBottom = '0';
          fixedNavbarMobile.classList.remove('class3');
        }
      }
    }
    obFixedNavbarMobile.observe(targetNavbarMobile);
    Ответ написан
  • Что за странное поведение?

    Lapita12
    @Lapita12
    Тесты, тесты?
    Синтаксическая ошибка в запросеINSERT INTO stats Вместо запятой между VALUES($1) и [response.rows[0].id]должен быть знак скобки.

    await pool.query('INSERT INTO stats (id_user) VALUES($1) RETURNING id', [response.rows[0].id]);


    Также, я добавил RETURNING id, чтобы могли получить идентификатор, который был вставлен в таблицу stats.
    Ответ написан
  • Как конвертировать telethon.tl.custom.file в hints.FIleLike?

    Lapita12
    @Lapita12
    Тесты, тесты?
    Для конвертации telethon.tl.custom.file в hints.FileLike можно воспользоваться методом io.BytesIO()

    import io
    from telethon.tl.custom import File
    from typing import List, Tuple, Union
    from mypy_extensions import TypedDict
    from telethon import TelegramClient, events
    from telethon.tl.types import InputMessagesFilterPhotos
    # Создаем клиента Telegram
    client = TelegramClient('session_name', api_id, api_hash)
    
    # Создаем типизированный словарь для сообщений
    class MessageDict(TypedDict):
        id: int
        message: str
        media: Union[None, List[Tuple[str, bytes]]]
    
    # Обработчик событий
    @client.on(events.NewMessage(incoming=True, pattern='/start'))
    async def handler(event):
        # Получаем сообщение
        message = event.message
    
        # Получаем медиа-файлы
        media = []
        if message.media:
            for file in message.media:
                if isinstance(file, File):
                    # Конвертируем telethon.tl.custom.file в hints.FileLike
                    file_bytes = io.BytesIO(await file.download_media(bytes))
                    media.append((file.mime_type, file_bytes))
    
        # Создаем типизированный словарь для сообщения
        message_dict: MessageDict = {
            'id': message.id,
            'message': message.message,
            'media': media if media else None
        }
    
        # Отправляем сообщение в другой канал
        await client.send_message('other_channel', message_dict)
    
    # Запускаем клиента Telegram
    client.start()
    client.run_until_disconnected()


    В этом примере мы используем метод download_media() для загрузки файла в память, а затем создаем объект io.BytesIO() для конвертации в hints.FileLike
    Ответ написан
  • Как в rete.js сделать связи вертикальными?

    Lapita12
    @Lapita12
    Тесты, тесты?
    Для того, чтобы сделать связи вертикальными в Rete.js, можно использовать CSS-стили. В частности, можно задать свойство flex-direction для контейнера, который содержит элементы графа.
    Например, если у вас есть контейнер с классом rete-container, то можно вот так

    css.rete-container {
      display: flex;
      flex-direction: column;
    }

    Это задаст вертикальную ориентацию для элементов графа.
    Также, если вы хотите изменить ориентацию связей между элементами, можно использовать свойство `curve` при создании связи. Например, чтобы связи были вертикальными, можно задать curve: 'vertical':

    editor.on('connectioncreated', ({ connection }) => {
      connection.setCurve('vertical');
    });
    Ответ написан
    Комментировать