July 28, 2022

60+ готовых проектов и софтов на Python которые смогут превратить в кодера даже лягушку.

Тебя приветствуют Max Wayld и Asynco! Для написания этой работы мы объединили наши умы (в сумме у нас на двоих 30 IQ, кстати) и собрали для тебя кучу небольших проектов и/или софтов на нашем любимом Python.

Всё это дело ты можешь поразбирать и за счёт этого учиться тем или иным кодерским штуковинам непосредственно на практике, чтобы стать кодером be like *вставьтеимя*.

Эта статья преимущественно будет очень полезна новичкам, но некоторая часть ресурсов также может облегчить жизнь и ребятам с средним уровнем знаний, так что если ты уже умеешь что-то в питоне - не скипай всё и сразу.

Навигация по статье:

  1. 20 готовых проектов на Python
  2. Деген-софты от наших ру кодеров.
  3. 40 дополнительных мини-проектов.
  4. Бонусная часть

20 готовых проектов на Python

1. Генератор паролей

Классический пример генерации простых паролей заданной длины. Будет полезен для написания авторегеров почт или аккаунтов в тот же Sandbox.

Дополнительных библиотек не нужно, пароль генерируется из чисел, символов и букв

import random
import string
total = string.ascii_letters + string.digits + string.punctuation
length = 16
password = "".join(random.sample(total, length))
print(password)

2. Парсинг и загрузка всех изображений со страницы

Код может быть полезен для наполнения своего сайта картинками, украденными с другого сайта. Так все делают! И точка! Вкусно.

Для работы понадобятся библиотеки selenium, bs4 и requests, а также chromedriver.

from selenium import webdriver
import requests as rq
import os
from bs4 import BeautifulSoup
import time

# path= E:\web scraping\chromedriver_win32\chromedriver.exe
path = input("Enter Path : ")

url = input("Enter URL : ")

output = "output"


def get_url(path, url):
    driver = webdriver.Chrome(executable_path=r"{}".format(path))
    driver.get(url)
    print("loading.....")
    res = driver.execute_script("return document.documentElement.outerHTML")

    return res


def get_img_links(res):
    soup = BeautifulSoup(res, "lxml")
    imglinks = soup.find_all("img", src=True)
    return imglinks


def download_img(img_link, index):
    try:
        extensions = [".jpeg", ".jpg", ".png", ".gif"]
        extension = ".jpg"
        for exe in extensions:
            if img_link.find(exe) > 0:
                extension = exe
                break

        img_data = rq.get(img_link).content
        with open(output + "\\" + str(index + 1) + extension, "wb+") as f:
            f.write(img_data)

        f.close()
    except Exception:
        pass


result = get_url(path, url)
time.sleep(60)
img_links = get_img_links(result)
if not os.path.isdir(output):
    os.mkdir(output)

for index, img_link in enumerate(img_links):
    img_link = img_link["src"]
    print("Downloading...")
    if img_link:
        download_img(img_link, index)
print("Download Complete!!")

3. Конвертация JSON в CSV

Будет полезно при парсинге различных данных и последующего сохранения их. Как идея - ежедневное получение цены токена, запись в CSV файл и анализ изменения стоимости за неделю/месяц/год.

Библиотеку json устанавливать не нужно, она уже встроена в пакет Python

import json

if __name__ == '__main__':
    try:
        with open('input.json', 'r') as f:
            data = json.loads(f.read())

        output = ','.join([*data[0]])
        for obj in data:
            output += f'\n{obj["Name"]},{obj["age"]},{obj["birthyear"]}'

        with open('output.csv', 'w') as f:
            f.write(output)
    except Exception as ex:
        print(f'Error: {str(ex)}')

4. Поиск строки по файлам

Скрипт проходится по папке с файлами и ищет заданную строку. Может быть полезно для быстрого поиска своих логов в списках победителей (если таких списков много)

Достаточно ввести искомые значения и папку с файлами

import os
text = input("input text : ")
path = input("path : ")
# os.chdir(path)
def getfiles(path):
    f = 0
    os.chdir(path)
    files = os.listdir()
    # print(files)
    for file_name in files:
        abs_path = os.path.abspath(file_name)
        if os.path.isdir(abs_path):
            getfiles(abs_path)
        if os.path.isfile(abs_path):
            f = open(file_name, "r")
            if text in f.read():
                f = 1
                print(text + " found in ")
                final_path = os.path.abspath(file_name)
                print(final_path)
                return True
    if f == 1:
        print(text + " not found! ")
        return False

getfiles(path)

5. Установка водяных знаков на изображения

Иногда проще запустить скрипт, чем фотошоп. Если картинок много — тем более. Код сам расставит водяные знаки на ваши изображения.

В скрипте вы можете задать степень прозрачности, расположение знака и так далее. В качестве переменных подаются папка с картинками, путь до водяного знака (лучше формат .png) и папка вывода.

Потребуется библиотека Pillow, ссылка на команду --> (тык)

import os
from PIL import Image

def watermark_photo(input_image_path,watermark_image_path,output_image_path):
    base_image = Image.open(input_image_path)
    watermark = Image.open(watermark_image_path).convert("RGBA")
    # add watermark to your image
    position = base_image.size
    newsize = (int(position[0]*8/100),int(position[0]*8/100))
    # print(position)
    watermark = watermark.resize(newsize)
    # print(newsize)
    # return watermark

    new_position = position[0]-newsize[0]-20,position[1]-newsize[1]-20
    # create a new transparent image
    transparent = Image.new(mode='RGBA',size=position,color=(0,0,0,0))
    # paste the original image
    transparent.paste(base_image,(0,0))
    # paste the watermark image
    transparent.paste(watermark,new_position,watermark)
    image_mode = base_image.mode
    print(image_mode)
    if image_mode == 'RGB':
        transparent = transparent.convert(image_mode)
    else:
        transparent = transparent.convert('P')
    transparent.save(output_image_path,optimize=True,quality=100)
    print("Saving"+output_image_path+"...")

folder = input("Enter Folder Path:")
watermark = input("Enter Watermark Path:")
os.chdir(folder)
files = os.listdir(os.getcwd())
print(files)

if not os.path.isdir("output"):
    os.mkdir("output")

c = 1
for f in files:
    if os.path.isfile(os.path.abspath(f)):
        if f.endswith(".png") or f.endswith(".jpg"):
            watermark_photo(f,watermark,"output/"+f)

6. Уведомление о разрядке батареи

Библиотека psutil является мощным инструментом для аналитики всех запущенных процессов и мониторинга системы в целом. Как идея — сделать приложение для удаленного мониторинга нод и ежедневной отсылкой информации вам в телеграмм

Пример с анализом уровня заряд батареи ноутбука, потребуется установить psutil

# pip install psutil
import psutil

battery = psutil.sensors_battery()
plugged = battery.power_plugged
percent = battery.percent

if percent <= 30 and plugged!=True:

    # pip install py-notifier
    # pip install win10toast
    from pynotifier import Notification

    Notification(
        title="Battery Low",
        description=str(percent) + "% Battery remain!!",
        duration=5,  # Duration in seconds

    ).send()

7. Сортировка папки "Загрузки"

Самый лучший скрипт в этой подборке. Если у вас все аниме картинки и хентай обучающие видео перемешаны в кучу, то запустив скрипт на выходе получите организованное рабочее место настоящего программиста!

И опять используем ту самую библиотеку psutil

import os
import shutil
os.chdir("E:\downloads")
#print(os.getcwd())

#check number of files in  directory
files = os.listdir()

#list of extension (You can add more if you want)
extentions = {
    "images": [".jpg", ".png", ".jpeg", ".gif"],
    "videos": [".mp4", ".mkv"],
    "musics": [".mp3", ".wav"],
    "zip": [".zip", ".tgz", ".rar", ".tar"],
    "documents": [".pdf", ".docx", ".csv", ".xlsx", ".pptx", ".doc", ".ppt", ".xls"],
    "setup": [".msi", ".exe"],
    "programs": [".py", ".c", ".cpp", ".php", ".C", ".CPP"],
    "design": [".xd", ".psd"]


}


#sort to specific folder depend on extenstions
def sorting(file):
    keys = list(extentions.keys())
    for key in keys:
        for ext in extentions[key]:
            # print(ext)
            if file.endswith(ext):
                return key


#iterat through each file
for file in files:
    dist = sorting(file)
    if dist:
        try:
            shutil.move(file, "../download-sorting/" + dist)
        except:
            print(file + " is already exist")
    else:
        try:
            shutil.move(file, "../download-sorting/others")
        except:
            print(file + " is already exist")

8. Массовая рассылка писем по Email

То, чем пользуются спамеры. Данные берутся из CSV файла и после формируется сообщения для отправки по почте.

Нужна вроде эта библиотека --> (тык)

import csv
from email.message import EmailMessage
import smtplib


def get_credentials(filepath):
    with open("credentials.txt", "r") as f:
        email_address = f.readline()
        email_pass = f.readline()
    return (email_address, email_pass)


def login(email_address, email_pass, s):
    s.ehlo()
    # start TLS for security
    s.starttls()
    s.ehlo()
    # Authentication
    s.login(email_address, email_pass)
    print("login")


def send_mail():
    s = smtplib.SMTP("smtp.gmail.com", 587)
    email_address, email_pass = get_credentials("./credentials.txt")
    login(email_address, email_pass, s)

    # message to be sent
    subject = "Welcome to Python"
    body = """Python is an interpreted, high-level,
    general-purpose programming language.\n
    Created by Guido van Rossum and first released in 1991,
    Python's design philosophy emphasizes code readability\n
    with its notable use of significant whitespace"""

    message = EmailMessage()
    message.set_content(body)
    message['Subject'] = subject

    with open("emails.csv", newline="") as csvfile:
        spamreader = csv.reader(csvfile, delimiter=" ", quotechar="|")
        for email in spamreader:
            s.send_message(email_address, email[0], message)
            print("Send To " + email[0])

    # terminating the session
    s.quit()
    print("sent")


if __name__ == "__main__":
    send_mail()

9. Красивый прогресс бар

Если красиво, значит не нужно объяснять зачем оно нужно! И точка.

Библиотека tqdm помогает по-разному анимировать прогресс-бары

from tqdm import tqdm
from PIL import Image
import os
from time import sleep


def Resize_image(size, image):
    if os.path.isfile(image):
        try:
            im = Image.open(image)
            im.thumbnail(size, Image.ANTIALIAS)
            im.save("resize/" + str(image) + ".jpg")
        except Exception as ex:
            print(f"Error: {str(ex)} to {image}")


path = input("Enter Path to images : ")
size = input("Size Height , Width : ")
size = tuple(map(int, size.split(",")))

os.chdir(path)

list_images = os.listdir(path)
if "resize" not in list_images:
    os.mkdir("resize")

for image in tqdm(list_images, desc="Resizing Images"):
    Resize_image(size, image)
    sleep(0.1)
print("Resizing Completed!")

10. Снимок выбранного сайта

Будет лучше, если реализовать в headless режиме. Как идея — бот для автоматического создания контента:

  • Взять текст, обработать его;
  • По ключевому слову найти картинку;
  • Заскринить её;
  • Сформировать в единый пост;

Нужен лишь selenium, для хеадлесс режима можно PhantomJS

import sys
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import chromedriver_binary


script_name = sys.argv[0]

options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)

try:
    url = sys.argv[1]

    driver.get(url)
    page_width = driver.execute_script('return document.body.scrollWidth')
    page_height = driver.execute_script('return document.body.scrollHeight')
    driver.set_window_size(page_width, page_height)
    driver.save_screenshot('screenshot.png')
    driver.quit()
    print("SUCCESS")

except IndexError:
    print('Usage: %s URL' % script_name)

11. Шифрование и дешифрование текста

Это можно объединить с кодом из пункта 2 и сделать менеджер паролей, это действительно круто.

Библиотека binascii установлена в python, а вот библиотеку pycrypto надо поставить.

from Crypto.Cipher import AES
from Crypto import Random
from binascii import b2a_hex
import sys

# get the plaintext
plain_text = sys.argv[1]

# The key length must be 16 (AES-128), 24 (AES-192), or 32 (AES-256) Bytes.
key = b'this is a 16 key'

# Generate a non-repeatable key vector with a length
# equal to the size of the AES block
iv = Random.new().read(AES.block_size)

# Use key and iv to initialize AES object, use MODE_CFB mode
mycipher = AES.new(key, AES.MODE_CFB, iv)

# Add iv (key vector) to the beginning of the encrypted ciphertext
# and transmit it together
ciphertext = iv + mycipher.encrypt(plain_text.encode())


# To decrypt, use key and iv to generate a new AES object
mydecrypt = AES.new(key, AES.MODE_CFB, ciphertext[:16])

# Use the newly generated AES object to decrypt the encrypted ciphertext
decrypttext = mydecrypt.decrypt(ciphertext[16:])

# output
file_out = open("encrypted.bin", "wb")
file_out.write(ciphertext[16:])
file_out.close()

print("The key k is: ", key)
print("iv is: ", b2a_hex(ciphertext)[:16])
print("The encrypted data is: ", b2a_hex(ciphertext)[16:])
print("The decrypted data is: ", decrypttext.decode())

12. CLI блокнот для заметок

Каждый программист должен и калькулятор сделать и блокнот написать. А блокнот, написанный с CLI ценнее вдвойне!

Для работы надо установить click, который помогает делать красивые интерфейсы в командной строке

import click

@click.group()
@click.pass_context
def todo(ctx):
    '''Simple CLI Todo App'''
    ctx.ensure_object(dict)
    #Open todo.txt – first line contains latest ID, rest contain tasks and IDs
    with open('./todo.txt') as f:
        content = f.readlines()
    #Transfer data from todo.txt to the context
    ctx.obj['LATEST'] = int(content[:1][0])
    ctx.obj['TASKS'] = {en.split('```

')[0]:en.split('

```')[1][:-1] for en in content[1:]}

@todo.command()
@click.pass_context
def tasks(ctx):
    '''Display tasks'''
    if ctx.obj['TASKS']:
        click.echo('YOUR TASKS\n**********')
        #Iterate through all the tasks stored in the context
        for i, task in ctx.obj['TASKS'].items():
            click.echo('• ' + task + ' (ID: ' + i + ')')
        click.echo('')
    else:
        click.echo('No tasks yet! Use ADD to add one.\n')

@todo.command()
@click.pass_context
@click.option('-add', '--add_task', prompt='Enter task to add')
def add(ctx, add_task):
    '''Add a task'''
    if add_task:
        #Add task to list in context 
        ctx.obj['TASKS'][ctx.obj['LATEST']] = add_task
        click.echo('Added task "' + add_task + '" with ID ' + str(ctx.obj['LATEST']))
        #Open todo.txt and write current index and tasks with IDs (separated by " ```
{% endraw %}
 ")
        curr_ind = [str(ctx.obj['LATEST'] + 1)] 
        tasks = [str(i) + '
{% raw %}
```' + t for (i, t) in ctx.obj['TASKS'].items()]
        with open('./todo.txt', 'w') as f:
            f.writelines(['%s\n' % en for en in curr_ind + tasks])

@todo.command()
@click.pass_context
@click.option('-fin', '--fin_taskid', prompt='Enter ID of task to finish', type=int)
def done(ctx, fin_taskid):
    '''Delete a task by ID'''
    #Find task with associated ID
    if str(fin_taskid) in ctx.obj['TASKS'].keys():
        task = ctx.obj['TASKS'][str(fin_taskid)]
        #Delete task from task list in context
        del ctx.obj['TASKS'][str(fin_taskid)]
        click.echo('Finished and removed task "' + task + '" with id ' + str(fin_taskid))
        #Open todo.txt and write current index and tasks with IDs (separated by " ```
{% endraw %}
 ")
        if ctx.obj['TASKS']:
            curr_ind = [str(ctx.obj['LATEST'] + 1)] 
            tasks = [str(i) + '
{% raw %}
```' + t for (i, t) in ctx.obj['TASKS'].items()]
            with open('./todo.txt', 'w') as f:
                f.writelines(['%s\n' % en for en in curr_ind + tasks])
        else:
            #Resets ID tracker to 0 if list is empty
            with open('./todo.txt', 'w') as f:
                f.writelines([str(0) + '\n'])
    else:
        click.echo('Error: no task with id ' + str(fin_taskid))

if __name__ == '__main__':
    todo()

13. Конвертер валют

Младший брат тг-бота @anything_notslava_bot, который сможет перевести рубли в драхмы за 5 секунд.

В коде слишком длинный список, так что фулл код по ссылке --> (тык)

import requests 
import json
import sys
from pprint import pprint

# The below 4 lines bring out the value of currency from the api at fixer.io.  I had to register there, the key is unique to me.
url = "http://data.fixer.io/api/latest?access_key=33ec7c73f8a4eb6b9b5b5f95118b2275"
data = requests.get(url).text
data2 = json.loads(data) #brings whether request was successful,timestamp etc
fx = data2["rates"]

currencies = [
    "AED : Emirati Dirham,United Arab Emirates Dirham",
    
    ............  

    "ZWL : Zimbabwean Dollar,Zimbabwe Dollar",
]


# The below function calculates the actual conversion
def function1():
    query = input(
        "Please specify the amount of currency to convert, from currency, to currency (with space in between).\nPress SHOW to see list of currencies available. \nPress Q to quit. \n"
    )
    if query == "Q":
        sys.exit()
    elif query == "SHOW":
        pprint(currencies)
        function1()
    else:
        qty, fromC, toC = query.split(" ")
        fromC = fromC.upper()
        toC = toC.upper()
        qty = float(round(int(qty), 2))
        amount = round(qty * fx[toC] / fx[fromC], 2)
        print(f"{qty} of currency {fromC} amounts to {amount} of currency {toC} today")


try:
    function1()
except KeyError:
    print("You seem to have inputted wrongly, retry!")
    function1()

14. Секундомер

Если сделали блокнот, то и секундомер тоже нужно, тем более с графическим интерфейсом. Разобрать этот код — хорошая практика.

Нужно установить тот же Pillow --> (тык)

import tkinter as Tkinter
from datetime import datetime
counter = 0
running = False


def counter_label(label):
    def count():
        if running:
            global counter
            # To manage the intial delay. 
            if counter == 0:
                display = 'Ready!'
            else:
                tt = datetime.utcfromtimestamp(counter)
                string = tt.strftime('%H:%M:%S')
                display = string

            label['text'] = display

            # label.after(arg1, arg2) delays by 
            # first argument given in milliseconds 
            # and then calls the function given as second argument. 
            # Generally like here we need to call the 
            # function in which it is present repeatedly. 
            # Delays by 1000ms=1 seconds and call count again. 
            label.after(1000, count)
            counter += 1

    # Triggering the start of the counter. 
    count()


# start function of the stopwatch 
def Start(label):
    global running
    running = True
    counter_label(label)
    start['state'] = 'disabled'
    stop['state'] = 'normal'
    reset['state'] = 'normal'


# Stop function of the stopwatch 
def Stop():
    global running
    start['state'] = 'normal'
    stop['state'] = 'disabled'
    reset['state'] = 'normal'
    running = False


# Reset function of the stopwatch 
def Reset(label):
    global counter
    counter = 0
    # If reset is pressed after pressing stop. 
    if not running:
        reset['state'] = 'disabled'
        label['text'] = '00:00:00'
    # If reset is pressed while the stopwatch is running. 
    else:
        label['text'] = '00:00:00'


root = Tkinter.Tk()
root.title("Stopwatch")

# Fixing the window size.
root.minsize(width=250, height=70)
label = Tkinter.Label(root, text='Ready!', fg='black', font='Verdana 30 bold')
label.pack()
f = Tkinter.Frame(root)
start = Tkinter.Button(f, text='Start', width=6, command=lambda: Start(label))
stop = Tkinter.Button(f, text='Stop', width=6, state='disabled', command=Stop)
reset = Tkinter.Button(f, text='Reset', width=6, state='disabled', command=lambda: Reset(label))
f.pack(anchor='center', pady=5)
start.pack(side='left')
stop.pack(side='left')
reset.pack(side='left')
root.mainloop()

15. Сжатие папок и файлов

Может быть полезно, если под рукой нет 7zip или вы крутой программист и решили с нуля написать все инструменты.

Все библиотеки — стандарты python

import zipfile
import sys
import os


# compress file function
def zip_file(file_path):
    compress_file = zipfile.ZipFile(file_path + '.zip', 'w')
    compress_file.write(path, compress_type=zipfile.ZIP_DEFLATED)
    compress_file.close()


# Declare the function to return all file paths of the particular directory
def retrieve_file_paths(dir_name):
    # setup file paths variable
    file_paths = []

    # Read all directory, subdirectories and file lists
    for root, directories, files in os.walk(dir_name):
        for filename in files:
            # Create the full file path by using os module.
            file_path = os.path.join(root, filename)
            file_paths.append(file_path)

    # return all paths
    return file_paths


def zip_dir(dir_path, file_paths):
    # write files and folders to a zipfile
    compress_dir = zipfile.ZipFile(dir_path + '.zip', 'w')
    with compress_dir:
        # write each file separately
        for file in file_paths:
            compress_dir.write(file)


if __name__ == "__main__":
    path = sys.argv[1]

    if os.path.isdir(path):
        files_path = retrieve_file_paths(path)
        # print the list of files to be zipped
        print('The following list of files will be zipped:')
        for file_name in files_path:
            print(file_name)
        zip_dir(path, files_path)
    elif os.path.isfile(path):
        print('The %s will be zipped:' % path)
        zip_file(path)
    else:
        print('a special file(socket,FIFO,device file), please input file or dir')

16. Парсинг рейтинга фильма с IMDB

Нет, ну а вдруг пригодится? Такие парсеры всегда можно вставить в ботов для автоматического постинга на каналы, получается у вас уже может быть сеть из каналов про фильмы.

pandas и bs4 нужно будет установить

from bs4 import BeautifulSoup
import requests
import pandas as pd
import os

# Setting up session
s = requests.session()  

# List contaiting all the films for which data has to be scraped from IMDB
films = []

# Lists contaiting web scraped data
names = []
ratings = []
genres = []

# Define path where your films are present 
# For eg: "/Users/utkarsh/Desktop/films"
path = input("Enter the path where your films are: ")

# Films with extensions
filmswe = os.listdir(path)

for film in filmswe:
    # Append into my films list (without extensions)
    films.append(os.path.splitext(film)[0])
    # print(os.path.splitext(film)[0])

for line in films:
    # x = line.split(", ")
    title = line.lower()
    # release = x[1]
    query = "+".join(title.split()) 
    URL = "https://www.imdb.com/search/title/?title=" + query
    print(URL)
    # print(release)
    try: 
        response = s.get(URL)

        #getting contect from IMDB Website
        content = response.content

        # print(response.status_code)

        soup = BeautifulSoup(response.content, features="html.parser") 
        #searching all films containers found
        containers = soup.find_all("div", class_="lister-item-content")
        for result in containers:
            name1 = result.h3.a.text
            name = result.h3.a.text.lower()

            # Uncomment below lines if you want year specific as well, define year variable before this 
            # year = result.h3.find(
            # "span", class_="lister-item-year text-muted unbold"
            # ).text.lower() 

            #if film found (searching using name)
            if title in name:
                #scraping rating
                rating = result.find("div",class_="inline-block ratings-imdb-rating")["data-value"]
                #scraping genre
                genre = result.p.find("span", class_="genre")
                genre = genre.contents[0]

                #appending name, rating and genre to individual lists
                names.append(name1)
                ratings.append(rating)
                genres.append(genre)



    except Exception:
        print("Try again with valid combination of tile and release year")

#storing in pandas dataframe
df = pd.DataFrame({'Film Name':names,'Rating':ratings,'Genre':genres}) 

#making csv using pandas
df.to_csv('film_ratings.csv', index=False, encoding='utf-8')

17. Текст в речь

Библиотека gTTS использует гугловские технологии конвертации текста в речь. Не знаю где может быть полезно, но это действительно круто.

Надо будет установить gTTS --> (тык)

from gtts import gTTS 
import os
file = open("abc.txt", "r").read()

speech = gTTS(text=file, lang='en', slow=False)
speech.save("voice.mp3")
os.system("voice.mp3")

18. Поиск в гугл

Если перейти на google.com является для тебя тяжелой задачей, тебя могут спасти эти 3 строчки кода.

Чтобы всё работало как швейцарские часы --> pip install google

from googlesearch import search
query = "best hentai videos with Asynco and Max Wayld"

for i in search(query, tld="co.in", num=10, stop=10, pause=2):
    print(i)

19. Сокращение ссылок

Чтобы не использовать сторонние сервисы по типу bit.ly, ты всегда можешь сделать собственную "сокращалку" в пару строчек.

Надо будет установить pyshorteners --> (тык)

import pyshorteners

s=pyshorteners.Shortener()
url = "type your hentai videos here"

print(s.tinyurl.short(url))

20. Загрузка видео с Youtube

Сначала ты учишься загружать видео с ютуба, а потом делаешь свои софты для выгрузки хентая в огромных количествах. Народная мудрость. И точка.

Чтобы всё работало --> pip install pytube

from pytube import YouTube

link = input("Enter the link of youtube video:  ")
yt = YouTube(link)
ys = yt.streams.get_highest_resolution()

print("Downloading...")
ys.download("Downloads\python")
print("Download completed!!")

Деген-софты от наших ру кодеров.

Мы собрали здесь некоторые софты от наших ру кодеров, которыми они делились в своих каналах. Почти все темы для которых предназначались эти софты - уже неактуальны, но большинству людей, которые пробуют себя в кодинге, будет полезно поразбирать такие штуковины.

P.S: ни Макс, ни Асинка, не отвечают за качество кода здесь! :)

От Nazavod`a:

От KyouKisu:

От Paranoik`a:

От Svinarnika:

От Itachi:

От кодим ~ криптуем:

От ArteMm `へ´:


40 дополнительных мини-проектов.

Эти проекты идут отдельного от первого блока в статье, так как здесь мы просто делаем большой сборник из материалов, в которых сразу есть и код, и описание того, зачем собственно этот код нужен и как он работает.

Список большой, так что просто в быстром формате пробегайся по всем названиям, а потом уже полноценно разбирай то, что вызывает тепло в районе сердечка.

1. Создание акронимов

Кол-во строк кода: 6

Link: https://thecleverprogrammer.com/2021/01/13/acronyms-using-python

2. Парсинг твиттера без его API

Кол-во строк кода: 20+

Link: https://thecleverprogrammer.com/2020/08/17/scraping-twitter-with-python

3. Будильников много не бывает!

Кол-во строк кода: 21

Link: https://thecleverprogrammer.com/2021/01/13/alarm-clock-with-python

4. Слайсер для почты

Кол-во строк кода: 5

Link: https://thecleverprogrammer.com/2021/01/12/email-slicer-with-python

5. Генератор историй

Кол-во строк кода: 8

Link: https://thecleverprogrammer.com/2021/01/11/story-generator-with-python

6. Генератор рандомных паролей

Кол-во строк кода: 5

Link: https://thecleverprogrammer.com/2021/01/11/python-program-to-generate-password

7. Камень ножницы бумага

Кол-во строк кода: 37

Link: https://thecleverprogrammer.com/2021/01/10/rock-paper-and-scissors-game-with-python

8. Симулятор броска костей

Кол-во строк кода: 23

Link: https://thecleverprogrammer.com/2021/01/10/dice-roll-simulator-with-python

9. Генератор QR-кодов

Кол-во строк кода: 11

Link: https://thecleverprogrammer.com/2021/01/09/qr-codes-with-python

10. Создание квиз-викторины

Кол-во строк кода: 25

Link: https://thecleverprogrammer.com/2021/01/03/create-a-quiz-game-with-python

11. Печать цветного текста

Кол-во строк кода: 7

Link: https://thecleverprogrammer.com/2020/12/23/print-colored-text-with-python

12. Больше калькуляторов богу калькуляторов!

Кол-во строк кода: 16

Link: https://thecleverprogrammer.com/2020/12/21/bmi-calculator-with-python

13. Преобразование градусов Фаренгейта в градусы Цельсия

Кол-во строк кода: 6

Link: https://thecleverprogrammer.com/2020/11/30/convert-fahrenheit-to-celsius-with-python

14. Цифровые часы

Кол-во строк кода: 22+

Link: https://thecleverprogrammer.com/2021/01/09/digital-clock-with-python

15. Использование камеры телефона

Кол-во строк кода: 12

Link: https://thecleverprogrammer.com/2021/01/05/use-phone-camera-with-python

16. Музыкальный плеер

Кол-во строк кода: 45

Link: https://thecleverprogrammer.com/2020/12/27/music-player-gui-with-python

17. Игра жизни

Кол-во строк кода: 37

Link: https://thecleverprogrammer.com/2020/12/25/game-of-life-with-python

18. Извлечение текста из видео

Кол-во строк кода: 28

Link: https://thecleverprogrammer.com/2020/12/25/extract-text-from-videos-using-python

19. Создание игр

Кол-во строк кода: 36

Link: https://thecleverprogrammer.com/2020/12/23/create-a-game-with-python

20. Исправление орфографии

Кол-во строк кода: 9

Link: https://thecleverprogrammer.com/2020/12/18/spelling-correction-with-python

21. Черепашья графика

Кол-во строк кода: 279

Link: https://thecleverprogrammer.com/2020/12/10/turtle-graphics-with-python

22. Моделирование задачи Монти Холла

Кол-во строк кода: 27

Link: https://thecleverprogrammer.com/2020/12/09/monty-hall-problem-with-python

23. Конвертация видео в аудио

Кол-во строк кода: 24

Link: https://thecleverprogrammer.com/2020/12/08/video-to-audio-converter-with-python

24. Крестики-нолики с графическим интерфейсом

Кол-во строк кода: 210

Link: https://thecleverprogrammer.com/2020/12/06/tic-tac-toe-gui-with-python

25. Калькулятор с графическим интерфейсом

Кол-во строк кода: 43

Link: https://thecleverprogrammer.com/2020/12/05/calculator-gui-with-python

26. Игра в угадывание чисел

Кол-во строк кода: 21

Link: https://thecleverprogrammer.com/2020/12/04/number-guessing-game-with-python-and-c

27. Интерфейс для конвентера изображений

Кол-во строк кода: 28

Link: https://thecleverprogrammer.com/2020/12/02/image-converter-gui-with-python

28. Шахматная доска

Кол-во строк кода: 18

Link: https://thecleverprogrammer.com/2020/11/27/chessboard-with-python

29. Считыватель QR-кодов и штрих-кодов

Кол-во строк кода: 25

Link: https://thecleverprogrammer.com/2020/10/23/barcode-and-qr-code-reader-with-python

30. Извлечь текст из PDF

Кол-во строк кода: 20+

Link: https://thecleverprogrammer.com/2020/10/06/extract-text-from-pdf-using-python

31. Карточная игра

Кол-во строк кода: 129

Link: https://thecleverprogrammer.com/2020/10/04/card-game-with-python

32. Веб-парсер

Кол-во строк кода: 20+

Link: https://thecleverprogrammer.com/2020/10/01/web-scraper-with-python

33. Интерфейс текстового редактора

Кол-во строк кода: 46

Link: https://thecleverprogrammer.com/2020/09/25/text-editor-gui-with-python

33. Автоматическая отправка писем

Кол-во строк кода: 42

Link: https://thecleverprogrammer.com/2020/09/15/send-emails-with-python

34. Чат-бот

Кол-во строк кода: 53+

Link: https://thecleverprogrammer.com/2020/08/21/deploy-a-chatbot-with-python

35. Создание телеграм-бота

Кол-во строк кода: 13+

Link: https://thecleverprogrammer.com/2020/08/18/telegram-bot-with-python

36. Преобразование текста в речь

Кол-во строк кода: 10+

Link: https://thecleverprogrammer.com/2020/08/16/text-to-speech-with-python

37. Парсинг Instagram

Кол-во строк кода: 10+

Link: https://thecleverprogrammer.com/2020/07/30/scraping-instagram-with-python

38. Веб-парсинг для создания CSV

Кол-во строк кода: 20+

Link: https://thecleverprogrammer.com/2020/08/08/web-scraping-to-create-csv

39. Построение трехмерных график

Кол-во строк кода: 39

Link: https://thecleverprogrammer.com/2020/05/02/3d-graphs-with-matplotlib

40. Устройство системы рекомендаций Netflix

Кол-во строк кода: много...

Link: https://thecleverprogrammer.com/2022/07/05/netflix-recommendation-system-using-python


Бонусная часть

Материалы которые мы разобрали для написания этой статьи:

Немного бонусов:

Все эти большие и маленькие строчки кода для тебя с любовью и заботой упаковали Max Wayld и Asynco.

Послесловия для статей такого формата будут лишними, так что просто ещё раз упомяну что мы будем рады любому твоему фидбеку! Спасибо что прочитал всё это и (надеюсь) разобрал хотя-бы часть проектов.