Skip to content

Instantly share code, notes, and snippets.

@elibroftw
Last active February 21, 2022 03:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save elibroftw/063115da075fc2203a7cf20bd8a1542e to your computer and use it in GitHub Desktop.
Save elibroftw/063115da075fc2203a7cf20bd8a1542e to your computer and use it in GitHub Desktop.
Practical project ideas for beginner to intermediate Python developers

Practical and Helpful Programming Project Ideas

[Varying Difficulty] Website / Portfolio

  • [Easy] raw HTML/CSS and little to none vanilla Javascript
  • Flask for backend
  • Use Heroku to host it for free
  • [Intermediate] Use Jinja2 templating
  • My website's source code

[Easy] Blur Image

  • Create a program that blurs a user defined image file
  • No pointers on purpose
  • Add a GUI to your program so that users don't need to use a CLI. [Intermediate]
  • For a GUI, I recommend PySimpleGUI

[Varying Diffuclty] Desktop Wallpaper Setter

  • [Very Easy] A program that changes your desktop wallpaper from a selected file
  • [Easy]: cycle through a folder of images and set the desktop wallpaper every 1 minute
  • [Intermediate // Linux]: create a working cronjob (remove after you see it working)
  • [Intermediate // Windows]: create a task in task scheduler
  • [Hard // Linux]: In Bash/Python, automate the installation of the cronjob

[Intermediate] Web Scraping & Data Parsing

Go to https://www.cia.gov/the-world-factbook/field/military-expenditures/country-comparison and use inspect elements, Your job is to parse this web page and filter the data so that only the data with the latest "date of information" remains. Output should be order-preserved and in a CSV file (filename is arbitrary) To make it easier (not recommended), you can assume the latest date of info is 2021 EST. To make it even easier (not recommended) just preserve the order and output all of the data in a CSV hint: use requests, bs4, and the csv module

[Varying Difficulty] Using a REST API

  • Spotify Reference
  • You'll have to get a Spotify API key
    • [Hard] Do this task without a predefined Spotify API Key (it is possible)
  • See Search API Reference and make a program that lets users search for tracks using the Spotify API (you return a list of tracks)
  • Demo for album art
  • You just need to spit out a list of tracks
  • [Intermediate] Sort the tracks by popularity (you'll have to search the documentation yourself)
    • Either use sorted/sort and try to use a lambda instead of a function
  • [Intermediate+] To make this even harder, you can add a sort by artists feature, etc.

[Varying Difficulty] Try to send an email (your email -> your email) using Python

  • This is easier in 2022 than in 2017
  • Simple text message with subject
  • [Intermediate] Send up to 3 attachments and a text body
  • [Intermediate+] Send HTML body module: at least smptlib
  • If you are using gmail, you might have to change your security settings to allow custom clients

[Varying Difficulty] You can try to make your own key logger

At first just append the contents to a .log or .txt file Use the 'a' open type to append to bottom. HARDER: YOU WILL INCLUDE COPIED AND PASTED ITEMS WITH custom syntax # (e.g. USER_COPIED("")), (e.g. USER_PASTED(""))

[Hard] Make your own soundboard with your own sounds

  • This is a vary tedious task
  • My vision is one soundboard to rule them all and this would ideally be an app
  • Use PySimpleGUI for the GUI (Recommended but you don't have to)
  • [+] Let your soundboard include support for different "packs"
  • Specify a design/package guide for other users to create use their sounds on your soundboard default: your default pack PACKS_DIR/pack_name/sound_name/sound .mp3/ogg # pygame, playsound

[Intermediate] Make your own game using pygame (OOP)

[Hard] Turn one of these projects into an executable

  • Do not compile to onefile, as onefile requires unpacking the app every time
  • use sys.exit() instead of quit()
  • use pyinstaller, or cx_freeze to package
  • [Hard+] use Inno Installer to create a setup installer [Windows]
  • [Hard+] Create a build script to automate the building
  • Jungle Climb cx_freeze example

[Varying Difficulty] Make a Discord/Telegram/Session/Matrix bot (async)

  • One of my earliest projects was a Discord bot, but I stopped using it 4 years later
  • Furthermore, Discord has changed their API, meaning that a lot of development effort has gone down the drain

[Hard] Automate a YouTube Channel

  • Make a YouTube channel about Cringey TikTok
  • Every day, your bot will download 10 minutes worth of videos from r/TikTokCringe never downloaded before
  • Use mongodb/sqlite to keep track of the videos already been downloaded
  • Stitch the videos together using something like ffmpeg. I'm sure there are Python libraries too.
  • Upload video to YouTube using YouTube APIs if possible
  • Auto fill the video details
  • Auto generate thumbnails using PIL by taking screenshots from 3 random videos and adding Nice looking text saying "Cringey TikTok Compilation #3)
  • Deploy app to DigitalOcean or even self host and use cronjob or task scheduler

Email me or comment for bigger programming (not specifically Python) project ideas

@elibroftw
Copy link
Author

If a project wasn't described very well, comment below (or email me) and I'll make it more descriptive.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment