From b17655764774a4633e2a2ef33fc9bdf471acaa2e Mon Sep 17 00:00:00 2001 From: Iordanis <31080330+iordaniskot@users.noreply.github.com> Date: Tue, 7 Jan 2025 19:41:11 +0200 Subject: [PATCH 01/63] feat: add Image to WebP Converter with CLI and GUI options (#386) * feat: add Image to WebP Converter with CLI and GUI options * update README to include Images to WebP Converter sorted alphabetically --- Images to WebP Converter/README.md | 58 +++++++++++++++++++ Images to WebP Converter/image_to_webp.py | 29 ++++++++++ Images to WebP Converter/image_to_webp_gui.py | 35 +++++++++++ README.md | 2 + 4 files changed, 124 insertions(+) create mode 100644 Images to WebP Converter/README.md create mode 100644 Images to WebP Converter/image_to_webp.py create mode 100644 Images to WebP Converter/image_to_webp_gui.py diff --git a/Images to WebP Converter/README.md b/Images to WebP Converter/README.md new file mode 100644 index 00000000..e7e9b947 --- /dev/null +++ b/Images to WebP Converter/README.md @@ -0,0 +1,58 @@ +# Image to WebP Converter + +This repository contains two Python scripts for converting images to WebP format. One script is for command-line usage, and the other provides a graphical user interface (GUI) for easier interaction. + +## Files + +1. `image_to_webp.py`: A command-line tool for converting images to WebP format. +2. `image_to_webp_gui.py`: A GUI tool for converting images to WebP format. + +## Requirements + +- Python 3.x +- Pillow library +- Tkinter library (for the GUI tool) + +You can install the required libraries using pip: + +```sh +pip install Pillow +``` + +Tkinter is included with standard Python installations. If you encounter issues, you may need to install it separately. + +## Usage + +### Command-Line Tool + +The `image_to_webp.py` script allows you to convert images to WebP format using the command line. + +#### Arguments + +- `files`: Paths to the image files to convert. +- `save_directory`: Directory to save the converted WebP images. +- `quality`: Quality of the output WebP images (1-100). + +#### Example + +```sh +python image_to_webp.py image1.jpg image2.png /path/to/save/directory 80 +``` + +### GUI Tool + +The `image_to_webp_gui.py` script provides a graphical user interface for converting images to WebP format. + +#### Steps + +1. Run the script: + + ```sh + python image_to_webp_gui.py + ``` + +2. A file dialog will appear to select multiple image files. +3. Another dialog will appear to select the directory to save the converted WebP images. +4. A dialog will prompt you to enter the quality of the output WebP images (1-100). +5. The images will be converted and saved to the specified directory. + diff --git a/Images to WebP Converter/image_to_webp.py b/Images to WebP Converter/image_to_webp.py new file mode 100644 index 00000000..1ce4b2d2 --- /dev/null +++ b/Images to WebP Converter/image_to_webp.py @@ -0,0 +1,29 @@ +import argparse +from PIL import Image +import os + +# Set up argument parser +parser = argparse.ArgumentParser(description="Convert images to WebP format.") +parser.add_argument("files", nargs='+', help="Paths to the image files to convert.") +parser.add_argument("save_directory", help="Directory to save the converted WebP images.") +parser.add_argument("quality", type=int, help="Quality of the output WebP images (1-100).") + +args = parser.parse_args() + +webp_paths = [] + +for path in args.files: + if path: + # Open the image file + im = Image.open(path) + base_name = os.path.basename(path) + name, ext = os.path.splitext(base_name) + # Define the save path for the WebP image + save_path = os.path.join(args.save_directory, f"{name}.webp") + # Save the image as WebP with the specified quality + im.save(save_path, 'webp', quality=args.quality) + webp_paths.append(save_path) + print(f"Image converted and saved to: {save_path}") + +# python image_to_webp.py +# python image_to_webp.py image1.jpg image2.png /path/to/save/directory 80 \ No newline at end of file diff --git a/Images to WebP Converter/image_to_webp_gui.py b/Images to WebP Converter/image_to_webp_gui.py new file mode 100644 index 00000000..589e76e1 --- /dev/null +++ b/Images to WebP Converter/image_to_webp_gui.py @@ -0,0 +1,35 @@ +from tkinter import Label, Tk, simpledialog +from PIL import Image, ImageTk +import tkinter.filedialog as tkFileDialog +import os + +# Initialize the Tkinter root window +root = Tk() +root.withdraw() # Hide the root window + +# Open file dialog to select multiple image files +paths = tkFileDialog.askopenfilenames(filetypes=[("Image Files", ('.jpg', '.jpeg', '.png', '.bmp', '.gif'))]) +webp_paths = [] + +if paths: + # Open directory dialog to select the save directory + save_directory = tkFileDialog.askdirectory() + if save_directory: + # Ask user for the quality of the output WebP images + quality = simpledialog.askinteger("Quality", "Enter quality (1-100):", minvalue=1, maxvalue=100) + if quality: + for path in paths: + if path: + # Open the image file + im = Image.open(path) + base_name = os.path.basename(path) + name, ext = os.path.splitext(base_name) + # Define the save path for the WebP image + save_path = os.path.join(save_directory, f"{name}.webp") + # Save the image as WebP with the specified quality + im.save(save_path, 'webp', quality=quality) + webp_paths.append(save_path) + print(f"Image converted and saved to: {save_path}") + +# Close the Tkinter window +root.destroy() # Close the Tkinter window \ No newline at end of file diff --git a/README.md b/README.md index 07bb3a7a..fbebef09 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,7 @@ More information on contributing and the general code of conduct for discussion | Image Watermarker | [Image Watermarker](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Watermarker) | Adds a watermark to an image. | | Image to ASCII | [Image to ASCII](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20to%20ASCII) | Converts an image into ASCII art. | | Image to Gif | [Image to Gif](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20to%20GIF) | Generate gif from images. | +| Images to WebP Converter | [Images to WebP Converter] (https://github.com/DhanushNehru/Python-Scripts/tree/master/Images%20to%20WebP%20Converter) |Converts images to WebP vie cmd or GUI | | Interactive Dictionary | [Interactive Dictionary](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20InteractiveDictionary) | finding out meanings of words | | IP Geolocator | [IP Geolocator](https://github.com/DhanushNehru/Python-Scripts/tree/master/IP%20Geolocator) | Uses an IP address to geolocate a location on Earth. | | Jokes Generator | [Jokes generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Jokes%20Generator) | Generates jokes. | @@ -155,6 +156,7 @@ More information on contributing and the general code of conduct for discussion | Youtube Downloader | [Youtube Downloader](https://github.com/DhanushNehru/Python-Scripts/tree/master/Youtube%20Downloader) | Downloads any video from [YouTube](https://youtube.com) in video or audio format! | | Youtube Playlist Info Scraper | [Youtube Playlist Info Scraper](https://github.com/DhanushNehru/Python-Scripts/tree/master/Youtube%20Playlist%20Info%20Scraper) | This python module retrieve information about a YouTube playlist in json format using playlist link. | + ## Gitpod Use the cloud-free development environment where you can directly start coding. From 35f5bc0feaac6e292ac3929214eb50524448a617 Mon Sep 17 00:00:00 2001 From: karanDevX11 Date: Fri, 17 Jan 2025 15:15:49 +0545 Subject: [PATCH 02/63] Addition of snake game using python --- README.md | 8 +++--- Snake Game/README.md | 3 +++ Snake Game/data.txt | 1 + Snake Game/food.py | 18 ++++++++++++++ Snake Game/main.py | 46 ++++++++++++++++++++++++++++++++++ Snake Game/scoreboard.py | 31 +++++++++++++++++++++++ Snake Game/snake.py | 54 ++++++++++++++++++++++++++++++++++++++++ 7 files changed, 157 insertions(+), 4 deletions(-) create mode 100644 Snake Game/README.md create mode 100644 Snake Game/data.txt create mode 100644 Snake Game/food.py create mode 100644 Snake Game/main.py create mode 100644 Snake Game/scoreboard.py create mode 100644 Snake Game/snake.py diff --git a/README.md b/README.md index fbebef09..f400b966 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ More information on contributing and the general code of conduct for discussion | Image Watermarker | [Image Watermarker](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Watermarker) | Adds a watermark to an image. | | Image to ASCII | [Image to ASCII](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20to%20ASCII) | Converts an image into ASCII art. | | Image to Gif | [Image to Gif](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20to%20GIF) | Generate gif from images. | -| Images to WebP Converter | [Images to WebP Converter] (https://github.com/DhanushNehru/Python-Scripts/tree/master/Images%20to%20WebP%20Converter) |Converts images to WebP vie cmd or GUI | +| Images to WebP Converter | [Images to WebP Converter] (https://github.com/DhanushNehru/Python-Scripts/tree/master/Images%20to%20WebP%20Converter) | Converts images to WebP vie cmd or GUI | | Interactive Dictionary | [Interactive Dictionary](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20InteractiveDictionary) | finding out meanings of words | | IP Geolocator | [IP Geolocator](https://github.com/DhanushNehru/Python-Scripts/tree/master/IP%20Geolocator) | Uses an IP address to geolocate a location on Earth. | | Jokes Generator | [Jokes generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Jokes%20Generator) | Generates jokes. | @@ -97,7 +97,7 @@ More information on contributing and the general code of conduct for discussion | Longitude & Latitude to conical coverter | [Longitude Latitude conical converter](master/Longitude%20Latitude%20conical%20converter) | Converts Longitude and Latitude to Lambert conformal conic projection. | | Mail Sender | [Mail Sender](https://github.com/DhanushNehru/Python-Scripts/tree/master/Mail%20Sender) | Sends an email. | | Merge Two Images | [Merge Two Images](https://github.com/DhanushNehru/Python-Scripts/tree/master/Merge%20Two%20Images) | Merges two images horizontally or vertically. | -| Mood based youtube song generator | [Mood based youtube song generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Mood%20based%20youtube%20song%20generator) | This Python script fetches a random song from YouTube based on your mood input and opens it in your default web browser. | +| Mood based youtube song generator | [Mood based youtube song generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Mood%20based%20youtube%20song%20generator) | This Python script fetches a random song from YouTube based on your mood input and opens it in your default web browser. | | Mouse mover | [Mouse mover](https://github.com/DhanushNehru/Python-Scripts/tree/master/Mouse%20Mover) | Moves your mouse every 15 seconds. | | Morse Code | [Mose Code](https://github.com/DhanushNehru/Python-Scripts/tree/master/Morse%20Code) | Encodes and decodes Morse code. | | No Screensaver | [No Screensaver](https://github.com/DhanushNehru/Python-Scripts/tree/master/No%20Screensaver) | Prevents screensaver from turning on. | @@ -120,7 +120,7 @@ More information on contributing and the general code of conduct for discussion | QR Code with logo | [QR code with Logo](https://github.com/DhanushNehru/Python-Scripts/tree/master/QR%20with%20Logo) | QR Code Customization Feature | | Random Color Generator | [Random Color Generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Random%20Color%20Generator) | A random color generator that will show you the color and values! | | Remove Background | [Remove Background](https://github.com/DhanushNehru/Python-Scripts/tree/master/Remove%20Background) | Removes the background of images. | -| Road-Lane-Detection | [Road-Lane-Detection](https://github.com/NotIncorecc/Python-Scripts/tree/master/Road-Lane-Detection) | Detects the lanes of the road | +| Road-Lane-Detection | [Road-Lane-Detection](https://github.com/NotIncorecc/Python-Scripts/tree/master/Road-Lane-Detection) | Detects the lanes of the road | | Rock Paper Scissor 1 | [Rock Paper Scissor 1](https://github.com/DhanushNehru/Python-Scripts/tree/master/Rock%20Paper%20Scissor%201) | A game of Rock Paper Scissors. | | Rock Paper Scissor 2 | [Rock Paper Scissor 2](https://github.com/DhanushNehru/Python-Scripts/tree/master/Rock%20Paper%20Scissor%202) | A new version game of Rock Paper Scissors. | | Run Then Notify | [Run Then Notify](https://github.com/DhanushNehru/Python-Scripts/tree/master/Run%20Then%20Notify) | Runs a slow command and emails you when it completes execution. | @@ -128,6 +128,7 @@ More information on contributing and the general code of conduct for discussion | Simple DDOS | [Simple DDOS](https://github.com/VanshajR/Python-Scripts/tree/master/Simple%20DDOS) | The code allows you to send multiple HTTP requests concurrently for a specified duration. | | Simple TCP Chat Server | [Simple TCP Chat Server](https://github.com/DhanushNehru/Python-Scripts/tree/master/TCP%20Chat%20Server) | Creates a local server on your LAN for receiving and sending messages! | | Smart Attendance System | [Smart Attendance System](https://github.com/DhanushNehru/Python-Scripts/tree/master/Smart%20Attendance%20System) | This OpenCV framework is for Smart Attendance by actively decoding a student's QR Code. | +| Snake Game | [Snake Game](https://github.com/DhanushNehru/Python-Scripts/tree/master/Snake%20Game) | Classic snake game using python. | | Snake Water Gun | [Snake Water Gun](https://github.com/DhanushNehru/Python-Scripts/tree/master/Snake%20Water%20Gun) | A game similar to Rock Paper Scissors. | | Sorting | [Sorting](https://github.com/DhanushNehru/Python-Scripts/tree/master/Sorting) | Algorithm for bubble sorting. | | Star Pattern | [Star Pattern](https://github.com/DhanushNehru/Python-Scripts/tree/master/Star%20Pattern) | Creates a star pattern pyramid. | @@ -156,7 +157,6 @@ More information on contributing and the general code of conduct for discussion | Youtube Downloader | [Youtube Downloader](https://github.com/DhanushNehru/Python-Scripts/tree/master/Youtube%20Downloader) | Downloads any video from [YouTube](https://youtube.com) in video or audio format! | | Youtube Playlist Info Scraper | [Youtube Playlist Info Scraper](https://github.com/DhanushNehru/Python-Scripts/tree/master/Youtube%20Playlist%20Info%20Scraper) | This python module retrieve information about a YouTube playlist in json format using playlist link. | - ## Gitpod Use the cloud-free development environment where you can directly start coding. diff --git a/Snake Game/README.md b/Snake Game/README.md new file mode 100644 index 00000000..51592849 --- /dev/null +++ b/Snake Game/README.md @@ -0,0 +1,3 @@ +# Snake-Game + +![snake game demo](https://github.com/user-attachments/assets/a88cd856-a477-4f02-ac50-eb09a801cd8a) diff --git a/Snake Game/data.txt b/Snake Game/data.txt new file mode 100644 index 00000000..25bf17fc --- /dev/null +++ b/Snake Game/data.txt @@ -0,0 +1 @@ +18 \ No newline at end of file diff --git a/Snake Game/food.py b/Snake Game/food.py new file mode 100644 index 00000000..56c2c9cd --- /dev/null +++ b/Snake Game/food.py @@ -0,0 +1,18 @@ +from turtle import Turtle +import random + +class Food(Turtle): + def __init__(self): + super().__init__() + self.shape("circle") + self.penup() + self.shapesize(stretch_len= 0.5, stretch_wid= 0.5) + self.color("blue") + self.speed("fastest") + self.refresh() + + def refresh(self): + random_x = random.randint(-280, 280) + random_y = random.randint(-280, 280) + self.goto(random_x, random_y) + diff --git a/Snake Game/main.py b/Snake Game/main.py new file mode 100644 index 00000000..5ad9c3cc --- /dev/null +++ b/Snake Game/main.py @@ -0,0 +1,46 @@ +from turtle import Screen + +from snake import Snake +from food import Food +from scoreboard import Scoreboard +import time + +screen = Screen() +screen.setup(width= 600, height= 600) +screen.bgcolor("black") +screen.title("Snake Game") +screen.tracer(0) + +snake = Snake() +food = Food() +scoreboard = Scoreboard() + +screen.listen() +screen.onkey(snake.up, "Up") +screen.onkey(snake.down,"Down") +screen.onkey(snake.left,"Left") +screen.onkey(snake.right,"Right") + +is_game_on = True +while is_game_on: + screen.update() + time.sleep(0.15) + snake.move() + #detect collision with the food + if snake.head.distance(food) < 15: + food.refresh() + snake.extend() + scoreboard.increase_score() + + #detect collision with the wall + if snake.head.xcor() > 280 or snake.head.xcor() < -280 or snake.head.ycor() > 280 or snake.head.ycor() < -280: + scoreboard.reset() + snake.reset() + + #detect collision with the tail + for segment in snake.segments[1:]: + if snake.head.distance(segment) < 10: + scoreboard.reset() + snake.reset() + +screen.exitonclick() \ No newline at end of file diff --git a/Snake Game/scoreboard.py b/Snake Game/scoreboard.py new file mode 100644 index 00000000..074fe43f --- /dev/null +++ b/Snake Game/scoreboard.py @@ -0,0 +1,31 @@ +from turtle import Turtle +ALIGNMENT = "center" +FONT = ("Courier", 25, "normal") +class Scoreboard(Turtle): + def __init__(self): + super().__init__() + self.score = 0 + with open("data.txt") as data: + self.highscore = int(data.read()) + self.color("white") + self.penup() + self.goto(0, 260) + self.hideturtle() + self.update_score() + + def update_score(self): + self.clear() + self.write(f"Score: {self.score} HighScore: {self.highscore}", align= ALIGNMENT, font= FONT) + + def reset(self): + if self.score > self.highscore: + self.highscore = self.score + with open("data.txt", "w") as data: + data.write(f"{self.highscore}") + self.score = 0 + self.update_score() + + def increase_score(self): + self.score += 1 + self.update_score() + diff --git a/Snake Game/snake.py b/Snake Game/snake.py new file mode 100644 index 00000000..8286e363 --- /dev/null +++ b/Snake Game/snake.py @@ -0,0 +1,54 @@ +from turtle import Turtle +STARTING_POSITIONS = [(0, 0), (-20, 0), (-40, 0)] +MOVE_DISTANCE = 20 +UP = 90 +DOWN = 270 +RIGHT = 0 +LEFT = 180 + +class Snake: + def __init__(self): + self.segments = [] + self.create_snake() + self.head = self.segments[0] + + def create_snake(self): + for position in STARTING_POSITIONS: + self.add_segment(position) + + def reset(self): + for seg in self.segments: + seg.goto(1000, 1000) + self.segments.clear() + self.create_snake() + self.head = self.segments[0] + + def add_segment(self, position): + new_segment = Turtle("square") + new_segment.penup() + new_segment.color("white") + new_segment.goto(position) + self.segments.append(new_segment) + + def extend(self): + self.add_segment(self.segments[-1].position()) + + def move(self): + for seg_num in range(len(self.segments) - 1, 0, -1): + new_x = self.segments[seg_num - 1].xcor() + new_y = self.segments[seg_num - 1].ycor() + self.segments[seg_num].goto(new_x, new_y) + self.segments[0].forward(MOVE_DISTANCE) + + def up(self): + if self.head.heading() != DOWN: + self.head.setheading(UP) + def down(self): + if self.head.heading() != UP: + self.head.setheading(DOWN) + def left(self): + if self.head.heading() != RIGHT: + self.head.setheading(LEFT) + def right(self): + if self.head.heading() != LEFT: + self.head.setheading(RIGHT) \ No newline at end of file From 0475a51a89e59a32e3d38eaea8957222644d66d3 Mon Sep 17 00:00:00 2001 From: karanDevX11 Date: Fri, 17 Jan 2025 15:19:48 +0545 Subject: [PATCH 03/63] Add snake game and update readme --- Snake Game/food.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Snake Game/food.py b/Snake Game/food.py index 56c2c9cd..b014c00a 100644 --- a/Snake Game/food.py +++ b/Snake Game/food.py @@ -1,8 +1,8 @@ from turtle import Turtle import random -class Food(Turtle): - def __init__(self): +class Food(Turtle): #It refers to dot as food + def __init__(self): super().__init__() self.shape("circle") self.penup() From 03ef3892371d600b17efe8bc35bb39957969476a Mon Sep 17 00:00:00 2001 From: Arjayn Piratheeparatnam <122946744+ArjaynP@users.noreply.github.com> Date: Fri, 24 Jan 2025 22:38:01 -0500 Subject: [PATCH 04/63] UniversityRankingsPythonScript (#397) Adding University Rankings Python project to repository. This program ranks universities in its respective order using data from .csv files and incorporates location attributes such as continent, country, and capital. --- README.md | 1 + University Rankings/README.md | 10 ++ University Rankings/output.txt | 1 + University Rankings/pyvenv.cfg | 8 ++ University Rankings/univRanking.py | 192 +++++++++++++++++++++++++++++ 5 files changed, 212 insertions(+) create mode 100644 University Rankings/README.md create mode 100644 University Rankings/output.txt create mode 100644 University Rankings/pyvenv.cfg create mode 100644 University Rankings/univRanking.py diff --git a/README.md b/README.md index fbebef09..47d5b8ca 100644 --- a/README.md +++ b/README.md @@ -141,6 +141,7 @@ More information on contributing and the general code of conduct for discussion | Turtle Graphics | [Turtle Graphics](https://github.com/DhanushNehru/Python-Scripts/tree/master/Turtle%20Graphics) | Code using turtle graphics. | | Twitter Selenium Bot | [Twitter Selenium Bot](https://github.com/DhanushNehru/Python-Scripts/tree/master/Twitter%20Selenium%20Bot) | A bot that can interact with Twitter in a variety of ways. | | Umbrella Reminder | [Umbrella Reminder](https://github.com/DhanushNehru/Python-Scripts/tree/master/Umbrella%20Reminder) | A reminder for umbrellas. | +| University Rankings | [University Rankings](https://github.com/DhanushNehru/Python-Scripts/tree/master/University%20Rankings) | Ranks Universities across the globes using the Country, Continent, and Captial | | URL Shortener | [URL Shortener](https://github.com/DhanushNehru/Python-Scripts/tree/master/URL%20Shortener) | A URL shortener code compresses long URLs into shorter, more manageable links | | Video Downloader | [Video Downloader](https://github.com/DhanushNehru/Python-Scripts/tree/master/Video%20Downloader) | Download Videos from youtube to your local system. | | Video Watermarker | [Video Watermarker](https://github.com/DhanushNehru/Python-Scripts/tree/master/Video%20Watermarker) | Adds watermark to any video of your choice. | diff --git a/University Rankings/README.md b/University Rankings/README.md new file mode 100644 index 00000000..d769243a --- /dev/null +++ b/University Rankings/README.md @@ -0,0 +1,10 @@ +# UniversityRankings + A program that I constructed for ranking universities based on two files provided by the user. One would contain the list of universities around the world ranked in order, and another file contains the various countries and its corresponding capital. In this instance, I used two files called capitals.csv and TopUni.csv. I chose to create this program by using one function, however, this program can be altered and constructed by using multiple functions. Since the files that we are using are comma separated values (csv), I chose to open them by importing and using pandas as pd. The output was displayed on an output.txt file to record my output in that file. Below are the following calculations that were made in the program. + + 1. The first part of the program details the total number of universities in the TopUni.csv file. + 2. The second part of the program displays all the available countries + 3. The third part of the program illustrates all the available continents + 4. The next part of the program identifies the international and national rankings that are associated with the selected country + 5. The following portion of the code calculates the average score, relative score, + 6. The next part determines the capital of the selected country + 7. The last part of the code outputs the universities name(s) that contain the capital diff --git a/University Rankings/output.txt b/University Rankings/output.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/University Rankings/output.txt @@ -0,0 +1 @@ + diff --git a/University Rankings/pyvenv.cfg b/University Rankings/pyvenv.cfg new file mode 100644 index 00000000..b83f8fb7 --- /dev/null +++ b/University Rankings/pyvenv.cfg @@ -0,0 +1,8 @@ +home = /Library/Frameworks/Python.framework/Versions/3.10 +implementation = CPython +version_info = 3.10.0.final.0 +virtualenv = 20.13.0 +include-system-site-packages = false +base-prefix = /Library/Frameworks/Python.framework/Versions/3.10 +base-exec-prefix = /Library/Frameworks/Python.framework/Versions/3.10 +base-executable = /usr/local/bin/python3.10 diff --git a/University Rankings/univRanking.py b/University Rankings/univRanking.py new file mode 100644 index 00000000..0608261c --- /dev/null +++ b/University Rankings/univRanking.py @@ -0,0 +1,192 @@ +import pandas as pd + +def getInformation(selectedCountry, rankingFileName, capitalsFileName): + # add selected country + # Total number of universities + # show countries + # show continents + # calculate average score (sum of all uni scores within the selected country) / (number of universities within the selected country) + # display the average score + # calculate the relative score (average score) / (The highest score within the continent where the university is selected) + + available_countries = 0 + counter = 0 + countries = "" + continents = "" + countries_lst = [] + continents_lst = [] + TopUni = pd.read_csv(rankingFileName) + Capitals = pd.read_csv(capitalsFileName) + country_counter = 0 + country_counter_rank = 1 + + file = open("output.txt", "w") # open output.txt file where output is stored + + for line in range(len(TopUni)): + counter += 1 + + file.write("Total number of Universities => {}\n" .format(counter)) # PART 1 TOTAL NUMBER OF UNIVERSITIES + + # LISTING ALL AVAILABLE COUNTRIES WITHIN THE FILE + for country in Capitals["Country Name"]: + if country not in countries_lst: + countries_lst.append(country) + available_countries += 1 + + for country in countries_lst: + if countries == "": + countries = countries + country + else: + countries = countries + ", " + country + + file.write("Available countries => {}\n" .format(countries)) # PART 2 AVAILABLE COUNTRIES + + # FINDING ALL AVAILABLE CONTINENTS WITHIN THE FILE + for continent in Capitals["Continent"]: + if continent not in continents_lst: + continents_lst.append(continent) + + for continent in continents_lst: + if continents == "": + continents = continents + continent + else: + continents = continents + ", " + continent + + file.write("Available Continents => {}\n" .format(continents)) # PART 3 AVAILABLE CONTINENTS + + # FINDING THE INTERNATIONAL RANK OF COUNTRIES ASSOCIATED WITH THE SELECTED COUNTRY + for country in TopUni["Country"]: + if country == selectedCountry: + file.write("At international rank => {} the university name is => {}\n" .format(country_counter_rank, TopUni["Institution name"][country_counter])) # PART 4 INTERNATIONAL RANK + country_counter += 1 + country_counter_rank += 1 + + country_counter = 0 + country_national_counter_rank = 1 + + for country in TopUni["Country"]: + if country == selectedCountry: + file.write("At national rank => {} the university name is => {}\n" .format(country_national_counter_rank, TopUni["Institution name"][country_counter])) # PART 5 NATIONAL RANK + country_national_counter_rank += 1 + country_counter += 1 + + number_of_universities = 0 + university_score = 0 + TopUni = pd.read_csv(rankingFileName) + counter = 0 + + for country in TopUni["Country"]: + if selectedCountry == country: + university_score += TopUni["Score"][counter] + number_of_universities += 1 + counter += 1 + + # THE AVERAGE SCORE CALCULATIONS + averageScore = university_score / number_of_universities + file.write("The average score => {}%\n" .format(round(averageScore, 1))) # PART 6 AVERAGE SCORE # PART 6 + + number_of_universities = 0 + university_score = 0 + TopUni = pd.read_csv(rankingFileName) + Capitals = pd.read_csv(capitalsFileName) + highestScore1 = 0 + highestScore2 = 0 + highestScore3 = 0 + highestScore4 = 0 + highestScore5 = 0 + counter1 = 0 + counter2 = 0 + counter3 = 0 + continent = "" + + # CALCULATING THE RELATIVE SCORE + for country in TopUni["Country"]: + if selectedCountry == country: + university_score += TopUni["Score"][counter1] + number_of_universities += 1 + counter1 += 1 + + averageScore = university_score / number_of_universities + + for country in Capitals["Country Name"]: + if selectedCountry == country: + continent = Capitals["Continent"][counter2] + counter2 += 1 + + for continentScore in TopUni["Score"]: + if TopUni["Country"][counter3] in ["Jordan", "Palestine", "China", "Israel", "Japan", "Singapore", "South Korea", "Taiwan"]: + if continentScore > highestScore1: + highestScore1 = continentScore + elif TopUni["Country"][counter3] in "Australia": + if continentScore > highestScore2: + highestScore2 = continentScore + elif TopUni["Country"][counter3] in ["Canada", "USA"]: + if continentScore > highestScore3: + highestScore3 = continentScore + elif TopUni["Country"][counter3] in ["Denmark", "France", "Germany", "Netherlands", "Norway", "Sweden", "Switzerland", "United Kingdom"]: + if continentScore > highestScore4: + highestScore4 = continentScore + elif TopUni["Country"][counter3] in ["Egypt"]: + if continentScore > highestScore5: + highestScore5 = continentScore + + counter3 += 1 + + # PART 7 RELATIVE SCORE + if selectedCountry in ["Jordan", "Palestine", "China", "Israel", "Japan", "Singapore", "South Korea", "Taiwan"]: + relativeScore = (averageScore / highestScore1) * 100 + file.write("The relative score to the top university in {} is => ({} / {}) x 100% = {}%\n" .format(continent, averageScore, highestScore1, round(relativeScore, 1))) + elif selectedCountry in "Australia": + relativeScore = (averageScore / highestScore2) * 100 + file.write("The relative score to the top university in {} is => ({} / {}) x 100% = {}%\n" .format(continent, averageScore, highestScore2, round(relativeScore, 1))) + elif selectedCountry in ["Canada", "USA"]: + relativeScore = (averageScore / highestScore3) * 100 + file.write("The relative score to the top university in {} is => ({} / {}) x 100% = {}%\n" .format(continent, averageScore, highestScore3, round(relativeScore, 1))) + elif selectedCountry in ["Denmark", "France", "Germany", "Netherlands", "Norway", "Sweden", "Switzerland", "United Kingdom"]: + relativeScore = (averageScore / highestScore4) * 100 + file.write("The relative score to the top university in {} is => ({} / {}) x 100% = {}%\n" .format(continent, averageScore, highestScore4, round(relativeScore, 1))) + elif selectedCountry in ["Egypt"]: + relativeScore = (averageScore / highestScore5) * 100 + file.write("The relative score to the top university in {} is => ({} / {}) x 100% = {}%\n" .format(continent, averageScore, highestScore5, round(relativeScore, 1))) + + # FINDING THE CAPITAL OF THE SELECTED COUNTRY + Capitals = pd.read_csv(capitalsFileName) + capital = "" + counter = 0 + + for cap in Capitals["Country Name"]: + if cap == selectedCountry: + capital = Capitals["Capital"][counter] + counter += 1 + + file.write("The capital is => {}\n" .format(capital)) # PART 8 CAPITAL OF SELECTED COUNTRY + + # FINDING THE UNIVERSITIES THAT HAVE THE NAME OF THE CAPITAL WITHIN IT + TopUni = pd.read_csv(rankingFileName) + Capitals = pd.read_csv(capitalsFileName) + capital = "" + counter1 = 0 + counter2 = 0 + number_counter = 1 + for cap in Capitals["Country Name"]: + if cap == selectedCountry: + capital = Capitals["Capital"][counter1] + counter1 += 1 + + file.write("The universities that contain the capital name => \n") # PART 9 CAPITAL NAME IN UNIVERSITY NAME + + for uni in TopUni["Country"]: + if (selectedCountry == uni) and (capital in TopUni["Institution name"][counter2]): + file.write("#" + str(number_counter) + " " + TopUni["Institution name"][counter2] + "\n") + number_counter += 1 + counter2 += 1 + + +def __main__(): + country = input("input the country you want to look at: ") + file1 = "TopUni.csv" + file2 = "capitals.csv" + getInformation(country, file1, file2) + + +__main__() From 394985135b43568c199e1c5c70b2696cbb8c669c Mon Sep 17 00:00:00 2001 From: Jaiwant <158043502+Mathdallas-code@users.noreply.github.com> Date: Mon, 27 Jan 2025 20:29:45 +0530 Subject: [PATCH 05/63] Adding Distance Calculator (#389) * Added program * Delete distance_calculator.py * Create README.md * Added program * Updated README.md with program * Added example to README.md * Fixed bugs and added feature Fixed a bug where negative numbers were not allowed and added quit feature to quit the program * Fixed floating point bug Made the calculator compatible with floating(decimal)numbers * Added better input validation --- Distance Calculator/README.md | 14 +++++ Distance Calculator/distance_calculator.py | 71 ++++++++++++++++++++++ README.md | 1 + 3 files changed, 86 insertions(+) create mode 100644 Distance Calculator/README.md create mode 100644 Distance Calculator/distance_calculator.py diff --git a/Distance Calculator/README.md b/Distance Calculator/README.md new file mode 100644 index 00000000..4d00f8b1 --- /dev/null +++ b/Distance Calculator/README.md @@ -0,0 +1,14 @@ +# Program +This is a *distance calculator*, used to calculate the distance between two points on a 2D plane. + +# How to use + +## Use any of the following commands - +`python distance_calculator.py` + +`python3 distance_calculator.py` + +## Example +![image](https://github.com/user-attachments/assets/987537c2-236e-4560-9a06-3de4bbe98f5e) + +Made by Mathdallas_code(me) diff --git a/Distance Calculator/distance_calculator.py b/Distance Calculator/distance_calculator.py new file mode 100644 index 00000000..b5b393c8 --- /dev/null +++ b/Distance Calculator/distance_calculator.py @@ -0,0 +1,71 @@ +# Uses the pythagorean theorem to calculate the distance between two points on a 2D plane. +# The points are represented as tuples of two numbers. +# The function should return a float. + +# Sample :- startX = 0, startY = 0, endX = 3, endY = 4. +# So, according to pythagorean theorem, the distance between these two points is 5.0. + +# Hope this helps! + +# Importing module(s) +import math + +# Main loop +while True: + use_program=input("Do you want to calculate the distance between two points? (yes/no): ") + if use_program.lower() == "yes": + pass + elif use_program.lower() == "no": + print("Thank you for using the distance calculator!") + quit() + else: + print("Invalid input! Please enter 'yes' or 'no'.") + continue + + # Input validation for startX, startY, endX, endY + + # startX + while True: + startX = input("Enter starting x-coordinate: ") + if not startX.isnumeric(): + print("Error! Input has to be a number!") + continue + else: + break + + # startY + while True: + startY = input("Enter starting y-coordinate: ") + if not startY.isnumeric(): + print("Error! Input has to be a number!") + continue + else: + break + + # endX + while True: + endX = input("Enter ending x-coordinate: ") + if not endX.isnumeric(): + print("Error! Input has to be a number!") + continue + else: + break + + # endY + while True: + endY = input("Enter ending y-coordinate: ") + if not endY.isnumeric(): + print("Error! Input has to be a number!") + continue + else: + break + + # Converting the values to floats + startX = float(startX) + startY = float(startY) + endX = float(endX) + endY = float(endY) + + # The calculation + distance = math.sqrt(math.pow(startX - endX, 2) + math.pow(startY - endY, 2)) + print(f"The distance between ({startX}, {startY}) and ({endX}, {endY}) is {distance} units.") diff --git a/README.md b/README.md index c37598b7..3754dcc3 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,7 @@ More information on contributing and the general code of conduct for discussion | Currency Script | [Currency Script](https://github.com/DhanushNehru/Python-Scripts/tree/master/Currency%20Script) | A Python script to convert the currency of one country to that of another. | | Digital Clock | [Digital Clock](https://github.com/DhanushNehru/Python-Scripts/tree/master/Digital%20Clock) | A Python script to preview a digital clock in the terminal. | | Display Popup Window | [Display Popup Window](https://github.com/DhanushNehru/Python-Scripts/tree/master/Display%20Popup%20Window) | A Python script to preview a GUI interface to the user. | +| Distance Calculator | [Distance Calculator](https://github.com/Mathdallas-code/Python-Scripts/tree/master/Distance%20Calculator) | A Python script to calculate the distance between two points. | Duplicate Finder | [Duplicate Finder](https://github.com/DhanushNehru/Python-Scripts/tree/master/Duplicate%Fnder) | The script identifies duplicate files by MD5 hash and allows deletion or relocation. | | Emoji | [Emoji](https://github.com/DhanushNehru/Python-Scripts/tree/master/Emoji) | The script generates a PDF with an emoji using a custom TrueType font. | | Emoji to PDF | [Emoji to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/master/Emoji%20To%20Pdf) | A Python Script to view Emoji in PDF. | From 03b3f6d4f08be2ca65479e3adb5dc6376a401cd7 Mon Sep 17 00:00:00 2001 From: Arjayn Piratheeparatnam <122946744+ArjaynP@users.noreply.github.com> Date: Mon, 27 Jan 2025 10:00:59 -0500 Subject: [PATCH 06/63] Pizza order python script (#391) * Adding Pizza Order Project files Creating Pull Request to add new Python Project "Pizza Order" * Update README.md --- Pizza Order/PizzaTest.py | 112 ++++++++++++++++++++++++++++++++++++ Pizza Order/README.md | 6 ++ Pizza Order/order.py | 80 ++++++++++++++++++++++++++ Pizza Order/pizzaReceipt.py | 105 +++++++++++++++++++++++++++++++++ Pizza Order/pyvenv.cfg | 8 +++ README.md | 1 + 6 files changed, 312 insertions(+) create mode 100644 Pizza Order/PizzaTest.py create mode 100644 Pizza Order/README.md create mode 100644 Pizza Order/order.py create mode 100644 Pizza Order/pizzaReceipt.py create mode 100644 Pizza Order/pyvenv.cfg diff --git a/Pizza Order/PizzaTest.py b/Pizza Order/PizzaTest.py new file mode 100644 index 00000000..bc77171d --- /dev/null +++ b/Pizza Order/PizzaTest.py @@ -0,0 +1,112 @@ +import subprocess + + +def runTest (file, inText): + if file =="order": + res = subprocess.run("python " + file + ".py", input=inText, capture_output=True, text=True, shell=True) + return res.stdout + + if file == "pizzaReceipt": + res = subprocess.run("python -c \"from pizzaReceipt import *; generateReceipt([" +inText+ "])\"", capture_output=True, text=True, shell= True) + return res.stdout + + +def equalWithoutSpaces(expected, student): + expected = expected.replace(" ", "") + expected = expected.replace("\t", "") + student = student.replace(" ", "") + student = student.replace("\t", "") + return expected == student + + + +# --------------- Test 1 - No Order--------------- + +inputString = "" +studentOutput = runTest("pizzaReceipt", inputString) +expectedOutput = "You did not order anything\n" + +# Compare studentOutput to expectedOutput +if studentOutput == expectedOutput: + print("Test 1 Passed. (Receipt for empty order)") +else: + print("Test 1 Failed. (Receipt for empty order)") + +#print(studentOutput) + +# --------------- Test 2 - List of Orders--------------- + +inputString = "('L', ['HAM', 'BACON', 'ONION', 'TOMATO']), ('S', ['PEPPERONI', 'SAUSAGE', 'CHICKEN', 'HAM']), ('L', ['BROCCOLI', 'CHICKEN', 'ONION'])" +studentOutput = runTest("pizzaReceipt", inputString) +expectedOutput = "Your order: \nPizza 1: L 11.99\n- HAM\n- BACON\n- ONION\n- TOMATO\nExtra Topping (L) 1.00\n" +expectedOutput += "Pizza 2: S 7.99\n- PEPPERONI\n- SAUSAGE\n- CHICKEN\n- HAM\nExtra Topping (S) 0.50\n" +expectedOutput += "Pizza 3: L 11.99\n- BROCCOLI\n- CHICKEN\n- ONION\nTax: 4.35\nTotal: 37.82\n" + +# Compare studentOutput to expectedOutput +#if studentOutput == expectedOutput: +if equalWithoutSpaces(expectedOutput, studentOutput): + print("Test 2 Passed. (Receipt for empty order of 3 pizzas)") +else: + print("Test 2 Failed. (Receipt for empty order of 3 pizzas)") + + +# --------------- Test 3 - List of Orders--------------- + +inputString = "('XL', ['GREEN PEPPER', 'HOT PEPPER', 'MUSHROOM', 'ONION', 'SPINACH']), ('L', ['PEPPERONI', 'ONION', 'OLIVE', 'MUSHROOM']), ('L', ['PINEAPPLE', 'HAM']), ('M', ['GROUND BEEF', 'TOMATO', 'ONION', 'SPINACH'])" +studentOutput = runTest("pizzaReceipt", inputString) +expectedOutput = "Your order: \nPizza 1: XL 13.99\n- GREEN PEPPER\n- HOT PEPPER\n- MUSHROOM\n- ONION\n- SPINACH\nExtra Topping (XL) 1.25\n" +expectedOutput += "Extra Topping (XL) 1.25\nPizza 2: L 11.99\n- PEPPERONI\n- ONION\n- OLIVE\n- MUSHROOM\n" +expectedOutput += "Extra Topping (L) 1.00\nPizza 3: L 11.99\n- PINEAPPLE\n- HAM\nPizza 4: M 9.99\n" +expectedOutput += "- GROUND BEEF\n- TOMATO\n- ONION\n- SPINACH\nExtra Topping (M) 0.75\nTax: 6.79\nTotal: 59.00\n" + +# Compare studentOutput to expectedOutput +if equalWithoutSpaces(expectedOutput, studentOutput): + print("Test 3 Passed. (Receipt for empty order of 4 pizzas)") +else: + print("Test 3 Failed. (Receipt for empty order of 4 pizzas)") + +# --------------- Test 4 - Find Specific Values in Output --------------- + +studentOutput = runTest("order", "Yes\nL\nHAM\nX\nNo\n") + +if studentOutput.find("13.55") != -1: + print("Test 4 Passed. (Ordering system for order of 1 pizza)") +else: + print("Test 4 Failed. (Ordering system for order of 1 pizza)") + +#print(studentOutput) + +# --------------- Test 5 - Find Specific Values in Output--------------- + +studentOutput = runTest("order", "Yes\nmedium\nM\nLIST\npepperoni\nonion\nmushroom\nhot pepper\ntomato\nX\nq\n") + +if studentOutput.find("\"X\"\n('") != -1 and studentOutput.count("Choose a size:") == 2 and studentOutput.count("Type in one of our toppings") == 7 and studentOutput.find("1.49") != -1 and studentOutput.find("12.98") != -1: + print("Test 5 Passed. (Ordering system with typo and use of LIST)") +else: + + print("Test 5 Failed. (Ordering system with typo and use of LIST)") + +print() +print(studentOutput.find("\"X\"\n('") != -1) +print(studentOutput.count("Choose a size:") == 2) +print(studentOutput.count("Type in one of our toppings") == 7) +print(studentOutput.find("1.49") != -1) +print(studentOutput.find("12.98") != -1) +print() + +# --------------- Find Specific Values in Output --------------- + +studentOutput = runTest("order", "y\nm\nsausage\nbacon\nonion\nX\ny\nXl\nchicken\ntomato\nspinach\nmushroom\nx\ny\nm\nolive\nbroccoli\nhot pepper\ngreen pepper\nx\nno\n") + +if studentOutput.count("Type in one of our toppings") == 14 and studentOutput.find("4.68") != -1 and studentOutput.find("40.65") != -1: + print("Test 6 Passed. (Ordering system for order of 3 pizzas)") +else: + print("Test 6 Failed. (Ordering system for order of 3 pizzas)") + +# print(studentOutput) +# print(expectedOutput) +# -------------------------------- + + + + diff --git a/Pizza Order/README.md b/Pizza Order/README.md new file mode 100644 index 00000000..b859e05f --- /dev/null +++ b/Pizza Order/README.md @@ -0,0 +1,6 @@ +# OrderPizza + A program that I created in one of my computer science courses containing a frontend and backend. The frontend deals with asking the user for their order, while the backend focuses on storing the information in a receipt format along with its calculations by using functions, lists, and tuples. + + In the frontend, the user first asks if the customer would like to order. If they say no, the code exits completely and is terminated. If the user says yes, it will then ask for the size of pizza as each have a different price range. After, the user will ask for toppings. The maximum that they can enter is three. Afterwards, every topping will cost an additional price to its total. After they have completed asking toppings, the program creates the order in a tuple and is stored in a variable. If the user would like to continue to ordering, the program would loop once more using a while loop and repeat the same questions that were asked in the last instance Afterwards, the second order is incremented to the variable containing the tuple. Otherwise, the code exits and the pizza receipt file is called using the variable of the tuple containing the pizza order and will print a receipt detailing the order and the total. + + In the backend, once the customer has finished ordering, the function is called using the variable as a paramter containing the customers order and creates a receipt by first showing the first pizza, its size, toppings and the amount is placed on the right hand side. If there are more than three toppings, it will show its additional cost as well. If there are more pizzas included, it will repeat the process once more. Afterwards, it shows the total before tax, the additional 13% tax in dollar amount and the total with tax. diff --git a/Pizza Order/order.py b/Pizza Order/order.py new file mode 100644 index 00000000..3ece1594 --- /dev/null +++ b/Pizza Order/order.py @@ -0,0 +1,80 @@ +# purpose of order.py is the front end for users to submit their order +from pizzaReceipt import * # asks to import all functions found in the pizzaReceipt.py file + +# set all initial variables before beginning +size = "" +pizza_lst = [] +pizza_lst_current = [] +toppings_lst = [] # list to be a parameter for generateReceipt function +list_order_yes = ["Yes", "yes", "Y", "y", "YES"] +list_order_no = ["No", "no", "Q", "NO", "N", "n"] +TOPPINGS = ("ONION", "TOMATO", "GREEN PEPPER", "MUSHROOM", "OLIVE", "SPINACH", "BROCCOLI", "PINEAPPLE", + "HOT PEPPER", "PEPPERONI", "HAM", "BACON", "GROUND BEEF", "CHICKEN", "SAUSAGE") + +# ask user whether they want to order. +order = input("Do you want to order a pizza? ") + +# case for when an invalid input is submitted +while (order not in list_order_yes) and (order not in list_order_no): + order = input("Do you want to order a pizza? ") + +# ask for size +if order in list_order_yes: + size = input("Choose a size: ") + size.upper() + + # case for when a user inputs invalid size + while size.upper() not in ["S", "M", "L", "XL"]: + size = input("Choose a size: ") + +# entire loop to repeat if user wants to order more than one pizza +while order in list_order_yes: + # set empty toppings list as it will show empty each time loop is made + toppings_lst = [] + # ask user for topping, whether they want to see a list of the toppings, or to finish ordering toppings. + topping = input('Type in one of our toppings to add it to your pizza. To see the list of toppings, enter "LIST". ' + 'When you are done adding toppings, enter "X" ') + + # cae for when a user places an invalid input for this question + while (topping.upper() != "X") and (topping.upper() != "LIST") and (topping.upper() not in TOPPINGS): + topping = input('Type in one of our toppings to add it to your pizza. To see the list of toppings, enter "LIST". ' + 'When you are done adding toppings, enter "X" ') + + print() + # toppings while loop which ask for toppings selection or list view, multiple times until user enters X + while topping.upper() != "X": + TOPPINGS = ("ONION", "TOMATO", "GREEN PEPPER", "MUSHROOM", "OLIVE", "SPINACH", "BROCCOLI", "PINEAPPLE", + "HOT PEPPER", "PEPPERONI", "HAM", "BACON", "GROUND BEEF", "CHICKEN", "SAUSAGE") + if topping.upper() == "LIST": + print(topping.upper()) + print(TOPPINGS) + topping = input('Type in one of our toppings to add it to your pizza. To see the list of toppings, enter "LIST". ' + 'When you are done adding toppings, enter "X" \n \n') + elif topping.upper() in TOPPINGS: + print(topping.upper()) + print("Added", topping.upper(), "to your pizza") + toppings_lst.append(topping) + topping = input('Type in one of our toppings to add it to your pizza. To see the list of toppings, enter "LIST". ' + 'When you are done adding toppings, enter "X" \n \n') + + # add the size and toppings list as a tuple to pizza_lst + pizza_lst.append((size.upper(), toppings_lst)) + print(pizza_lst) + # ask whether they want to continue ordering + order = input("Do you want to continue ordering? ") + + # case for when user types invalid input + while (order not in list_order_yes) and (order not in list_order_no): + order = input("Do you want to order a pizza? ") + + # if they say no, break the loop and go through the last line of the code + if order in list_order_no: + break + elif order in list_order_yes: + size = input("Choose a size: ") # if they want to order again start by asking size + + # case for when user types invalid input + while size.upper() not in ["S", "M", "L", "XL"]: + size = input("Choose a size: ") + +generateReceipt(pizza_lst) # at the end of program, call function using pizza_lst as a parameter diff --git a/Pizza Order/pizzaReceipt.py b/Pizza Order/pizzaReceipt.py new file mode 100644 index 00000000..b7ff1d3d --- /dev/null +++ b/Pizza Order/pizzaReceipt.py @@ -0,0 +1,105 @@ +# purpose of pizzaReceipt.py is the back end where the developers create methods and functions to properly format the receipt and its total +def generateReceipt(pizzaOrder): + # parameter will be placed with pizza_lst = ("M", ["PEPPERONI", "OLIVE"], -----) + # set initial variables + size = "" + additional_price = 0 + price_before_tax = 0 + tax = 1.13 + counter = 1 # pizza number + size_price = 0 + additional_price_tag = float(0) + additional_price_tag_format = "" + + # if its an empty list, display this statement + if len(pizzaOrder) == 0: + print("You did not order anything") + exit() + + # beginning of the format of receipt + print("Your order: ") + + # a for loop which goes through all tuples in the list based on its indices + for pizza in range(len(pizzaOrder)): + # cases to determine the sizes selected and its price + if pizzaOrder[pizza][0] == "S": + size_price = 7.99 + size = "S" + elif pizzaOrder[pizza][0] == "M": + size_price = 9.99 + size = "M" + elif pizzaOrder[pizza][0] == "L": + size_price = 11.99 + size = "L" + elif pizzaOrder[pizza][0] == "XL": + size_price = 13.99 + size = "XL" + + # add the price of the size to the final price before tax + price_before_tax += size_price + + # formatting the pizza number and its size beside it and the price on the other side + if size == "XL": + print("Pizza", str(counter) + ":", str(size) + " \t\t\t " + str(size_price)) + elif size == "L": + print("Pizza", str(counter) + ":", str(size) + " \t\t\t " + str(size_price)) + elif size == "M": + print("Pizza", str(counter) + ":", str(size) + " \t\t\t " + str(size_price)) + elif size == "S": + print("Pizza", str(counter) + ":", str(size) + " \t\t\t " + str(size_price)) + + # increment counter variable by one for the pizza number + counter += 1 + + # format the toppings with a dash in front + for j in range(len(pizzaOrder[pizza][1])): + print("- " + str(pizzaOrder[pizza][1][j])) + + # if theres more than three toppings, calculate the total additional price and added to the total price before tax + if len(pizzaOrder[pizza][1]) > 3: + n = len(pizzaOrder[pizza][1]) - 3 + if size == "S": + additional_price_tag = 0.50 + additional_price_tag_format = "{:.2f}".format(additional_price_tag) + additional_price = 0.50 * n + price_before_tax += additional_price + elif size == "M": + additional_price_tag = 0.75 + additional_price = 0.75 * n + price_before_tax += additional_price + elif size == "L": + additional_price_tag = 1.00 + additional_price_tag_format = "{:.2f}".format(additional_price_tag) + additional_price = 1.00 * n + price_before_tax += additional_price + elif size == "XL": + additional_price_tag = 1.25 + additional_price = 1.25 * n + price_before_tax += additional_price + + # format the extra topping portion of the receipt with its size and price on the other side + float_additional_price = float(additional_price) + format_additional_price = "{:.2f}" .format(float_additional_price) + + for extra in range(len(pizzaOrder[pizza][1])): + if extra > 2: + if size == "XL": + print("Extra Topping", "(" + size + ")" + "\t\t " + str(additional_price_tag)) + elif size == "L": + print("Extra Topping", "(" + size + ")" + "\t\t " + str(additional_price_tag_format)) + elif size == "M": + print("Extra Topping", "(" + size + ")" + "\t\t " + str(additional_price_tag)) + elif size == "S": + print("Extra Topping", "(" + size + ")" + "\t\t " + str(additional_price_tag_format)) + # outside of loop begins, calculates the price before tax with the tax value set earlier + price_final = price_before_tax * tax + + # add the tax price to be added and set it to a float, as well as the final price with tax + float1 = float(price_before_tax * (13/100)) + float2 = float(price_final) + formatFloat1 = "{:.2f}" .format(float1) + formatFloat2 = "{:.2f}" .format(float2) + + # format the price of the tax, and the total with both values on the other side + print("Tax:" + "\t\t\t\t\t " + formatFloat1) + print("Total:" + "\t\t\t\t\t " + formatFloat2) diff --git a/Pizza Order/pyvenv.cfg b/Pizza Order/pyvenv.cfg new file mode 100644 index 00000000..b83f8fb7 --- /dev/null +++ b/Pizza Order/pyvenv.cfg @@ -0,0 +1,8 @@ +home = /Library/Frameworks/Python.framework/Versions/3.10 +implementation = CPython +version_info = 3.10.0.final.0 +virtualenv = 20.13.0 +include-system-site-packages = false +base-prefix = /Library/Frameworks/Python.framework/Versions/3.10 +base-exec-prefix = /Library/Frameworks/Python.framework/Versions/3.10 +base-executable = /usr/local/bin/python3.10 diff --git a/README.md b/README.md index 3754dcc3..007b2e87 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,7 @@ More information on contributing and the general code of conduct for discussion | PDF to Audio | [PDF to Audio](https://github.com/DhanushNehru/Python-Scripts/tree/master/PDF%20to%20Audio) | Converts PDF to audio. | | PDF to Text | [PDF to text](https://github.com/DhanushNehru/Python-Scripts/tree/master/PDF%20to%20text) | Converts PDF to text. | | PDF merger and splitter | [PDF Merger and Splitter](https://github.com/AbhijitMotekar99/Python-Scripts/blob/master/PDF%20Merger%20and%20Splitter/PDF%20Merger%20and%20Splitter.py) | Create a tool that can merge multiple PDF files into one or split a single PDF into separate pages. | +| Pizza Order | [Pizza Order](https://github.com/DhanushNehru/Python-Scripts/tree/master/Pizza%20Order) | An algorithm designed to handle pizza orders from customers with accurate receipts and calculations. | | Planet Simulation | [Planet Simulation](https://github.com/DhanushNehru/Python-Scripts/tree/master/Planet%20Simulation) | A simulation of several planets rotating around the sun. | | Playlist Exchange | [Playlist Exchange](https://github.com/DhanushNehru/Python-Scripts/tree/master/Playlist%20Exchange) | A Python script to exchange songs and playlists between Spotify and Python. | | Pigeonhole Sort | [Algorithm](https://github.com/DhanushNehru/Python-Scripts/tree/master/PigeonHole) | The pigeonhole sort algorithm to sort your arrays efficiently! | From 5e4c7b5288da810a837c6dedc408945e0d84129c Mon Sep 17 00:00:00 2001 From: Szymon Bernasiak <149424787+bernasiakk@users.noreply.github.com> Date: Mon, 27 Jan 2025 16:02:37 +0100 Subject: [PATCH 07/63] Cleaned READMEs for better readability & renamed all READMEs to UPPERCASE (#400) --- Arrange It/README.md | 2 +- AutoCert/README.md | 6 +++--- Black Hat Python/README.md | 3 +-- Cafe Management System/README.md | 2 +- Chess Board/README.md | 2 +- Expense Tracker/README.md | 2 +- Password Strength Checker/README.md | 3 --- .../{README_smart_attendance_system.md => README.md} | 0 import of music and video/Readme.md | 3 --- 9 files changed, 8 insertions(+), 15 deletions(-) rename Smart Attendance System/{README_smart_attendance_system.md => README.md} (100%) diff --git a/Arrange It/README.md b/Arrange It/README.md index 78013930..86e7f8eb 100644 --- a/Arrange It/README.md +++ b/Arrange It/README.md @@ -4,7 +4,7 @@ With the help of this script, files can be moved automatically to the folder tha ## New Feature: Custom Folder Configuration --Now, you can customize how files are arranged by defining your own folder structure and file extensions using a config.json file. This allows for more flexibility without needing to modify the Python code itself. +Now, you can customize how files are arranged by defining your own folder structure and file extensions using a config.json file. This allows for more flexibility without needing to modify the Python code itself. `python arrangeit.py` # How To Use the config.json File diff --git a/AutoCert/README.md b/AutoCert/README.md index c2600978..2a1e0709 100644 --- a/AutoCert/README.md +++ b/AutoCert/README.md @@ -12,10 +12,10 @@ A Python script to auto generate e-certificates in bulk. # Instruction to use
    -
  1. First install all the dependencies, present in the requirements.txt file
  2. -
  3. Put a certificate template with blank fields, in the project folder, with the name `certificateTemplate.png` .Make sure the template is in `png` format only
  4. +
  5. First install all the dependencies, present in the requirements.txt file.
  6. +
  7. Put a certificate template with blank fields, in the project folder, with the name `certificateTemplate.png`. Make sure the template is in `png` format only.
  8. Put the input `csv` file containing a list of the participant names by under a column name.
  9. -
  10. Once all this is done, run `python3 main.py` in your terminal
  11. +
  12. Once all this is done, run `python3 main.py` in your terminal.
  13. The generated certificates would be present under the *export* folder, with each certificate having the name of the participant.
diff --git a/Black Hat Python/README.md b/Black Hat Python/README.md index cfb0ebf5..b2ac355f 100644 --- a/Black Hat Python/README.md +++ b/Black Hat Python/README.md @@ -9,8 +9,7 @@ Simply choose a directory (DIR) in which to clone the project using git clone https://github.com/DhanushNehru/Python-Scripts/Black Hat Python.git ``` -create a new virtual environment or `venv` for it (recommended -) and install the requirements using `pip install`. +create a new virtual environment or `venv` for it (recommended) and install the requirements using `pip install`. diff --git a/Cafe Management System/README.md b/Cafe Management System/README.md index b5cf86ab..9589c958 100644 --- a/Cafe Management System/README.md +++ b/Cafe Management System/README.md @@ -1,6 +1,6 @@ # Cafe Management System - This is a cafe Management System Coded by Python using `tkinter` library. -- You need to install `Pillow`by entering `pip install Pillow`. +- You need to install `Pillow` by entering `pip install Pillow`. \ No newline at end of file diff --git a/Chess Board/README.md b/Chess Board/README.md index 5b085375..b00c6b01 100644 --- a/Chess Board/README.md +++ b/Chess Board/README.md @@ -1,4 +1,4 @@ -This repository consists of a list of python scripts to automate few tasks. +This repository consists of a list of python scripts to automate a few tasks. You can contribute by adding more python scripts which can be used to automate things. Some of already done are listed below. Incase you have anything to be followed while executing the python script mention it as well diff --git a/Expense Tracker/README.md b/Expense Tracker/README.md index 7980ea8d..920b6aa7 100644 --- a/Expense Tracker/README.md +++ b/Expense Tracker/README.md @@ -7,7 +7,7 @@ Install the required dependencies using pip: ``` pip install -r requirements.txt ``` -or you can manually install single Library +or you can manually install single Library. Run the expense.py file to start the bot: diff --git a/Password Strength Checker/README.md b/Password Strength Checker/README.md index ea4db086..70cabe2e 100644 --- a/Password Strength Checker/README.md +++ b/Password Strength Checker/README.md @@ -11,16 +11,13 @@ A password strength checker that utilizes machine learning to classify the stren ```bash git clone https://github.com/DhanushNehru/Python-Scripts cd "Password Strength Checker" - 2. Create and activate a virtual environment: ```bash python3 -m venv venv source venv/bin/activate # On Windows use `venv\Scripts\activate` - 3. Install the required packages: ```bash pip install -r requirements.txt - ## Usage To run the password strength checker: ```bash diff --git a/Smart Attendance System/README_smart_attendance_system.md b/Smart Attendance System/README.md similarity index 100% rename from Smart Attendance System/README_smart_attendance_system.md rename to Smart Attendance System/README.md diff --git a/import of music and video/Readme.md b/import of music and video/Readme.md index e528183b..fa87e429 100644 --- a/import of music and video/Readme.md +++ b/import of music and video/Readme.md @@ -12,8 +12,6 @@ Before you begin, ensure you have met the following requirements: ```bash pip install pygame - - ## Usage Clone or download this repository to your local machine. Open your terminal or command prompt and navigate to the project directory. @@ -50,7 +48,6 @@ Before you begin, ensure you have met the following requirements: ```bash pip install opencv-python - **Usage** Clone or download this repository to your local machine. Open your terminal or command prompt and navigate to the project directory. From 3d7ba92511cd86d00ec73c53ee5dd3d21ce05782 Mon Sep 17 00:00:00 2001 From: George Date: Mon, 27 Jan 2025 17:03:43 +0200 Subject: [PATCH 08/63] Update PasswordGenerator.py (#395) * Update PasswordGenerator.py * Update With these enhancements, the application will offer greater flexibility, functionality, and a better user experience. * update Now the user can specify how many profiles they want to generate and the user is prompted to decide whether they want to save the profiles to a file. --- Expense Tracker/Expense Tracker.db | Bin 0 -> 12288 bytes Expense Tracker/expense.py | 101 ++++++++++++++++++++ Fake Profile/FakeProfile.py | 119 ++++++++++++++++++++---- Password Generator/PasswordGenerator.py | 117 +++++++++++------------ 4 files changed, 254 insertions(+), 83 deletions(-) create mode 100644 Expense Tracker/Expense Tracker.db diff --git a/Expense Tracker/Expense Tracker.db b/Expense Tracker/Expense Tracker.db new file mode 100644 index 0000000000000000000000000000000000000000..fe88adda1a42b9bc1c71ec346713d17e3eba003e GIT binary patch literal 12288 zcmeI&O-sWt7zglVmF=VxLBxX)L1bl{_<{(YtXmv)-HS6rcapeeI^0@qJJ6$kOh18# zeF&eaJ8TG^JPiJ!Y5OF3Li)Qs(8~+27aP$H!hw#(0b6FAvlAg0V@c{3^-1IOvM>qg zIgbBoNw#x!zDTPQOCKzKOgA(LKmY;|fB*y_009U<00Izzz&{Gq6Unt~mbYSk+c(iu zpNig_$UF^=-<}PvLPI)A3gw)7Qp~K)_fcxuhI`J3~#r+j`ieq>ar+Yct3 zjuKNlPS1&qTNG|p$&ze{dc&^k83aQ=7H3|~q4`SCF|{sb3=9p9bL??#&eQLVE;I;0 z00Izz00bZa0SG_<0uX=z1m;d)%Sy4$^$otdzq@~!-`&ga9hFQF-kGuzzVl)KK=KB^$G7acZdK0 literal 0 HcmV?d00001 diff --git a/Expense Tracker/expense.py b/Expense Tracker/expense.py index 99c5c62c..c6d21136 100644 --- a/Expense Tracker/expense.py +++ b/Expense Tracker/expense.py @@ -57,6 +57,59 @@ def remove_all_expenses(): else: tb.showinfo('Ok then', 'The task was aborted and no expense was deleted!') +def search_expenses(search_term): + """ + Search and display expenses based on a search term in any column. + """ + global table + table.delete(*table.get_children()) + + query = f""" + SELECT * FROM ExpenseTracker WHERE + Date LIKE ? OR + Payee LIKE ? OR + Description LIKE ? OR + Amount LIKE ? OR + ModeOfPayment LIKE ?; + """ + search_param = f"%{search_term}%" + results = connector.execute(query, (search_param,) * 5) + + for data in results.fetchall(): + table.insert('', END, values=data) + + +def filter_expenses_by_date(date_from, date_to): + """ + Filter and display expenses based on a date range. + """ + global table + table.delete(*table.get_children()) + + query = """ + SELECT * FROM ExpenseTracker WHERE Date BETWEEN ? AND ?; + """ + results = connector.execute(query, (date_from, date_to)) + + for data in results.fetchall(): + table.insert('', END, values=data) + + +def sort_expenses(column, order): + """ + Sort expenses by a column in ascending or descending order. + """ + global table + table.delete(*table.get_children()) + + query = f"SELECT * FROM ExpenseTracker ORDER BY {column} {order};" + results = connector.execute(query) + + for data in results.fetchall(): + table.insert('', END, values=data) + + + def add_another_expense(): global date, payee, Desc, amnt, MoP global connector @@ -160,6 +213,54 @@ def expense_to_words_before_adding(): Button(buttons_frame, text='Delete All Expenses', font=btn_font, width=25, bg=hlb_btn_bg, command=remove_all_expenses).place(x=640, y=5) +import csv +from tkinter.filedialog import asksaveasfilename + + +def export_to_csv(): + """ + Export the table data to a CSV file. + """ + data = connector.execute('SELECT * FROM ExpenseTracker').fetchall() + if not data: + tb.showerror("Export Failed", "No expenses to export!") + return + + save_file_path = asksaveasfilename( + defaultextension=".csv", + filetypes=[("CSV files", "*.csv"), ("All files", "*.*")], + title="Save As" + ) + + if save_file_path: + with open(save_file_path, mode='w', newline='') as file: + writer = csv.writer(file) + # Write the header + writer.writerow(['ID', 'Date', 'Payee', 'Description', 'Amount', 'Mode of Payment']) + # Write the data + writer.writerows(data) + + tb.showinfo("Export Successful", f"Expenses exported to {save_file_path}") + + +filter_frame = Frame(root, bg="light gray") +filter_frame.place(x=10, y=500, width=1165, height=35) + +Label(filter_frame, text="Date From:", font=("Georgia", 10), bg="light gray").place(x=10, y=5) +date_from = DateEntry(filter_frame, date=datetime.datetime.now().date(), width=10) +date_from.place(x=90, y=5) + +Label(filter_frame, text="Date To:", font=("Georgia", 10), bg="light gray").place(x=200, y=5) +date_to = DateEntry(filter_frame, date=datetime.datetime.now().date(), width=10) +date_to.place(x=270, y=5) + +Button(filter_frame, text="Filter", font=('Gill Sans MT', 10), width=10, bg=hlb_btn_bg, + command=lambda: filter_expenses_by_date(date_from.get_date(), date_to.get_date())).place(x=400, y=3) + +Button(filter_frame, text="Export to CSV", font=('Gill Sans MT', 10), width=15, bg=hlb_btn_bg, + command=export_to_csv).place(x=500, y=3) + + # Treeview Frame table = ttk.Treeview(tree_frame, selectmode=BROWSE, columns=('ID', 'Date', 'Payee', 'Description', 'Amount', 'Mode of Payment')) diff --git a/Fake Profile/FakeProfile.py b/Fake Profile/FakeProfile.py index c3b81ded..aa15d01c 100644 --- a/Fake Profile/FakeProfile.py +++ b/Fake Profile/FakeProfile.py @@ -1,22 +1,101 @@ from faker import Faker +from typing import List +import json + +# Initialize Faker with multiple locales fake = Faker(['it_IT', 'en_US', 'ja_JP']) -print("### ALL faker Attribute") -print(dir(fake)) - -profile = """ -### Faker Profile ### -Name : {} -Email : {} -Social Security number (SSN) : {} -Address : {} -Location : {}, {} -URL : {} -""".format(fake.name(), - fake.email(), - fake.ssn(), - fake.address(), - fake.latitude(), fake.longitude(), - fake.url() - ) - -print(profile) + + +def generate_fake_profiles(num_profiles: int) -> List[dict]: + """ + Generate a list of fake profiles. + + Args: + num_profiles (int): Number of profiles to generate. + + Returns: + List[dict]: A list of dictionaries where each represents a profile. + """ + profiles = [] + for _ in range(num_profiles): + profile = { + "Locale": fake.locales, + "Name": fake.name(), + "Email": fake.email(), + "SSN": fake.ssn(), + "Address": fake.address(), + "Latitude": fake.latitude(), + "Longitude": fake.longitude(), + "URL": fake.url() + } + profiles.append(profile) + return profiles + + +def display_profiles(profiles: List[dict]): + """ + Display the generated profiles in a formatted way. + + Args: + profiles (List[dict]): A list of profiles to print. + """ + for index, profile in enumerate(profiles, start=1): + print(f"\n### Faker Profile {index} ###") + print(f"Locale : {', '.join(profile['Locale'])}") + print(f"Name : {profile['Name']}") + print(f"Email : {profile['Email']}") + print(f"Social Security number (SSN) : {profile['SSN']}") + print(f"Address : {profile['Address']}") + print(f"Location : ({profile['Latitude']}, {profile['Longitude']})") + print(f"URL : {profile['URL']}") + print("-" * 40) + + +def save_profiles_to_file(profiles: List[dict], filename: str) -> None: + """ + Save the list of profiles to a file in JSON format. + + Args: + profiles (List[dict]): The list of profiles to save. + filename (str): The name of the output file. + """ + try: + with open(filename, "w") as file: + json.dump(profiles, file, indent=4) + print(f"\nProfiles successfully saved to {filename}") + except Exception as e: + print(f"Error while saving profiles to file: {e}") + + +def main(): + """ + Main function to handle user interaction and workflow. + """ + print("\n### Faker Profile Generator ###") + try: + num_profiles = int(input("Enter the number of profiles to generate: ")) + if num_profiles < 1: + raise ValueError("Number of profiles must be greater than 0.") + + # Generate fake profiles + profiles = generate_fake_profiles(num_profiles) + + # Display profiles + display_profiles(profiles) + + # Save to file + save_option = input("Do you want to save the profiles to a file? (y/n): ").strip().lower() + if save_option == "y": + filename = input("Enter filename (e.g., profiles.json): ").strip() + save_profiles_to_file(profiles, filename) + + print("\nProcess completed successfully!") + except ValueError as ve: + print(f"Invalid input: {ve}") + except Exception as e: + print(f"An unexpected error occurred: {e}") + + +# Run the script +if __name__ == "__main__": + main() diff --git a/Password Generator/PasswordGenerator.py b/Password Generator/PasswordGenerator.py index c07c70fa..ec34ebec 100644 --- a/Password Generator/PasswordGenerator.py +++ b/Password Generator/PasswordGenerator.py @@ -1,96 +1,87 @@ import random as rr import string as ss - - -""" -ASCII -A -> Z : 65 -> 90 -a -> z : 97 -> 122 -""" - characters = ['@', '#', '$', '%', '&', '?'] -pass_len = int(input('How lengthy do you want your password to be : ')) +def generate_password(pass_len): + # Initialize counters + total_nums = 0 + total_symbols = 0 + total_cap = 0 + total_low = 0 -tempy, tempz = 0, 0 -tempx = rr.randint(2, pass_len-1) # alphabets + # Ensure at least one of each type + tempx = rr.randint(2, max(2, pass_len - 2)) # at least 2 letters + remaining = pass_len - tempx -if tempx != pass_len: - tempy = rr.randint(1, (pass_len - tempx - 1)) # numbers + tempy = rr.randint(1, max(1, remaining - 1)) # at least 1 number + remaining -= tempy total_nums = tempy -if (tempx + tempy) != pass_len: - tempz = rr.randint(1, (pass_len-(tempx+tempy))) # special characters + tempz = remaining # rest goes to special characters total_symbols = tempz -# password : empty string for now -pass_word = '' - -# adding alphabets - -while tempx: - x = tempx - num_cap = rr.randint(0, x) - num_low = x-num_cap + # Generate password + pass_word = '' + # Add alphabets + num_cap = rr.randint(1, tempx - 1) # at least 1 uppercase + num_low = tempx - num_cap # rest lowercase total_cap = num_cap total_low = num_low - # capitals in password : - while num_cap: - temp = chr(rr.randint(65, 90)) - pass_word = pass_word + str(temp) - num_cap -= 1 - - # lower-case in password : - while num_low: - temp = chr(rr.randint(97, 122)) - pass_word = pass_word + str(temp) - num_low -= 1 - - break - -# adding numbers to the password -while tempy: - temp = (rr.randint(0, 9)) - pass_word = pass_word + str(temp) - tempy -= 1 - -# adding special characters to the password -while tempz: - temp = rr.randint(0, len(characters)-1) - pass_word = pass_word + characters[temp] - tempz -= 1 - -#shuffles the string + # Add capitals + pass_word += ''.join(chr(rr.randint(65, 90)) for _ in range(num_cap)) + + # Add lowercase + pass_word += ''.join(chr(rr.randint(97, 122)) for _ in range(num_low)) + + # Add numbers + pass_word += ''.join(str(rr.randint(0, 9)) for _ in range(tempy)) + + # Add special characters + pass_word += ''.join(rr.choice(characters) for _ in range(tempz)) + + return pass_word, total_cap, total_low, total_nums, total_symbols + + def shuffle_(alpha): str_temp = list(alpha) rr.shuffle(str_temp) - alpha = ''.join(str_temp) - return alpha + return ''.join(str_temp) + -#adds colour to the text def colored(r, g, b, text): return "\033[38;2;{};{};{}m{} \033[38;2;255;255;255m".format(r, g, b, text) -final_pass =colored(200,200,50, (shuffle_(shuffle_(shuffle_(pass_word))))) +def main(): + pass_len = int(input('How lengthy do you want your password to be : ')) -# result & summary -result = """ -Generate Password Summary : + if pass_len < 4: + print("Password length must be at least 4 characters") + return -Charactor Uppercase : {0} -Charactor Lowercase : {1} + pass_word, total_cap, total_low, total_nums, total_symbols = generate_password(pass_len) + + # Shuffle multiple times + final_pass = colored(200, 200, 50, shuffle_(shuffle_(shuffle_(pass_word)))) + + result = """ +Generate Password Summary: + +Character Uppercase : {0} +Character Lowercase : {1} Numbers : {2} Symbols : {3} -Your computer generated password is : +Your computer generated password is: {4} """.format(total_cap, total_low, total_nums, total_symbols, final_pass) -print(result) + print(result) + -# print(f"\nYour computer generated password is : {final_pass}\n\n") +if __name__ == "__main__": + main() \ No newline at end of file From f3a607f7db44747a0eca8e8f98e33b0843f1fc9a Mon Sep 17 00:00:00 2001 From: Arjayn Piratheeparatnam <122946744+ArjaynP@users.noreply.github.com> Date: Sun, 2 Feb 2025 12:56:24 -0500 Subject: [PATCH 09/63] Connect Four Added connect four python program file, and marking documentation as well. --- Connect Four/README.md | 37 ++++++ Connect Four/connectfour.py | 242 ++++++++++++++++++++++++++++++++++++ README.md | 5 +- 3 files changed, 282 insertions(+), 2 deletions(-) create mode 100644 Connect Four/README.md create mode 100644 Connect Four/connectfour.py diff --git a/Connect Four/README.md b/Connect Four/README.md new file mode 100644 index 00000000..622a49d8 --- /dev/null +++ b/Connect Four/README.md @@ -0,0 +1,37 @@ +# Connect Four +I have created the board game, "Connect Four", using the programming language Python. The entire project was created all on one file. This was a project I chose to develop during my spare time as this was not a common project constructed by other developers. The program follows all rules of the game, where players can win by either having 4 in a row horizontally, vertically, or diagonally. The dimensions for this particular game is a 6x7 board. In other words, the board is designed as 6 rows and 7 columns. Therefore, I initialized a nested list called board that contains the 7 columns as elements, and the 6 rows within each element. + +``` +board = [["-"] * 6, ["-"] * 6, ["-"] * 6, ["-"] * 6, ["-"] * 6, ["-"] * 6, ["-"] * 6] +``` + + +Determining the logic for a player to have 4 in a row diagonally proved to be the most challenging in my opinion. The best solution was to view this as positive and negative slopes since these diagonals were +either from the bottom left to top right, or the top left to bottom right. Afterwards, I created two separate boards to determine all possible coordinates that can be starting points to create 4 in a row as shown +in the table below: + +Note: The coordinate is [col, row] + +### Positive Slope Possible Starting Points +| | | | | | | | +|------------|------------|------------|------------|------------|------------|------------| +| 1.1 | 2.1 | 3.1 | 4.1 | 5.1 | 6.1 | 7.1 | +| 1.2 | 2.2 | 3.2 | 4.2 | 5.2 | 6.2 | 7.2 | +| 1.3 | 2.3 | 3.3 | 4.3 | 5.3 | 6.3 | 7.3 | +| 1.4 | 2.4 | 3.4 | 4.4 | 5.4 | 6.4 | 7.4 | +| 1.5 | 2.5 | 3.5 | 4.5 | 5.5 | 6.5 | 7.5 | +| 1.6 | 2.6 | 3.6 | 4.6 | 5.6 | 6.6 | 7.6 | + + +### Negative Slope Possible Starting Points +| | | | | | | | +|------------|------------|------------|------------|------------|------------|------------| +| 1.1 | 2.1 | 3.1 | 4.1 | 5.1 | 6.1 | 7.1 | +| 1.2 | 2.2 | 3.2 | 4.2 | 5.2 | 6.2 | 7.2 | +| 1.3 | 2.3 | 3.3 | 4.3 | 5.3 | 6.3 | 7.3 | +| 1.4 | 2.4 | 3.4 | 4.4 | 5.4 | 6.4 | 7.4 | +| 1.5 | 2.5 | 3.5 | 4.5 | 5.5 | 6.5 | 7.5 | +| 1.6 | 2.6 | 3.6 | 4.6 | 5.6 | 6.6 | 7.6 | + +What I noticed is the positive slope starting points are from rows 4-6 and columns 1-4, while the negatiive slope starting points are from rows 1-3 and columns 1-4. Therefore, each type of slope has its own +function and nested for loop that iterates through only the possible starting points. \ No newline at end of file diff --git a/Connect Four/connectfour.py b/Connect Four/connectfour.py new file mode 100644 index 00000000..c5fd146e --- /dev/null +++ b/Connect Four/connectfour.py @@ -0,0 +1,242 @@ +import random + +board = [["-"] * 6, ["-"] * 6, ["-"] * 6, ["-"] * 6, ["-"] * 6, ["-"] * 6, ["-"] * 6] + + +def gamePlayTwoPlayers(p1, p2): + win = "" + while win == "": + column = int(input("{}'s turn. Enter which column you would like to drop your piece into: ".format(p1))) + connectFourBoard(column, "X") + + if check_vertical_win(p1, p2, column): + print() + print(check_vertical_win(p1, p2, column)) + break + if check_horizontal_win(p1, p2): + print() + print(check_horizontal_win(p1, p2)) + break + if check_positive_diagonal_win(p1, p2): + print() + print(check_positive_diagonal_win(p1, p2)) + break + if check_negative_diagonal_win(p1, p2): + print() + print(check_negative_diagonal_win(p1, p2)) + break + + column = int(input("{}'s turn. Enter which column you would like to drop your piece into: ".format(p2))) + connectFourBoard(column, "O") + + if check_vertical_win(p1, p2, column): + print() + print(check_vertical_win(p1, p2, column)) + break + if check_horizontal_win(p1, p2): + print() + print(check_horizontal_win("x", "O")) + break + if check_positive_diagonal_win(p1, p2): + print() + print(check_positive_diagonal_win(p1, p2)) + break + if check_negative_diagonal_win(p1, p2): + print() + print(check_negative_diagonal_win(p1, p2)) + break + + +def gamePlayOnePlayer(p1, p2): + win = "" + while win == "": + column = int(input("{}'s turn. Enter which column you would like to drop your piece into: ".format(p1))) + connectFourBoard(column, "X") + + if check_vertical_win(p1, p2, column): + print() + print(check_vertical_win(p1, p2, column)) + break + if check_horizontal_win(p1, p2): + print() + print(check_horizontal_win(p1, p2)) + break + if check_positive_diagonal_win(p1, p2): + print() + print(check_positive_diagonal_win(p1, p2)) + break + if check_negative_diagonal_win(p1, p2): + print() + print(check_negative_diagonal_win(p1, p2)) + break + + print() + + column = random.randint(1, 7) + connectFourBoard(column, "O") + + if check_vertical_win(p1, p2, column): + print() + print(check_vertical_win(p1, p2, column)) + break + if check_horizontal_win(p1, p2): + print() + print(check_horizontal_win(p1, p2)) + break + if check_positive_diagonal_win(p1, p2): + print() + print(check_positive_diagonal_win(p1, p2)) + break + if check_negative_diagonal_win(p1, p2): + print() + print(check_negative_diagonal_win(p1, p2)) + break + + +def connectFourBoard(col, playerIcon): + col -= 1 + coordinate = [] + + for row in range(len(board[col])-1, -1, -1): + if board[col][row] == "-": + board[col][row] = playerIcon + coordinate.append([row, col]) + break + for row in range(len(board)): + for col in range(len(board[row])): + print("|", board[row][col], "|", board[row+1][col], "|", board[row+2][col], "|", board[row+3][col], "|", + board[row+4][col], "|", board[row+5][col], "|", board[row+6][col], "|") + break + + +def check_vertical_win(p1, p2, col): + playerCount1 = 0 + playerCount2 = 0 + col -= 1 + + for row in range(len(board[col])-1, -1, -1): + if board[col][row] == "X": + playerCount1 += 1 + playerCount2 = 0 + elif board[col][row] == "O": + playerCount2 += 1 + playerCount1 = 0 + + if playerCount1 == 4: + return "{} Wins".format(p1) + elif playerCount2 == 4: + return "{} Wins".format(p2) + + +def check_horizontal_win(p1, p2): + for row in range(len(board[0])-1, -1, -1): + playerCount1 = 0 + playerCount2 = 0 + for col in range(len(board)): + if board[col][row] == "X": + playerCount1 += 1 + playerCount2 = 0 + elif board[col][row] == "O": + playerCount2 += 1 + playerCount1 = 0 + elif board[col][row] == "-": + playerCount1 = 0 + playerCount2 = 0 + + if playerCount1 == 4: + return "{} Wins".format(p1) + elif playerCount2 == 4: + return "{} Wins".format(p2) + + +def check_positive_diagonal_win(p1, p2): + playerCount1 = 0 + playerCount2 = 0 + + for row in range(len(board[0])-1, -1, -1): + for col in range(len(board)-3): + if board[col][row] == "X": + playerCount1 += 1 + while playerCount1 < 4: + col += 1 + row -= 1 + if board[col][row] == "X": + playerCount1 += 1 + else: + playerCount1 = 0 + break + elif board[col][row] == "O": + playerCount1 += 1 + while playerCount1 < 4: + col += 1 + row -= 1 + if board[col][row] == "O": + playerCount1 += 1 + else: + playerCount1 = 0 + break + + if playerCount1 == 4: + return "{} Wins".format(p1) + elif playerCount2 == 4: + return "{} Wins".format(p2) + else: + playerCount1 = 0 + playerCount2 = 0 + + +def check_negative_diagonal_win(p1, p2): + playerCount1 = 0 + playerCount2 = 0 + + for row in range(len(board[0])-3): + for col in range(len(board)-3): + if board[col][row] == "X": + playerCount1 += 1 + while playerCount1 < 4: + col += 1 + row -= 1 + if board[col][row] == "X": + playerCount1 += 1 + else: + playerCount1 = 0 + break + elif board[col][row] == "O": + playerCount1 += 1 + while playerCount1 < 4: + col += 1 + row += 1 + if board[col][row] == "O": + playerCount1 += 1 + else: + playerCount1 = 0 + break + + if playerCount1 == 4: + return "{} Wins".format(p1) + elif playerCount2 == 4: + return "{} Wins".format(p2) + else: + playerCount1 = 0 + playerCount2 = 0 + + +def main(): + print("Welcome to Connect Four! Connect 4 of your pieces in either horizontal, vertical, or diagonal to win.") + + numPlayers = int(input("Choose how many players: ")) + + while numPlayers not in [1,2]: + numPlayers = int(input("Sorry for the value you entered was invalid. Are you playing with 1 or 2 players: ")) + + if numPlayers == 1: + player1 = input("Player 1, please enter your name: ") + player2 = "CPU" + gamePlayTwoPlayers(player1, player2) + elif numPlayers == 2: + player1 = input("Player 1, please enter your name: ") + player2 = input("Player 2, please enter your name: ") + gamePlayTwoPlayers(player1, player2) + + +main() \ No newline at end of file diff --git a/README.md b/README.md index 007b2e87..d0fa7830 100644 --- a/README.md +++ b/README.md @@ -49,8 +49,9 @@ More information on contributing and the general code of conduct for discussion | Blackjack | [Blackjack](https://github.com/DhanushNehru/Python-Scripts/tree/master/Blackjack) | A game of Blackjack - let's get a 21. | | Chessboard | [Chessboard](https://github.com/DhanushNehru/Python-Scripts/tree/master/Chess%20Board) | Creates a chessboard using matplotlib. | | Compound Interest Calculator | [Compound Interest Calculator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Calculate%20Compound%20Interest) | A Python script to calculate compound interest. | -| Countdown Timer | [Countdown Timer](https://github.com/DhanushNehru/Python-Scripts/tree/master/Countdown%20Timer) | Displays a message when the Input time elapses. | | Convert Temperature | [Convert Temperature](https://github.com/DhanushNehru/Python-Scripts/tree/master/Convert%20Temperature) | A python script to convert temperature between Fahreheit, Celsius and Kelvin | +| Connect Four | [Connect Four](https://github.com/DhanushNehru/Python-Scripts/tree/master/Connect%20Four) | A Python script for the board game Connect Four, which can be played by 1-2 players | +| Countdown Timer | [Countdown Timer](https://github.com/DhanushNehru/Python-Scripts/tree/master/Countdown%20Timer) | Displays a message when the Input time elapses. | | Crop Images | [Crop Images](https://github.com/DhanushNehru/Python-Scripts/tree/master/Crop%20Images) | A Python script to crop a given image. | | CSV to Excel | [CSV to Excel](https://github.com/DhanushNehru/Python-Scripts/tree/master/CSV%20to%20Excel) | A Python script to convert a CSV to an Excel file. | | Currency Script | [Currency Script](https://github.com/DhanushNehru/Python-Scripts/tree/master/Currency%20Script) | A Python script to convert the currency of one country to that of another. | @@ -110,7 +111,7 @@ More information on contributing and the general code of conduct for discussion | PDF to Audio | [PDF to Audio](https://github.com/DhanushNehru/Python-Scripts/tree/master/PDF%20to%20Audio) | Converts PDF to audio. | | PDF to Text | [PDF to text](https://github.com/DhanushNehru/Python-Scripts/tree/master/PDF%20to%20text) | Converts PDF to text. | | PDF merger and splitter | [PDF Merger and Splitter](https://github.com/AbhijitMotekar99/Python-Scripts/blob/master/PDF%20Merger%20and%20Splitter/PDF%20Merger%20and%20Splitter.py) | Create a tool that can merge multiple PDF files into one or split a single PDF into separate pages. | -| Pizza Order | [Pizza Order](https://github.com/DhanushNehru/Python-Scripts/tree/master/Pizza%20Order) | An algorithm designed to handle pizza orders from customers with accurate receipts and calculations. | +| Pizza Order | [Pizza Order](https://github.com/DhanushNehru/Python-Scripts/tree/master/Pizza%20Order) | An algorithm designed to handle pizza orders from customers with accurate receipts and calculations. | | Planet Simulation | [Planet Simulation](https://github.com/DhanushNehru/Python-Scripts/tree/master/Planet%20Simulation) | A simulation of several planets rotating around the sun. | | Playlist Exchange | [Playlist Exchange](https://github.com/DhanushNehru/Python-Scripts/tree/master/Playlist%20Exchange) | A Python script to exchange songs and playlists between Spotify and Python. | | Pigeonhole Sort | [Algorithm](https://github.com/DhanushNehru/Python-Scripts/tree/master/PigeonHole) | The pigeonhole sort algorithm to sort your arrays efficiently! | From f7b53003e4407099666d7d79d6e6c4d4c7086487 Mon Sep 17 00:00:00 2001 From: Dhanush Date: Wed, 19 Feb 2025 09:21:36 +0530 Subject: [PATCH 10/63] Create FUNDING.yml --- .github/FUNDING.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..fa0d3b7c --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,15 @@ +# These are supported funding model platforms + +github: [DhanushNehru] +patreon: dhanushnehru +open_collective: # Replace with a single Open Collective username +ko_fi: dhanushnehru +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +polar: # Replace with a single Polar username +buy_me_a_coffee: dhanushnehru +thanks_dev: dhanushnehru +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] From 3b6af1c39c67748def27a6da5612a581b214f122 Mon Sep 17 00:00:00 2001 From: Vignesh Skanda Date: Tue, 1 Apr 2025 19:57:59 +0530 Subject: [PATCH 11/63] Update requirements.txt Upgraded the schedule version. --- Auto WiFi Check/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Auto WiFi Check/requirements.txt b/Auto WiFi Check/requirements.txt index 7a7d08a2..4d227ca1 100644 --- a/Auto WiFi Check/requirements.txt +++ b/Auto WiFi Check/requirements.txt @@ -1 +1 @@ -schedule==1.1.0 +schedule==1.2.2 From 2a419b13d779c55b53f1cca6947571da0e298e42 Mon Sep 17 00:00:00 2001 From: George Date: Thu, 3 Apr 2025 11:47:30 +0300 Subject: [PATCH 12/63] Update ChessBoard.py (#401) * Update ChessBoard.py Coordinate Labels: Displays row numbers (1-8) and column letters (A-H) around the board. Dynamic Piece Placement: Pieces (e.g., rooks and pawns) are placed using Unicode chess symbols. Square Highlighting: Allows highlighting specific squares (e.g., valid moves or selected positions). * Fixes Implemented Properly handled form POST requests Created a /cloned_sites/ directory for saved pages Fixed JavaScript to properly submit the form Handled errors gracefully --- Chess Board/ChessBoard.py | 67 ++++++++++++++++++++++++++++++++------- Website Cloner/index.html | 58 +++++++++++++++------------------ Website Cloner/server.py | 67 +++++++++++++++++++++++++-------------- 3 files changed, 124 insertions(+), 68 deletions(-) diff --git a/Chess Board/ChessBoard.py b/Chess Board/ChessBoard.py index 122080a2..2c64f25c 100644 --- a/Chess Board/ChessBoard.py +++ b/Chess Board/ChessBoard.py @@ -1,20 +1,63 @@ import matplotlib.pyplot as plt import numpy as np -from matplotlib.colors import LogNorm +from matplotlib.patches import Rectangle -dx, dy = 0.015, 0.05 -# numpy.arange returns evenly spaced values within a given interval -x = np.arange(-4.0, 4.0, dx) # Corrected -04.0 to -4.0 -y = np.arange(-4.0, 4.0, dy) # Corrected -04.0 to -4.0 -# returns coordinate matrices from coordinate vectors -X, Y = np.meshgrid(x, y) +# Chess symbols for pieces (Unicode) +chess_pieces = { + "rook_white": "\u2656", + "rook_black": "\u265C", + "pawn_white": "\u2659", + "pawn_black": "\u265F", +} -extent = np.min(x), np.max(x), np.min(y), np.max(y) +# Initial piece positions for demonstration +initial_pieces = [ + (0, 0, chess_pieces["rook_black"]), + (0, 7, chess_pieces["rook_black"]), + (7, 0, chess_pieces["rook_white"]), + (7, 7, chess_pieces["rook_white"]), + (1, 0, chess_pieces["pawn_black"]), + (1, 7, chess_pieces["pawn_black"]), + (6, 0, chess_pieces["pawn_white"]), + (6, 7, chess_pieces["pawn_white"]), +] -Z1 = np.add.outer(range(8), range(8)) % 2 +# Function to draw the chessboard +def draw_chessboard(highlight_squares=None): + board_size = 8 + chessboard = np.add.outer(range(board_size), range(board_size)) % 2 -plt.imshow(Z1, cmap="binary_r", interpolation="nearest", extent=extent, alpha=1) + fig, ax = plt.subplots(figsize=(8, 8)) + ax.imshow(chessboard, cmap="cividis", interpolation="nearest") -plt.title("Chess Board", fontweight="bold") + # Remove axes for a cleaner look + ax.set_xticks([]) + ax.set_yticks([]) -plt.show() + # Add grid lines to separate the squares + for i in range(board_size + 1): + ax.axhline(i - 0.5, color="black", linewidth=1, alpha=0.7) + ax.axvline(i - 0.5, color="black", linewidth=1, alpha=0.7) + + # Highlight specific squares + if highlight_squares: + for (row, col) in highlight_squares: + ax.add_patch(Rectangle((col - 0.5, row - 0.5), 1, 1, color="yellow", alpha=0.4)) + + # Add chess pieces + for row, col, piece in initial_pieces: + ax.text(col, row, piece, fontsize=28, ha="center", va="center", color="black" if (row + col) % 2 == 0 else "white") + + # Add coordinate labels + for i in range(board_size): + ax.text(-0.8, i, str(8 - i), fontsize=12, va="center") # Row labels + ax.text(i, 8 - 0.3, chr(65 + i), fontsize=12, ha="center") # Column labels + + # Title + ax.set_title("Chess Board", fontweight="bold", fontsize=16) + + plt.show() + +# Highlight squares (optional demo) +highlight = [(0, 0), (7, 7), (3, 3)] # Example of squares to highlight +draw_chessboard(highlight_squares=highlight) diff --git a/Website Cloner/index.html b/Website Cloner/index.html index 26c2f4ee..357d9e74 100644 --- a/Website Cloner/index.html +++ b/Website Cloner/index.html @@ -1,40 +1,32 @@ - PROXY SERVER - - - - + PROXY SERVER + + + + -
-
-
-
-
- - - - - -
- -
- -
-
-
-
-
- - +
+
+
+
+
+ + + + + +
+
+ +
+
+
+
+
diff --git a/Website Cloner/server.py b/Website Cloner/server.py index 3816e4ba..446f8bc6 100644 --- a/Website Cloner/server.py +++ b/Website Cloner/server.py @@ -8,31 +8,52 @@ class RequestHandler(http.server.SimpleHTTPRequestHandler): def do_GET(self): if self.path == "/": self.path = "index.html" - return http.server.SimpleHTTPRequestHandler.do_GET(self) + try: + return http.server.SimpleHTTPRequestHandler.do_GET(self) + except FileNotFoundError: + self.send_error(404, "File not found") + def do_POST(self): - form = cgi.FieldStorage( - fp=self.rfile, - headers=self.headers, - environ={ - 'REQUEST_METHOD': 'POST', - 'CONTENT_TYPE': self.headers['Content-Type'], - }) - url = form.getvalue('submitButton') - urlN = 'https://' + str(url) +'/' - isdir = os.path.isdir(url) - if not isdir: - kwargs = {'project_name': url} - save_webpage( - url=urlN, - project_folder='./', - **kwargs - ) - path = url + "/" + url + "/index.html" + content_length = int(self.headers.get('Content-Length', 0)) + post_data = self.rfile.read(content_length).decode("utf-8") + + # Parse the URL from the form submission + form = cgi.parse_qs(post_data) + url = form.get("submitButton", [""])[0] + + if not url: + self.send_error(400, "Bad Request: URL is missing") + return + + urlN = "https://" + url.strip("/") + project_folder = os.path.join('./cloned_sites', url.replace("https://", "").replace("http://", "")) + + if not os.path.isdir(project_folder): + os.makedirs(project_folder, exist_ok=True) + try: + save_webpage( + url=urlN, + project_folder=project_folder, + project_name=url.replace("https://", "").replace("http://", "") + ) + except Exception as e: + self.send_error(500, f"Error cloning website: {e}") + return + + path = os.path.join(project_folder, "index.html") + if not os.path.isfile(path): + self.send_error(404, "Cloned page not found") + return + self.send_response(301) - self.send_header('Location', path) + self.send_header("Location", "/" + path) self.end_headers() - return http.server.SimpleHTTPRequestHandler.do_GET(self) + PORT = 7000 -s = socketserver.TCPServer(("127.0.0.1", PORT), RequestHandler) -s.serve_forever() \ No newline at end of file +os.chdir(os.path.dirname(os.path.abspath(__file__))) + +with socketserver.TCPServer(("127.0.0.1", PORT), RequestHandler) as s: + s.allow_reuse_address = True + print(f"Server running on http://127.0.0.1:{PORT}") + s.serve_forever() From 9cd8c7cfb656db7b0a039e2d421c6595f42be02c Mon Sep 17 00:00:00 2001 From: SaeedAnsari05 <144093093+SaeedAnsari05@users.noreply.github.com> Date: Thu, 3 Apr 2025 04:48:40 -0400 Subject: [PATCH 13/63] improved script (#404) --- FileOrganizer/FileOrganizer.py | 53 ++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/FileOrganizer/FileOrganizer.py b/FileOrganizer/FileOrganizer.py index 834db468..0ca91093 100644 --- a/FileOrganizer/FileOrganizer.py +++ b/FileOrganizer/FileOrganizer.py @@ -4,23 +4,40 @@ # Prompt the user for the directory path to organize files path = input("Enter path: ") -# List all files in the specified directory -files = os.listdir(path) +# Check if the directory exists +if not os.path.exists(path): + print("Error: The specified directory does not exist.") +else: + # List all items in the specified directory + files = os.listdir(path) # Iterate through each file in the directory -for file in files: - # Split the filename and extension - filename, extension = os.path.splitext(file) - - # Remove the leading dot from the extension for folder naming - extension = extension[1:] - - # Check if a directory for the file extension already exists - if os.path.exists(path + '/' + extension): - # Move the file to the corresponding extension folder - shutil.move(path + '/' + file, path + '/' + extension + '/' + file) - else: - # If the directory does not exist, create it - os.makedirs(path + '/' + extension) - # Move the file to the newly created extension folder - shutil.move(path + '/' + file, path + '/' + extension + '/' + file) + for file in files: + file_path = os.path.join(path, file) + + # Skip directories + if os.path.isdir(file_path): + continue + + # Split the filename and extension + filename, extension = os.path.splitext(file) + extension = extension[1:] if extension else "NoExtension" # Handle files without extensions + + # Destination folder for the extension + dest_folder = os.path.join(path, extension) + + # Create the directory if it does not exist + if not os.path.exists(dest_folder): + os.makedirs(dest_folder) + + # Handle duplicate files by renaming them + dest_file_path = os.path.join(dest_folder, file) + counter = 1 + while os.path.exists(dest_file_path): + newfilename = f"{filename}{counter}.{extension}" if extension != "NoExtension" else f"{filename}_{counter}" + dest_file_path = os.path.join(dest_folder, new_filename) + counter += 1 + + # Move the file + shutil.move(file_path, dest_file_path) + print(f"Moved: {file} → {dest_file_path}") \ No newline at end of file From f552b18f083f8ab7c5526f4ac28ca145d5350a20 Mon Sep 17 00:00:00 2001 From: Dhanush Date: Sun, 6 Apr 2025 19:20:21 +0530 Subject: [PATCH 14/63] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index d0fa7830..de76a6e9 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,6 @@ - [Gitpod](#gitpod) - [Wall of Contributors](#wall-of-contributors) -
[![Join Our Discord](https://img.shields.io/badge/Discord-Join%20Server-blue?logo=discord&style=for-the-badge)](https://discord.com/invite/Yn9g6KuWyA) [![Subscribe on YouTube](https://img.shields.io/badge/YouTube-Subscribe-red?logo=youtube&style=for-the-badge)](https://www.youtube.com/@dhanushnehru?sub_confirmation=1) From 124b08d1e1ed02f3505bf896417375d6f8246bf3 Mon Sep 17 00:00:00 2001 From: RETR0-OS Date: Fri, 11 Apr 2025 21:03:16 -0700 Subject: [PATCH 15/63] Build a hardware detector --- Hardware Detector/README.md | 54 ++++++++++++++++++ Hardware Detector/hardware_detector.py | 76 ++++++++++++++++++++++++++ Hardware Detector/requirements.txt | 3 + 3 files changed, 133 insertions(+) create mode 100644 Hardware Detector/README.md create mode 100644 Hardware Detector/hardware_detector.py create mode 100644 Hardware Detector/requirements.txt diff --git a/Hardware Detector/README.md b/Hardware Detector/README.md new file mode 100644 index 00000000..cf63726d --- /dev/null +++ b/Hardware Detector/README.md @@ -0,0 +1,54 @@ +# Hardware Resource Monitor in Python + +## Description + +This project is a Python-based hardware resource monitoring tool that provides real-time information about the system's hardware specifications and resource usage. It uses the `psutil` and `pynvml` libraries to gather data about the CPU, RAM, disk space, and GPU. + +## Features + +- Detects and displays GPU specifications, including: + - GPU name + - Total memory (in GB) + - Used memory (in GB) +- Detects and displays system specifications, including: + - Total and used RAM (in GB) + - Available disk space (in GB) + - Number of CPU cores + - CPU usage percentage +- Continuously monitors hardware resources with a customizable update interval. +- Displays data in a clean and user-friendly format in the console. + +## Requirements + +The following Python libraries are required to run the project: + +- `psutil` +- `pynvml` +- `typing` (built-in for Python 3.5+) + +You can install the required dependencies using the following command: + +```bash +pip install -r requirements.txt +``` + +## Usage + +1. Clone the repository or download the project files. +2. Install the required dependencies using the `requirements.txt` file. +3. Run the `hardware_detector.py` script to start monitoring hardware resources: + +```bash +python hardware_detector.py +``` + +4. Press `Ctrl+C` to stop the monitoring process. + +## Notes + +- Ensure that your system has a CUDA-enabled GPU with the correct drivers installed to retrieve GPU information. +- The script clears the console output on each update for a clean display. This behavior may vary depending on the operating system. + +## License + +This project is licensed under the MIT License. See the `LICENSE` file for more details. diff --git a/Hardware Detector/hardware_detector.py b/Hardware Detector/hardware_detector.py new file mode 100644 index 00000000..3086f962 --- /dev/null +++ b/Hardware Detector/hardware_detector.py @@ -0,0 +1,76 @@ +import psutil +import pynvml +import time +import os + + +class HardwareDetector: + """ + This class detects the hardware specifications of the computer and monitors them continuously. + """ + + def __init__(self): + self.hardware_profile = {} + + def get_gpu_specs(self) -> None: + """ + Detects the GPU specifications of the computer. + :return: None + """ + pynvml.nvmlInit() + device_count = pynvml.nvmlDeviceGetCount() + if device_count == 0: + self.hardware_profile['gpu_name'] = "None available" + self.hardware_profile['gpu_total_memory_gb'] = 0 + self.hardware_profile['gpu_used_memory_gb'] = 0 + return + gpu_handle = pynvml.nvmlDeviceGetHandleByIndex(0) + gpu_name = pynvml.nvmlDeviceGetName(gpu_handle) + gpu_mem_info = pynvml.nvmlDeviceGetMemoryInfo(gpu_handle) + gpu_total_mem = gpu_mem_info.total / (1024 ** 3) + gpu_used_mem = gpu_mem_info.used / (1024 ** 3) + pynvml.nvmlShutdown() + self.hardware_profile['gpu_name'] = gpu_name + self.hardware_profile['gpu_total_memory_gb'] = round(gpu_total_mem, 2) + self.hardware_profile['gpu_used_memory_gb'] = round(gpu_used_mem, 2) + + def get_computer_specs(self) -> None: + """ + Detects the computer specifications including RAM, available disk space, and CPU cores. + :return: None + """ + memory = psutil.virtual_memory() + ram_total = memory.total + ram_used = memory.used + available_diskspace = psutil.disk_usage('/').free / (1024 ** 3) + cpu_cores = psutil.cpu_count(logical=True) + cpu_usage = psutil.cpu_percent(interval=0.1) + self.hardware_profile['ram_total_gb'] = round(ram_total / (1024 ** 3), 2) + self.hardware_profile['ram_used_gb'] = round(ram_used / (1024 ** 3), 2) + self.hardware_profile['available_diskspace_gb'] = round(available_diskspace, 2) + self.hardware_profile['cpu_cores'] = cpu_cores + self.hardware_profile['cpu_usage_percent'] = cpu_usage + + def monitor_resources(self, interval: int = 1) -> None: + """ + Continuously monitors and displays hardware resources. + :param interval: Time in seconds between updates. + :return: None + """ + try: + while True: + self.get_computer_specs() + self.get_gpu_specs() + os.system('cls' if os.name == 'nt' else 'clear') # Clear the console for a clean display + print("Hardware Resource Monitor") + print("==========================") + for key, value in self.hardware_profile.items(): + print(f"{key}: {value}") + time.sleep(interval) + except KeyboardInterrupt: + print("\nMonitoring stopped.") + + +# Run the continuous monitor +hardware = HardwareDetector() +hardware.monitor_resources(interval=0.5) \ No newline at end of file diff --git a/Hardware Detector/requirements.txt b/Hardware Detector/requirements.txt new file mode 100644 index 00000000..f767002e --- /dev/null +++ b/Hardware Detector/requirements.txt @@ -0,0 +1,3 @@ +psutil +pynvml +typing \ No newline at end of file From 655e7b75ab807f39c0b5da1adf129077d4ca0a00 Mon Sep 17 00:00:00 2001 From: Granth Agarwal Date: Mon, 5 May 2025 13:58:20 +0530 Subject: [PATCH 16/63] Update README.md Added python website link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index de76a6e9..3c23dd7e 100644 --- a/README.md +++ b/README.md @@ -153,7 +153,7 @@ More information on contributing and the general code of conduct for discussion | Weather GUI | [Weather GUI](https://github.com/DhanushNehru/Python-Scripts/tree/master/Weather%20GUI) | Displays information on the weather. | | Website Blocker | [Website Blocker](https://github.com/DhanushNehru/Python-Scripts/tree/master/Website%20Blocker) | Downloads the website and loads it on your homepage in your local IP. | | Website Cloner | [Website Cloner](https://github.com/DhanushNehru/Python-Scripts/tree/master/Website%20Cloner) | Clones any website and opens the site in your local IP. | -| Web Scraper | [Web Scraper](https://github.com/Charul00/Python-Scripts/tree/main/Web%20Scraper) | A Python script that scrapes blog titles from Python.org and saves them to a file. | +| Web Scraper | [Web Scraper](https://github.com/Charul00/Python-Scripts/tree/main/Web%20Scraper) | A Python script that scrapes blog titles from [Python.org](https://www.python.org/) and saves them to a file. | | Weight Converter | [Weight Converter](https://github.com/WatashiwaSid/Python-Scripts/tree/master/Weight%20Converter) | Simple GUI script to convert weight in different measurement units. | | Wikipedia Data Extractor | [Wikipedia Data Extractor](https://github.com/DhanushNehru/Python-Scripts/tree/master/Wikipedia%20Data%20Extractor) | A simple Wikipedia data extractor script to get output in your IDE. | | Word to PDF | [Word to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/master/Word%20to%20PDF%20converter) | A Python script to convert an MS Word file to a PDF file. | From 8cc77e0e2b90c8abcd01b14b928ece4a7cfa4c91 Mon Sep 17 00:00:00 2001 From: Dhanush Date: Sat, 10 May 2025 23:36:59 +0530 Subject: [PATCH 17/63] Update Web Scraper in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3c23dd7e..0547119f 100644 --- a/README.md +++ b/README.md @@ -153,7 +153,7 @@ More information on contributing and the general code of conduct for discussion | Weather GUI | [Weather GUI](https://github.com/DhanushNehru/Python-Scripts/tree/master/Weather%20GUI) | Displays information on the weather. | | Website Blocker | [Website Blocker](https://github.com/DhanushNehru/Python-Scripts/tree/master/Website%20Blocker) | Downloads the website and loads it on your homepage in your local IP. | | Website Cloner | [Website Cloner](https://github.com/DhanushNehru/Python-Scripts/tree/master/Website%20Cloner) | Clones any website and opens the site in your local IP. | -| Web Scraper | [Web Scraper](https://github.com/Charul00/Python-Scripts/tree/main/Web%20Scraper) | A Python script that scrapes blog titles from [Python.org](https://www.python.org/) and saves them to a file. | +| Web Scraper | [Web Scraper](https://github.com/DhanushNehru/Python-Scripts/tree/master/Web%20Scraper) | A Python script that scrapes blog titles from [Python.org](https://www.python.org/) and saves them to a file. | | Weight Converter | [Weight Converter](https://github.com/WatashiwaSid/Python-Scripts/tree/master/Weight%20Converter) | Simple GUI script to convert weight in different measurement units. | | Wikipedia Data Extractor | [Wikipedia Data Extractor](https://github.com/DhanushNehru/Python-Scripts/tree/master/Wikipedia%20Data%20Extractor) | A simple Wikipedia data extractor script to get output in your IDE. | | Word to PDF | [Word to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/master/Word%20to%20PDF%20converter) | A Python script to convert an MS Word file to a PDF file. | From 02cadf3a6c27262fd5fe45484d13668d33d78ba6 Mon Sep 17 00:00:00 2001 From: RETR0-OS Date: Mon, 12 May 2025 12:34:52 -0700 Subject: [PATCH 18/63] update docs --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index de76a6e9..68a9457a 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ More information on contributing and the general code of conduct for discussion ## List of Scripts in Repo | Script | Link | Description | -| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ---------------------------------------- |----------------------------------------------------------------------------------------------------------------------------------------------------------| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Arrange It | [Arrange It](https://github.com/DhanushNehru/Python-Scripts/tree/master/Arrange%20It) | A Python script that can automatically move files into corresponding folders based on their extensions. | | Auto WiFi Check | [Auto WiFi Check](https://github.com/DhanushNehru/Python-Scripts/tree/master/Auto%20WiFi%20Check) | A Python script to monitor if the WiFi connection is active or not | | AutoCert | [AutoCert](https://github.com/DhanushNehru/Python-Scripts/tree/master/AutoCert) | A Python script to auto-generate e-certificates in bulk. | @@ -73,6 +73,7 @@ More information on contributing and the general code of conduct for discussion | Get Hexcodes From Websites | [Get Hexcodes From Websites](https://github.com/DhanushNehru/Python-Scripts/tree/master/Get%20Hexcodes%20From%20Websites) | Generates a Python list containing Hexcodes from a website. | | Hand_Volume | [Hand_Volume](https://github.com/DhanushNehru/Python-Scripts/tree/master/Hand%20Volume) | Detects and tracks hand movements to control volume. | | Hangman Game | [Hangman](https://github.com/DhanushNehru/Python-Scripts/tree/master/Hangman%20Game) | A classic word-guessing game where players guess letters to find the hidden word | +| Hardware Detector | [Hardware Detector](https://github.com/DhanushNehru/Python-Scripts/tree/master/Hardware%20Detector) | A Python script that detects and displays hardware specifications and resource usage, including CPU, RAM, disk space, and GPU information. | | Harvest Predictor | [Harvest Predictor](https://github.com/DhanushNehru/Python-Scripts/tree/master/Harvest%20Predictor) | Takes some necessary input parameters and predicts harvest according to it. | | Html-to-images | [html-to-images](https://github.com/DhanushNehru/Python-Scripts/tree/master/HTML%20to%20Images) | Converts HTML documents to image files. | | Image Capture | [Image Capture](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Capture) | Captures image from your webcam and saves it on your local device. | @@ -110,7 +111,7 @@ More information on contributing and the general code of conduct for discussion | PDF to Audio | [PDF to Audio](https://github.com/DhanushNehru/Python-Scripts/tree/master/PDF%20to%20Audio) | Converts PDF to audio. | | PDF to Text | [PDF to text](https://github.com/DhanushNehru/Python-Scripts/tree/master/PDF%20to%20text) | Converts PDF to text. | | PDF merger and splitter | [PDF Merger and Splitter](https://github.com/AbhijitMotekar99/Python-Scripts/blob/master/PDF%20Merger%20and%20Splitter/PDF%20Merger%20and%20Splitter.py) | Create a tool that can merge multiple PDF files into one or split a single PDF into separate pages. | -| Pizza Order | [Pizza Order](https://github.com/DhanushNehru/Python-Scripts/tree/master/Pizza%20Order) | An algorithm designed to handle pizza orders from customers with accurate receipts and calculations. | +| Pizza Order | [Pizza Order](https://github.com/DhanushNehru/Python-Scripts/tree/master/Pizza%20Order) | An algorithm designed to handle pizza orders from customers with accurate receipts and calculations. | | Planet Simulation | [Planet Simulation](https://github.com/DhanushNehru/Python-Scripts/tree/master/Planet%20Simulation) | A simulation of several planets rotating around the sun. | | Playlist Exchange | [Playlist Exchange](https://github.com/DhanushNehru/Python-Scripts/tree/master/Playlist%20Exchange) | A Python script to exchange songs and playlists between Spotify and Python. | | Pigeonhole Sort | [Algorithm](https://github.com/DhanushNehru/Python-Scripts/tree/master/PigeonHole) | The pigeonhole sort algorithm to sort your arrays efficiently! | From 7eeb8cf4e8c3c529f77de792867f0da4119aca74 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 May 2025 21:06:36 +0000 Subject: [PATCH 19/63] Bump setuptools from 75.2.0 to 78.1.1 in /Password Strength Checker Bumps [setuptools](https://github.com/pypa/setuptools) from 75.2.0 to 78.1.1. - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v75.2.0...v78.1.1) --- updated-dependencies: - dependency-name: setuptools dependency-version: 78.1.1 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Password Strength Checker/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Password Strength Checker/requirements.txt b/Password Strength Checker/requirements.txt index ff91e11f..e2b7e64a 100644 --- a/Password Strength Checker/requirements.txt +++ b/Password Strength Checker/requirements.txt @@ -30,7 +30,7 @@ requests==2.32.3 rich==13.9.2 scikit-learn==1.5.2 scipy==1.14.1 -setuptools==75.2.0 +setuptools==78.1.1 silence_tensorflow==1.2.2 six==1.16.0 tensorboard==2.17.1 From d3abe10551b43941cd62a808d1df90f048e08a66 Mon Sep 17 00:00:00 2001 From: Dhanush Date: Mon, 26 May 2025 16:01:20 +0530 Subject: [PATCH 20/63] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2fdfcb2a..11c8c40e 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ More information on contributing and the general code of conduct for discussion | Image Watermarker | [Image Watermarker](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Watermarker) | Adds a watermark to an image. | | Image to ASCII | [Image to ASCII](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20to%20ASCII) | Converts an image into ASCII art. | | Image to Gif | [Image to Gif](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20to%20GIF) | Generate gif from images. | -| Images to WebP Converter | [Images to WebP Converter] (https://github.com/DhanushNehru/Python-Scripts/tree/master/Images%20to%20WebP%20Converter) | Converts images to WebP vie cmd or GUI | +| Images to WebP Converter | [Images to WebP Converter](https://github.com/DhanushNehru/Python-Scripts/tree/master/Images%20to%20WebP%20Converter) | Converts images to WebP vie cmd or GUI | | Interactive Dictionary | [Interactive Dictionary](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20InteractiveDictionary) | finding out meanings of words | | IP Geolocator | [IP Geolocator](https://github.com/DhanushNehru/Python-Scripts/tree/master/IP%20Geolocator) | Uses an IP address to geolocate a location on Earth. | | Jokes Generator | [Jokes generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Jokes%20Generator) | Generates jokes. | From 37fa18244eaa080f9abdb79d666302ca955bcfeb Mon Sep 17 00:00:00 2001 From: Sue Lim Date: Thu, 29 May 2025 21:11:38 +0800 Subject: [PATCH 21/63] Refactored project folder structure --- Currency Script/.idea/.gitignore | 8 ++++++++ Currency Script/.idea/Currency Script.iml | 8 ++++++++ .../.idea/inspectionProfiles/Project_Default.xml | 13 +++++++++++++ .../.idea/inspectionProfiles/profiles_settings.xml | 6 ++++++ Currency Script/.idea/misc.xml | 4 ++++ Currency Script/.idea/modules.xml | 8 ++++++++ Currency Script/.idea/vcs.xml | 6 ++++++ Currency Script/main.py | 2 ++ Currency Script/readme.txt | 1 + Currency Script/requirements.txt | 1 + Currency Script/setup.py | 1 + Currency Script/src/__init__.py | 0 Currency Script/src/api_handler.py | 2 ++ Currency Script/{currency.py => src/converter.py} | 1 + .../{currency_calculator.py => src/currencies.py} | 1 + 15 files changed, 62 insertions(+) create mode 100644 Currency Script/.idea/.gitignore create mode 100644 Currency Script/.idea/Currency Script.iml create mode 100644 Currency Script/.idea/inspectionProfiles/Project_Default.xml create mode 100644 Currency Script/.idea/inspectionProfiles/profiles_settings.xml create mode 100644 Currency Script/.idea/misc.xml create mode 100644 Currency Script/.idea/modules.xml create mode 100644 Currency Script/.idea/vcs.xml create mode 100644 Currency Script/main.py create mode 100644 Currency Script/readme.txt create mode 100644 Currency Script/requirements.txt create mode 100644 Currency Script/setup.py create mode 100644 Currency Script/src/__init__.py create mode 100644 Currency Script/src/api_handler.py rename Currency Script/{currency.py => src/converter.py} (95%) rename Currency Script/{currency_calculator.py => src/currencies.py} (95%) diff --git a/Currency Script/.idea/.gitignore b/Currency Script/.idea/.gitignore new file mode 100644 index 00000000..13566b81 --- /dev/null +++ b/Currency Script/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/Currency Script/.idea/Currency Script.iml b/Currency Script/.idea/Currency Script.iml new file mode 100644 index 00000000..f552a87a --- /dev/null +++ b/Currency Script/.idea/Currency Script.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Currency Script/.idea/inspectionProfiles/Project_Default.xml b/Currency Script/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 00000000..c48cec66 --- /dev/null +++ b/Currency Script/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/Currency Script/.idea/inspectionProfiles/profiles_settings.xml b/Currency Script/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 00000000..105ce2da --- /dev/null +++ b/Currency Script/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Currency Script/.idea/misc.xml b/Currency Script/.idea/misc.xml new file mode 100644 index 00000000..84dd86c7 --- /dev/null +++ b/Currency Script/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Currency Script/.idea/modules.xml b/Currency Script/.idea/modules.xml new file mode 100644 index 00000000..ff381672 --- /dev/null +++ b/Currency Script/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Currency Script/.idea/vcs.xml b/Currency Script/.idea/vcs.xml new file mode 100644 index 00000000..6c0b8635 --- /dev/null +++ b/Currency Script/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Currency Script/main.py b/Currency Script/main.py new file mode 100644 index 00000000..ed705b92 --- /dev/null +++ b/Currency Script/main.py @@ -0,0 +1,2 @@ +# TODO IMPORT API / CONVERTER / CURRENCY MODULES +# TODO UPDATE / POPULATE MAIN TO ENSURE THERE IS A INTUITIVE SIMPLE UI \ No newline at end of file diff --git a/Currency Script/readme.txt b/Currency Script/readme.txt new file mode 100644 index 00000000..3202240d --- /dev/null +++ b/Currency Script/readme.txt @@ -0,0 +1 @@ +# TODO - UPDATE README \ No newline at end of file diff --git a/Currency Script/requirements.txt b/Currency Script/requirements.txt new file mode 100644 index 00000000..ef92400b --- /dev/null +++ b/Currency Script/requirements.txt @@ -0,0 +1 @@ +# TODO - UPDATE REQUIREMENTS TO NOTE INSTALLS ARE NOTED \ No newline at end of file diff --git a/Currency Script/setup.py b/Currency Script/setup.py new file mode 100644 index 00000000..d1322786 --- /dev/null +++ b/Currency Script/setup.py @@ -0,0 +1 @@ +# UPDATE SETUP TO NOTE SET UP / PACKAGES \ No newline at end of file diff --git a/Currency Script/src/__init__.py b/Currency Script/src/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/Currency Script/src/api_handler.py b/Currency Script/src/api_handler.py new file mode 100644 index 00000000..99441114 --- /dev/null +++ b/Currency Script/src/api_handler.py @@ -0,0 +1,2 @@ +# TODO - RELOCATE ALL API CALLING TO THIS MODULE +# TODO - ENSURE API IS WORKING OR ELSE FIND ONE THAT IS diff --git a/Currency Script/currency.py b/Currency Script/src/converter.py similarity index 95% rename from Currency Script/currency.py rename to Currency Script/src/converter.py index 062e1a3e..fbcc0274 100644 --- a/Currency Script/currency.py +++ b/Currency Script/src/converter.py @@ -1,3 +1,4 @@ +# TODO REVIEW AND ENSURE THE PURPOSE OF THIS MODULE IS TO CONVERT # Python program to convert the currency # of one country to that of another country diff --git a/Currency Script/currency_calculator.py b/Currency Script/src/currencies.py similarity index 95% rename from Currency Script/currency_calculator.py rename to Currency Script/src/currencies.py index e0ae9585..409605f7 100644 --- a/Currency Script/currency_calculator.py +++ b/Currency Script/src/currencies.py @@ -1,3 +1,4 @@ +# TODO REVIEW BELOW CODE TO ENSURE THAT WHAT IS IN THIS MODULE FOR FUNCTION RECALLING CURRENCY FROM API # Importing necessary modules for currency formatting and HTTP requests from locale import currency import requests From c6f47c24c42ccd7ea477f70b1fae2bf329abd0fc Mon Sep 17 00:00:00 2001 From: Sue Lim Date: Tue, 3 Jun 2025 22:06:50 +0800 Subject: [PATCH 22/63] API_HANDLER Module updated for only handling API --- Currency Script/src/api_handler.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Currency Script/src/api_handler.py b/Currency Script/src/api_handler.py index 99441114..226c88d8 100644 --- a/Currency Script/src/api_handler.py +++ b/Currency Script/src/api_handler.py @@ -1,2 +1,18 @@ -# TODO - RELOCATE ALL API CALLING TO THIS MODULE -# TODO - ENSURE API IS WORKING OR ELSE FIND ONE THAT IS +import requests +import json + +def get_exchange_data(api_url: str = "https://theratesapi.com/api/latest/") -> dict: + """Fetch latest exchange data from the API.""" + response = requests.get(api_url) + if response.status_code != 200: + raise Exception(f"API request failed with status {response.status_code}") + + data = response.json() + return data # This includes 'base', 'date', and 'rates' + +# NOTE - for logging & debugging +if __name__ == "__main__": + exchange_data = get_exchange_data() + print("Base currency:", exchange_data["base"]) + print("Date:", exchange_data["date"]) + print("Rates:", list(exchange_data["rates"].items())[:5]) From 201b33bc409c469b27fd40b73d583580d8e90c5f Mon Sep 17 00:00:00 2001 From: leftkats Date: Fri, 6 Jun 2025 16:30:10 +0300 Subject: [PATCH 23/63] doc: add contribution guidelines --- CONTRIBUTING.md | 31 +++++++++++++++++ CONTRIBUTIONS.md | 90 ------------------------------------------------ README.md | 4 ++- 3 files changed, 34 insertions(+), 91 deletions(-) create mode 100644 CONTRIBUTING.md delete mode 100644 CONTRIBUTIONS.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..68ebedab --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,31 @@ +# Contributing to This Repository + +Thank you for your interest in contributing! We welcome contributions of Python scripts and improvements to this repository. + +## How to Contribute + +1. **Discuss First** + Before making any changes, please open an issue to discuss your idea with the maintainers. This helps us coordinate and avoid duplication. + +2. **Make Your Contribution** + - Fork the repository. + - Create a new folder named after your script or its purpose (short and descriptive). + - Add your Python script(s) inside this folder. + - Include a `README.md` in that folder explaining what your script does and any prerequisites. + - Update the main `README.md` by adding your script to the **List of Scripts** with its name, a brief description, and a link to your script folder. + +3. **Open a Pull Request (PR)** + - Link your PR to the issue you created earlier. + - We will review your changes and provide feedback or merge it if everything looks good. + +4. **Clean Up** + Ensure any temporary install or build dependencies are removed before submitting your PR. + +## First-Time Contributors + +If this is your first time contributing to an open source project, check out this helpful guide: +[How to Make Your First Contribution](https://opensource.guide/how-to-contribute/) + +## Code of Conduct + +We strive to maintain a welcoming and inclusive community. Please read and respect our [Code of Conduct](https://github.com/DhanushNehru/Python-Scripts/blob/master/CODE_OF_CONDUCT.md) in all your interactions. diff --git a/CONTRIBUTIONS.md b/CONTRIBUTIONS.md deleted file mode 100644 index 6cbcddf1..00000000 --- a/CONTRIBUTIONS.md +++ /dev/null @@ -1,90 +0,0 @@ -# Contributing - -When contributing to this repository, please first discuss the change you wish to make via issue, with the maintainers of this repository before making a change. - -First time contributers can refer to various resources on how -to make their first contribution, one which we would refer is [this.][first] - -Please note we have a code of conduct, please follow it in all your interactions with the project. - -## Pull Request Process - -1. Create an issue and fork the repository, add a new folder with a name that describes your script in short. You'll place your Python script(s) in there. -2. Add a `README.md` in that file which explains your script -and any prerequisites it may have. -3. Update the main `README.md`, adding your script to the List of Scripts in Repo, providing the script's name, a link to it, and a brief description. -4. Mention the issue you made in 1) in your Pull Request, which will be then verified and merged accordingly. -5. Ensure any install or build dependencies are removed before the end of the layer when doing a build. - ---- -## Code of Conduct - -### Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -### Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -### Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -### Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -### Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at [INSERT EMAIL ADDRESS]. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -### Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available [here.][version] diff --git a/README.md b/README.md index 11c8c40e..ff757cb7 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,9 @@ _**Note: Please follow the maintainer of the repository for quick approval of th **NOTE:** Remember to close your issues once your PR has been merged! They can be reopened if needed. -More information on contributing and the general code of conduct for discussion and feedback in this repo can be found here: [CONTRIBUTIONS.md](https://github.com/DhanushNehru/Python-Scripts/blob/master/CONTRIBUTIONS.md) +More information on contributing can be found here: [CONTRIBUTING.md](https://github.com/DhanushNehru/Python-Scripts/blob/master/CONTRIBUTING.md) + +General code of conduct for discussion and feedback in this repo can be found here: [CODE_OF_CONDUCT.md](https://github.com/DhanushNehru/Python-Scripts/blob/master/CODE_OF_CONDUCT.md) ## List of Scripts in Repo From c0ff687e756da70f1c08af9eef7c0d13e01de90b Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 6 Jun 2025 19:43:30 +0530 Subject: [PATCH 24/63] Rename master branch to main - fixes #442 --- README.md | 242 ++++++++++++++++++++------------------- update_master_to_main.py | 25 ++++ 2 files changed, 147 insertions(+), 120 deletions(-) create mode 100644 update_master_to_main.py diff --git a/README.md b/README.md index 11c8c40e..2ce6c8e1 100644 --- a/README.md +++ b/README.md @@ -33,133 +33,135 @@ _**Note: Please follow the maintainer of the repository for quick approval of th **NOTE:** Remember to close your issues once your PR has been merged! They can be reopened if needed. -More information on contributing and the general code of conduct for discussion and feedback in this repo can be found here: [CONTRIBUTIONS.md](https://github.com/DhanushNehru/Python-Scripts/blob/master/CONTRIBUTIONS.md) +More information on contributing can be found here: [CONTRIBUTING.md](https://github.com/DhanushNehru/Python-Scripts/blob/main/CONTRIBUTING.md) + +General code of conduct for discussion and feedback in this repo can be found here: [CODE_OF_CONDUCT.md](https://github.com/DhanushNehru/Python-Scripts/blob/main/CODE_OF_CONDUCT.md) ## List of Scripts in Repo | Script | Link | Description | | ---------------------------------------- |----------------------------------------------------------------------------------------------------------------------------------------------------------| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Arrange It | [Arrange It](https://github.com/DhanushNehru/Python-Scripts/tree/master/Arrange%20It) | A Python script that can automatically move files into corresponding folders based on their extensions. | -| Auto WiFi Check | [Auto WiFi Check](https://github.com/DhanushNehru/Python-Scripts/tree/master/Auto%20WiFi%20Check) | A Python script to monitor if the WiFi connection is active or not | -| AutoCert | [AutoCert](https://github.com/DhanushNehru/Python-Scripts/tree/master/AutoCert) | A Python script to auto-generate e-certificates in bulk. | -| Autocomplete Notes App | [AutoCert](https://github.com/DhanushNehru/Python-Scripts/tree/master/Autocomplete%20Notes%20App) | A Python script to auto-generate e-certificates in bulk. | -| Automated Emails | [Automated Emails](https://github.com/DhanushNehru/Python-Scripts/tree/master/Automate%20Emails%20Daily) | A Python script to send out personalized emails by reading a CSV file. | -| Black Hat Python | [Black Hat Python](https://github.com/DhanushNehru/Python-Scripts/tree/master/Black%20Hat%20Python) | Source code from the book Black Hat Python | -| Blackjack | [Blackjack](https://github.com/DhanushNehru/Python-Scripts/tree/master/Blackjack) | A game of Blackjack - let's get a 21. | -| Chessboard | [Chessboard](https://github.com/DhanushNehru/Python-Scripts/tree/master/Chess%20Board) | Creates a chessboard using matplotlib. | -| Compound Interest Calculator | [Compound Interest Calculator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Calculate%20Compound%20Interest) | A Python script to calculate compound interest. | -| Convert Temperature | [Convert Temperature](https://github.com/DhanushNehru/Python-Scripts/tree/master/Convert%20Temperature) | A python script to convert temperature between Fahreheit, Celsius and Kelvin | -| Connect Four | [Connect Four](https://github.com/DhanushNehru/Python-Scripts/tree/master/Connect%20Four) | A Python script for the board game Connect Four, which can be played by 1-2 players | -| Countdown Timer | [Countdown Timer](https://github.com/DhanushNehru/Python-Scripts/tree/master/Countdown%20Timer) | Displays a message when the Input time elapses. | -| Crop Images | [Crop Images](https://github.com/DhanushNehru/Python-Scripts/tree/master/Crop%20Images) | A Python script to crop a given image. | -| CSV to Excel | [CSV to Excel](https://github.com/DhanushNehru/Python-Scripts/tree/master/CSV%20to%20Excel) | A Python script to convert a CSV to an Excel file. | -| Currency Script | [Currency Script](https://github.com/DhanushNehru/Python-Scripts/tree/master/Currency%20Script) | A Python script to convert the currency of one country to that of another. | -| Digital Clock | [Digital Clock](https://github.com/DhanushNehru/Python-Scripts/tree/master/Digital%20Clock) | A Python script to preview a digital clock in the terminal. | -| Display Popup Window | [Display Popup Window](https://github.com/DhanushNehru/Python-Scripts/tree/master/Display%20Popup%20Window) | A Python script to preview a GUI interface to the user. | -| Distance Calculator | [Distance Calculator](https://github.com/Mathdallas-code/Python-Scripts/tree/master/Distance%20Calculator) | A Python script to calculate the distance between two points. -| Duplicate Finder | [Duplicate Finder](https://github.com/DhanushNehru/Python-Scripts/tree/master/Duplicate%Fnder) | The script identifies duplicate files by MD5 hash and allows deletion or relocation. | -| Emoji | [Emoji](https://github.com/DhanushNehru/Python-Scripts/tree/master/Emoji) | The script generates a PDF with an emoji using a custom TrueType font. | -| Emoji to PDF | [Emoji to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/master/Emoji%20To%20Pdf) | A Python Script to view Emoji in PDF. | -| Expense Tracker | [Expense Tracker](https://github.com/DhanushNehru/Python-Scripts/tree/master/Expense%20Tracker) | A Python script which can track expenses. | -| Face Reaction | [Face Reaction](https://github.com/DhanushNehru/Python-Scripts/tree/master/Face%20Reaction) | A script which attempts to detect facial expressions. | -| Fake Profiles | [Fake Profiles](https://github.com/DhanushNehru/Python-Scripts/tree/master/Fake%20Profile) | Creates fake profiles. | -| File Encryption Decryption | [File Encryption Decryption](https://github.com/DhanushNehru/Python-Scripts/tree/master/File%20Encryption%20Decryption) | Encrypts and Decrypts files using AES Algorithms for Security purposes. | -| File Search | [File_search](https://github.com/debojit11/Python-Scripts/tree/master/File_Search) | A python script that searches a specified folder for all files, regardless of file type, within its directory and subdirectories. | -| Font Art | [Font Art](https://github.com/DhanushNehru/Python-Scripts/tree/master/Font%20Art) | Displays a font art using Python. | -| File Organizer | [FileOrganizer](https://github.com/DhanushNehru/Python-Scripts/tree/master/FileOrganizer) | Organizes files into different folders according to their file type | -| File Renamer | [FileRenamer](https://github.com/DhanushNehru/Python-Scripts/tree/master/FileRenamer) | Bulk renames files with the same start/end | -| File Text Search | [FileTextSearch](https://github.com/DhanushNehru/Python-Scripts/tree/master/FileTextSearch) | Searches for a keyword/phrase accross different files | -| Freelance Helper Program | [freelance-helper](https://github.com/DhanushNehru/Python-Scripts/tree/master/freelance-help-program) | Takes an Excel file with working hours and calculates the payment. | -| Get Hexcodes From Websites | [Get Hexcodes From Websites](https://github.com/DhanushNehru/Python-Scripts/tree/master/Get%20Hexcodes%20From%20Websites) | Generates a Python list containing Hexcodes from a website. | -| Hand_Volume | [Hand_Volume](https://github.com/DhanushNehru/Python-Scripts/tree/master/Hand%20Volume) | Detects and tracks hand movements to control volume. | -| Hangman Game | [Hangman](https://github.com/DhanushNehru/Python-Scripts/tree/master/Hangman%20Game) | A classic word-guessing game where players guess letters to find the hidden word | -| Hardware Detector | [Hardware Detector](https://github.com/DhanushNehru/Python-Scripts/tree/master/Hardware%20Detector) | A Python script that detects and displays hardware specifications and resource usage, including CPU, RAM, disk space, and GPU information. | -| Harvest Predictor | [Harvest Predictor](https://github.com/DhanushNehru/Python-Scripts/tree/master/Harvest%20Predictor) | Takes some necessary input parameters and predicts harvest according to it. | -| Html-to-images | [html-to-images](https://github.com/DhanushNehru/Python-Scripts/tree/master/HTML%20to%20Images) | Converts HTML documents to image files. | -| Image Capture | [Image Capture](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Capture) | Captures image from your webcam and saves it on your local device. | -| Image Compress | [Image Compress](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Compress) | Takes an image and compresses it. | -| Image Manipulation without libraries | [Image Manipulation without libraries](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Manipulation%20without%20libraries) | Manipulates images without using any external libraries. | -| Image Text | [Image Text](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Text) | Extracts text from the image. | -| Image Text to PDF | [Image Text to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Text%20to%20PDF) | Adds an image and text to a PDF. | -| Image Uploader | [Image Uploader](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Uploader) | Uploads images to Imgur using a keyboard shortcut. | -| Image Watermarker | [Image Watermarker](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Watermarker) | Adds a watermark to an image. | -| Image to ASCII | [Image to ASCII](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20to%20ASCII) | Converts an image into ASCII art. | -| Image to Gif | [Image to Gif](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20to%20GIF) | Generate gif from images. | -| Images to WebP Converter | [Images to WebP Converter](https://github.com/DhanushNehru/Python-Scripts/tree/master/Images%20to%20WebP%20Converter) | Converts images to WebP vie cmd or GUI | -| Interactive Dictionary | [Interactive Dictionary](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20InteractiveDictionary) | finding out meanings of words | -| IP Geolocator | [IP Geolocator](https://github.com/DhanushNehru/Python-Scripts/tree/master/IP%20Geolocator) | Uses an IP address to geolocate a location on Earth. | -| Jokes Generator | [Jokes generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Jokes%20Generator) | Generates jokes. | -| JSON to CSV 1 | [JSON to CSV 1](https://github.com/DhanushNehru/Python-Scripts/tree/master/JSON%20to%20CSV) | Converts JSON to CSV files. | -| JSON to CSV 2 | [JSON to CSV 2](https://github.com/DhanushNehru/Python-Scripts/tree/master/JSON%20to%20CSV%202) | Converts a JSON file to a CSV file. | -| JSON to CSV converter | [JSON to CSV converter](https://github.com/DhanushNehru/Python-Scripts/tree/master/Json%20to%20CSV%20Convertor) | Converts JSON file to CSV files. It can convert nested JSON files as well. A sample JSON is included for testing. | -| JSON to YAML converter | [JSON to YAML converter](https://github.com/DhanushNehru/Python-Scripts/tree/master/JSON%20to%20YAML) | Converts JSON file to YAML files. A sample JSON is included for testing. | -| Keylogger | [Keylogger](https://github.com/DhanushNehru/Python-Scripts/tree/master/Keylogger) | Keylogger that can track your keystrokes, clipboard text, take screenshots at regular intervals, and records audio. | -| Keyword - Retweeting | [Keyword - Retweeting](https://github.com/DhanushNehru/Python-Scripts/tree/master/Keyword%20Retweet%20Twitter%20Bot) | Find the latest tweets containing given keywords and then retweet them. | -| LinkedIn Bot | [LinkedIn Bot](https://github.com/DhanushNehru/Python-Scripts/tree/master/LinkedIn%20Bot) | Automates the process of searching for public profiles on LinkedIn and exporting the data to an Excel sheet. | +| Arrange It | [Arrange It](https://github.com/DhanushNehru/Python-Scripts/tree/main/Arrange%20It) | A Python script that can automatically move files into corresponding folders based on their extensions. | +| Auto WiFi Check | [Auto WiFi Check](https://github.com/DhanushNehru/Python-Scripts/tree/main/Auto%20WiFi%20Check) | A Python script to monitor if the WiFi connection is active or not | +| AutoCert | [AutoCert](https://github.com/DhanushNehru/Python-Scripts/tree/main/AutoCert) | A Python script to auto-generate e-certificates in bulk. | +| Autocomplete Notes App | [AutoCert](https://github.com/DhanushNehru/Python-Scripts/tree/main/Autocomplete%20Notes%20App) | A Python script to auto-generate e-certificates in bulk. | +| Automated Emails | [Automated Emails](https://github.com/DhanushNehru/Python-Scripts/tree/main/Automate%20Emails%20Daily) | A Python script to send out personalized emails by reading a CSV file. | +| Black Hat Python | [Black Hat Python](https://github.com/DhanushNehru/Python-Scripts/tree/main/Black%20Hat%20Python) | Source code from the book Black Hat Python | +| Blackjack | [Blackjack](https://github.com/DhanushNehru/Python-Scripts/tree/main/Blackjack) | A game of Blackjack - let's get a 21. | +| Chessboard | [Chessboard](https://github.com/DhanushNehru/Python-Scripts/tree/main/Chess%20Board) | Creates a chessboard using matplotlib. | +| Compound Interest Calculator | [Compound Interest Calculator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Calculate%20Compound%20Interest) | A Python script to calculate compound interest. | +| Convert Temperature | [Convert Temperature](https://github.com/DhanushNehru/Python-Scripts/tree/main/Convert%20Temperature) | A python script to convert temperature between Fahreheit, Celsius and Kelvin | +| Connect Four | [Connect Four](https://github.com/DhanushNehru/Python-Scripts/tree/main/Connect%20Four) | A Python script for the board game Connect Four, which can be played by 1-2 players | +| Countdown Timer | [Countdown Timer](https://github.com/DhanushNehru/Python-Scripts/tree/main/Countdown%20Timer) | Displays a message when the Input time elapses. | +| Crop Images | [Crop Images](https://github.com/DhanushNehru/Python-Scripts/tree/main/Crop%20Images) | A Python script to crop a given image. | +| CSV to Excel | [CSV to Excel](https://github.com/DhanushNehru/Python-Scripts/tree/main/CSV%20to%20Excel) | A Python script to convert a CSV to an Excel file. | +| Currency Script | [Currency Script](https://github.com/DhanushNehru/Python-Scripts/tree/main/Currency%20Script) | A Python script to convert the currency of one country to that of another. | +| Digital Clock | [Digital Clock](https://github.com/DhanushNehru/Python-Scripts/tree/main/Digital%20Clock) | A Python script to preview a digital clock in the terminal. | +| Display Popup Window | [Display Popup Window](https://github.com/DhanushNehru/Python-Scripts/tree/main/Display%20Popup%20Window) | A Python script to preview a GUI interface to the user. | +| Distance Calculator | [Distance Calculator](https://github.com/Mathdallas-code/Python-Scripts/tree/main/Distance%20Calculator) | A Python script to calculate the distance between two points. +| Duplicate Finder | [Duplicate Finder](https://github.com/DhanushNehru/Python-Scripts/tree/main/Duplicate%Fnder) | The script identifies duplicate files by MD5 hash and allows deletion or relocation. | +| Emoji | [Emoji](https://github.com/DhanushNehru/Python-Scripts/tree/main/Emoji) | The script generates a PDF with an emoji using a custom TrueType font. | +| Emoji to PDF | [Emoji to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/main/Emoji%20To%20Pdf) | A Python Script to view Emoji in PDF. | +| Expense Tracker | [Expense Tracker](https://github.com/DhanushNehru/Python-Scripts/tree/main/Expense%20Tracker) | A Python script which can track expenses. | +| Face Reaction | [Face Reaction](https://github.com/DhanushNehru/Python-Scripts/tree/main/Face%20Reaction) | A script which attempts to detect facial expressions. | +| Fake Profiles | [Fake Profiles](https://github.com/DhanushNehru/Python-Scripts/tree/main/Fake%20Profile) | Creates fake profiles. | +| File Encryption Decryption | [File Encryption Decryption](https://github.com/DhanushNehru/Python-Scripts/tree/main/File%20Encryption%20Decryption) | Encrypts and Decrypts files using AES Algorithms for Security purposes. | +| File Search | [File_search](https://github.com/debojit11/Python-Scripts/tree/main/File_Search) | A python script that searches a specified folder for all files, regardless of file type, within its directory and subdirectories. | +| Font Art | [Font Art](https://github.com/DhanushNehru/Python-Scripts/tree/main/Font%20Art) | Displays a font art using Python. | +| File Organizer | [FileOrganizer](https://github.com/DhanushNehru/Python-Scripts/tree/main/FileOrganizer) | Organizes files into different folders according to their file type | +| File Renamer | [FileRenamer](https://github.com/DhanushNehru/Python-Scripts/tree/main/FileRenamer) | Bulk renames files with the same start/end | +| File Text Search | [FileTextSearch](https://github.com/DhanushNehru/Python-Scripts/tree/main/FileTextSearch) | Searches for a keyword/phrase accross different files | +| Freelance Helper Program | [freelance-helper](https://github.com/DhanushNehru/Python-Scripts/tree/main/freelance-help-program) | Takes an Excel file with working hours and calculates the payment. | +| Get Hexcodes From Websites | [Get Hexcodes From Websites](https://github.com/DhanushNehru/Python-Scripts/tree/main/Get%20Hexcodes%20From%20Websites) | Generates a Python list containing Hexcodes from a website. | +| Hand_Volume | [Hand_Volume](https://github.com/DhanushNehru/Python-Scripts/tree/main/Hand%20Volume) | Detects and tracks hand movements to control volume. | +| Hangman Game | [Hangman](https://github.com/DhanushNehru/Python-Scripts/tree/main/Hangman%20Game) | A classic word-guessing game where players guess letters to find the hidden word | +| Hardware Detector | [Hardware Detector](https://github.com/DhanushNehru/Python-Scripts/tree/main/Hardware%20Detector) | A Python script that detects and displays hardware specifications and resource usage, including CPU, RAM, disk space, and GPU information. | +| Harvest Predictor | [Harvest Predictor](https://github.com/DhanushNehru/Python-Scripts/tree/main/Harvest%20Predictor) | Takes some necessary input parameters and predicts harvest according to it. | +| Html-to-images | [html-to-images](https://github.com/DhanushNehru/Python-Scripts/tree/main/HTML%20to%20Images) | Converts HTML documents to image files. | +| Image Capture | [Image Capture](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20Capture) | Captures image from your webcam and saves it on your local device. | +| Image Compress | [Image Compress](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20Compress) | Takes an image and compresses it. | +| Image Manipulation without libraries | [Image Manipulation without libraries](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20Manipulation%20without%20libraries) | Manipulates images without using any external libraries. | +| Image Text | [Image Text](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20Text) | Extracts text from the image. | +| Image Text to PDF | [Image Text to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20Text%20to%20PDF) | Adds an image and text to a PDF. | +| Image Uploader | [Image Uploader](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20Uploader) | Uploads images to Imgur using a keyboard shortcut. | +| Image Watermarker | [Image Watermarker](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20Watermarker) | Adds a watermark to an image. | +| Image to ASCII | [Image to ASCII](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20to%20ASCII) | Converts an image into ASCII art. | +| Image to Gif | [Image to Gif](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20to%20GIF) | Generate gif from images. | +| Images to WebP Converter | [Images to WebP Converter](https://github.com/DhanushNehru/Python-Scripts/tree/main/Images%20to%20WebP%20Converter) | Converts images to WebP vie cmd or GUI | +| Interactive Dictionary | [Interactive Dictionary](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20InteractiveDictionary) | finding out meanings of words | +| IP Geolocator | [IP Geolocator](https://github.com/DhanushNehru/Python-Scripts/tree/main/IP%20Geolocator) | Uses an IP address to geolocate a location on Earth. | +| Jokes Generator | [Jokes generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Jokes%20Generator) | Generates jokes. | +| JSON to CSV 1 | [JSON to CSV 1](https://github.com/DhanushNehru/Python-Scripts/tree/main/JSON%20to%20CSV) | Converts JSON to CSV files. | +| JSON to CSV 2 | [JSON to CSV 2](https://github.com/DhanushNehru/Python-Scripts/tree/main/JSON%20to%20CSV%202) | Converts a JSON file to a CSV file. | +| JSON to CSV converter | [JSON to CSV converter](https://github.com/DhanushNehru/Python-Scripts/tree/main/Json%20to%20CSV%20Convertor) | Converts JSON file to CSV files. It can convert nested JSON files as well. A sample JSON is included for testing. | +| JSON to YAML converter | [JSON to YAML converter](https://github.com/DhanushNehru/Python-Scripts/tree/main/JSON%20to%20YAML) | Converts JSON file to YAML files. A sample JSON is included for testing. | +| Keylogger | [Keylogger](https://github.com/DhanushNehru/Python-Scripts/tree/main/Keylogger) | Keylogger that can track your keystrokes, clipboard text, take screenshots at regular intervals, and records audio. | +| Keyword - Retweeting | [Keyword - Retweeting](https://github.com/DhanushNehru/Python-Scripts/tree/main/Keyword%20Retweet%20Twitter%20Bot) | Find the latest tweets containing given keywords and then retweet them. | +| LinkedIn Bot | [LinkedIn Bot](https://github.com/DhanushNehru/Python-Scripts/tree/main/LinkedIn%20Bot) | Automates the process of searching for public profiles on LinkedIn and exporting the data to an Excel sheet. | | Longitude & Latitude to conical coverter | [Longitude Latitude conical converter](master/Longitude%20Latitude%20conical%20converter) | Converts Longitude and Latitude to Lambert conformal conic projection. | -| Mail Sender | [Mail Sender](https://github.com/DhanushNehru/Python-Scripts/tree/master/Mail%20Sender) | Sends an email. | -| Merge Two Images | [Merge Two Images](https://github.com/DhanushNehru/Python-Scripts/tree/master/Merge%20Two%20Images) | Merges two images horizontally or vertically. | -| Mood based youtube song generator | [Mood based youtube song generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Mood%20based%20youtube%20song%20generator) | This Python script fetches a random song from YouTube based on your mood input and opens it in your default web browser. | -| Mouse mover | [Mouse mover](https://github.com/DhanushNehru/Python-Scripts/tree/master/Mouse%20Mover) | Moves your mouse every 15 seconds. | -| Morse Code | [Mose Code](https://github.com/DhanushNehru/Python-Scripts/tree/master/Morse%20Code) | Encodes and decodes Morse code. | -| No Screensaver | [No Screensaver](https://github.com/DhanushNehru/Python-Scripts/tree/master/No%20Screensaver) | Prevents screensaver from turning on. | -| OTP Verification | [OTP Verification](https://github.com/DhanushNehru/Python-Scripts/tree/master/OTP%20%20Verify) | An OTP Verification Checker. | -| Password Generator | [Password Generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Password%20Generator) | Generates a random password. | -| Password Manager | [Password Manager](https://github.com/nem5345/Python-Scripts/tree/master/Password%20Manager) | Generate and interact with a password manager. | -| Password Strength Checker | [Password Strength Checker](https://github.com/nem5345/Python-Scripts/tree/master/Password%20Strength%20Checker) | Evaluates how strong a given password is. | -| PDF Merger | [PDF Merger](https://github.com/DhanushNehru/Python-Scripts/tree/master/PDF%20Merger) | Merges multiple PDF files into a single PDF, with options for output location and custom order. | -| PDF to Audio | [PDF to Audio](https://github.com/DhanushNehru/Python-Scripts/tree/master/PDF%20to%20Audio) | Converts PDF to audio. | -| PDF to Text | [PDF to text](https://github.com/DhanushNehru/Python-Scripts/tree/master/PDF%20to%20text) | Converts PDF to text. | -| PDF merger and splitter | [PDF Merger and Splitter](https://github.com/AbhijitMotekar99/Python-Scripts/blob/master/PDF%20Merger%20and%20Splitter/PDF%20Merger%20and%20Splitter.py) | Create a tool that can merge multiple PDF files into one or split a single PDF into separate pages. | -| Pizza Order | [Pizza Order](https://github.com/DhanushNehru/Python-Scripts/tree/master/Pizza%20Order) | An algorithm designed to handle pizza orders from customers with accurate receipts and calculations. | -| Planet Simulation | [Planet Simulation](https://github.com/DhanushNehru/Python-Scripts/tree/master/Planet%20Simulation) | A simulation of several planets rotating around the sun. | -| Playlist Exchange | [Playlist Exchange](https://github.com/DhanushNehru/Python-Scripts/tree/master/Playlist%20Exchange) | A Python script to exchange songs and playlists between Spotify and Python. | -| Pigeonhole Sort | [Algorithm](https://github.com/DhanushNehru/Python-Scripts/tree/master/PigeonHole) | The pigeonhole sort algorithm to sort your arrays efficiently! | -| PNG TO JPG CONVERTOR | [PNG-To-JPG](https://github.com/DhanushNehru/Python-Scripts/tree/master/PNG%20To%20JPG) | A PNG TO JPG IMAGE CONVERTOR. | -| Pomodoro Timer | [Pomodoro Timer](https://github.com/DhanushNehru/Python-Scripts/tree/master/Pomodoro%20Timer) | A Pomodoro timer | -| Python GUI Notepad | [Python GUI Notepad](https://github.com/DhanushNehru/Python-Scripts/blob/master/PDF%20Merger%20and%20Splitter/PDF%20Merger%20and%20Splitter.py) | A Python-based GUI Notepad with essential features like saving, opening, editing text files, basic formatting, and a simple user interface for quick note-taking. | -| QR Code Generator | [QR Code Generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/QR%20Code%20Generator) | This is generate a QR code from the provided link | -| QR Code Scanner | [QR Code Scanner](https://github.com/DhanushNehru/Python-Scripts/tree/master/QR%20Code%20Scanner) | Helps in Sacanning the QR code in form of PNG or JPG just by running the python script. | -| QR Code with logo | [QR code with Logo](https://github.com/DhanushNehru/Python-Scripts/tree/master/QR%20with%20Logo) | QR Code Customization Feature | -| Random Color Generator | [Random Color Generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Random%20Color%20Generator) | A random color generator that will show you the color and values! | -| Remove Background | [Remove Background](https://github.com/DhanushNehru/Python-Scripts/tree/master/Remove%20Background) | Removes the background of images. | -| Road-Lane-Detection | [Road-Lane-Detection](https://github.com/NotIncorecc/Python-Scripts/tree/master/Road-Lane-Detection) | Detects the lanes of the road | -| Rock Paper Scissor 1 | [Rock Paper Scissor 1](https://github.com/DhanushNehru/Python-Scripts/tree/master/Rock%20Paper%20Scissor%201) | A game of Rock Paper Scissors. | -| Rock Paper Scissor 2 | [Rock Paper Scissor 2](https://github.com/DhanushNehru/Python-Scripts/tree/master/Rock%20Paper%20Scissor%202) | A new version game of Rock Paper Scissors. | -| Run Then Notify | [Run Then Notify](https://github.com/DhanushNehru/Python-Scripts/tree/master/Run%20Then%20Notify) | Runs a slow command and emails you when it completes execution. | -| Selfie with Python | [Selfie with Python](https://github.com/DhanushNehru/Python-Scripts/tree/master/Selfie%20with%20Python) | Take your selfie with python . | -| Simple DDOS | [Simple DDOS](https://github.com/VanshajR/Python-Scripts/tree/master/Simple%20DDOS) | The code allows you to send multiple HTTP requests concurrently for a specified duration. | -| Simple TCP Chat Server | [Simple TCP Chat Server](https://github.com/DhanushNehru/Python-Scripts/tree/master/TCP%20Chat%20Server) | Creates a local server on your LAN for receiving and sending messages! | -| Smart Attendance System | [Smart Attendance System](https://github.com/DhanushNehru/Python-Scripts/tree/master/Smart%20Attendance%20System) | This OpenCV framework is for Smart Attendance by actively decoding a student's QR Code. | -| Snake Game | [Snake Game](https://github.com/DhanushNehru/Python-Scripts/tree/master/Snake%20Game) | Classic snake game using python. | -| Snake Water Gun | [Snake Water Gun](https://github.com/DhanushNehru/Python-Scripts/tree/master/Snake%20Water%20Gun) | A game similar to Rock Paper Scissors. | -| Sorting | [Sorting](https://github.com/DhanushNehru/Python-Scripts/tree/master/Sorting) | Algorithm for bubble sorting. | -| Star Pattern | [Star Pattern](https://github.com/DhanushNehru/Python-Scripts/tree/master/Star%20Pattern) | Creates a star pattern pyramid. | -| Subnetting Calculator | [Subnetting Calculator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Subnetting%20Calculator) | Calculates network information based on a given IP address and subnet mask. | -| Take a break | [Take a break](https://github.com/DhanushNehru/Python-Scripts/tree/master/Take%20A%20Break) | Python code to take a break while working long hours. | +| Mail Sender | [Mail Sender](https://github.com/DhanushNehru/Python-Scripts/tree/main/Mail%20Sender) | Sends an email. | +| Merge Two Images | [Merge Two Images](https://github.com/DhanushNehru/Python-Scripts/tree/main/Merge%20Two%20Images) | Merges two images horizontally or vertically. | +| Mood based youtube song generator | [Mood based youtube song generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Mood%20based%20youtube%20song%20generator) | This Python script fetches a random song from YouTube based on your mood input and opens it in your default web browser. | +| Mouse mover | [Mouse mover](https://github.com/DhanushNehru/Python-Scripts/tree/main/Mouse%20Mover) | Moves your mouse every 15 seconds. | +| Morse Code | [Mose Code](https://github.com/DhanushNehru/Python-Scripts/tree/main/Morse%20Code) | Encodes and decodes Morse code. | +| No Screensaver | [No Screensaver](https://github.com/DhanushNehru/Python-Scripts/tree/main/No%20Screensaver) | Prevents screensaver from turning on. | +| OTP Verification | [OTP Verification](https://github.com/DhanushNehru/Python-Scripts/tree/main/OTP%20%20Verify) | An OTP Verification Checker. | +| Password Generator | [Password Generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Password%20Generator) | Generates a random password. | +| Password Manager | [Password Manager](https://github.com/nem5345/Python-Scripts/tree/main/Password%20Manager) | Generate and interact with a password manager. | +| Password Strength Checker | [Password Strength Checker](https://github.com/nem5345/Python-Scripts/tree/main/Password%20Strength%20Checker) | Evaluates how strong a given password is. | +| PDF Merger | [PDF Merger](https://github.com/DhanushNehru/Python-Scripts/tree/main/PDF%20Merger) | Merges multiple PDF files into a single PDF, with options for output location and custom order. | +| PDF to Audio | [PDF to Audio](https://github.com/DhanushNehru/Python-Scripts/tree/main/PDF%20to%20Audio) | Converts PDF to audio. | +| PDF to Text | [PDF to text](https://github.com/DhanushNehru/Python-Scripts/tree/main/PDF%20to%20text) | Converts PDF to text. | +| PDF merger and splitter | [PDF Merger and Splitter](https://github.com/AbhijitMotekar99/Python-Scripts/blob/main/PDF%20Merger%20and%20Splitter/PDF%20Merger%20and%20Splitter.py) | Create a tool that can merge multiple PDF files into one or split a single PDF into separate pages. | +| Pizza Order | [Pizza Order](https://github.com/DhanushNehru/Python-Scripts/tree/main/Pizza%20Order) | An algorithm designed to handle pizza orders from customers with accurate receipts and calculations. | +| Planet Simulation | [Planet Simulation](https://github.com/DhanushNehru/Python-Scripts/tree/main/Planet%20Simulation) | A simulation of several planets rotating around the sun. | +| Playlist Exchange | [Playlist Exchange](https://github.com/DhanushNehru/Python-Scripts/tree/main/Playlist%20Exchange) | A Python script to exchange songs and playlists between Spotify and Python. | +| Pigeonhole Sort | [Algorithm](https://github.com/DhanushNehru/Python-Scripts/tree/main/PigeonHole) | The pigeonhole sort algorithm to sort your arrays efficiently! | +| PNG TO JPG CONVERTOR | [PNG-To-JPG](https://github.com/DhanushNehru/Python-Scripts/tree/main/PNG%20To%20JPG) | A PNG TO JPG IMAGE CONVERTOR. | +| Pomodoro Timer | [Pomodoro Timer](https://github.com/DhanushNehru/Python-Scripts/tree/main/Pomodoro%20Timer) | A Pomodoro timer | +| Python GUI Notepad | [Python GUI Notepad](https://github.com/DhanushNehru/Python-Scripts/blob/main/PDF%20Merger%20and%20Splitter/PDF%20Merger%20and%20Splitter.py) | A Python-based GUI Notepad with essential features like saving, opening, editing text files, basic formatting, and a simple user interface for quick note-taking. | +| QR Code Generator | [QR Code Generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/QR%20Code%20Generator) | This is generate a QR code from the provided link | +| QR Code Scanner | [QR Code Scanner](https://github.com/DhanushNehru/Python-Scripts/tree/main/QR%20Code%20Scanner) | Helps in Sacanning the QR code in form of PNG or JPG just by running the python script. | +| QR Code with logo | [QR code with Logo](https://github.com/DhanushNehru/Python-Scripts/tree/main/QR%20with%20Logo) | QR Code Customization Feature | +| Random Color Generator | [Random Color Generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Random%20Color%20Generator) | A random color generator that will show you the color and values! | +| Remove Background | [Remove Background](https://github.com/DhanushNehru/Python-Scripts/tree/main/Remove%20Background) | Removes the background of images. | +| Road-Lane-Detection | [Road-Lane-Detection](https://github.com/NotIncorecc/Python-Scripts/tree/main/Road-Lane-Detection) | Detects the lanes of the road | +| Rock Paper Scissor 1 | [Rock Paper Scissor 1](https://github.com/DhanushNehru/Python-Scripts/tree/main/Rock%20Paper%20Scissor%201) | A game of Rock Paper Scissors. | +| Rock Paper Scissor 2 | [Rock Paper Scissor 2](https://github.com/DhanushNehru/Python-Scripts/tree/main/Rock%20Paper%20Scissor%202) | A new version game of Rock Paper Scissors. | +| Run Then Notify | [Run Then Notify](https://github.com/DhanushNehru/Python-Scripts/tree/main/Run%20Then%20Notify) | Runs a slow command and emails you when it completes execution. | +| Selfie with Python | [Selfie with Python](https://github.com/DhanushNehru/Python-Scripts/tree/main/Selfie%20with%20Python) | Take your selfie with python . | +| Simple DDOS | [Simple DDOS](https://github.com/VanshajR/Python-Scripts/tree/main/Simple%20DDOS) | The code allows you to send multiple HTTP requests concurrently for a specified duration. | +| Simple TCP Chat Server | [Simple TCP Chat Server](https://github.com/DhanushNehru/Python-Scripts/tree/main/TCP%20Chat%20Server) | Creates a local server on your LAN for receiving and sending messages! | +| Smart Attendance System | [Smart Attendance System](https://github.com/DhanushNehru/Python-Scripts/tree/main/Smart%20Attendance%20System) | This OpenCV framework is for Smart Attendance by actively decoding a student's QR Code. | +| Snake Game | [Snake Game](https://github.com/DhanushNehru/Python-Scripts/tree/main/Snake%20Game) | Classic snake game using python. | +| Snake Water Gun | [Snake Water Gun](https://github.com/DhanushNehru/Python-Scripts/tree/main/Snake%20Water%20Gun) | A game similar to Rock Paper Scissors. | +| Sorting | [Sorting](https://github.com/DhanushNehru/Python-Scripts/tree/main/Sorting) | Algorithm for bubble sorting. | +| Star Pattern | [Star Pattern](https://github.com/DhanushNehru/Python-Scripts/tree/main/Star%20Pattern) | Creates a star pattern pyramid. | +| Subnetting Calculator | [Subnetting Calculator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Subnetting%20Calculator) | Calculates network information based on a given IP address and subnet mask. | +| Take a break | [Take a break](https://github.com/DhanushNehru/Python-Scripts/tree/main/Take%20A%20Break) | Python code to take a break while working long hours. | | Text Recognition | [Text Recognition](https://github.com/DhanushNehru/Python-Scripts/tree/Text-Recognition/Text%20Recognition) | A Image Text Recognition ML Model to extract text from Images | -| Text to Image | [Text to Image](https://github.com/DhanushNehru/Python-Scripts/tree/master/Text%20to%20Image) | A Python script that will take your text and convert it to a JPEG. | -| Tic Tac Toe 1 | [Tic Tac Toe 1](https://github.com/DhanushNehru/Python-Scripts/tree/master/Tic-Tac-Toe%201) | A game of Tic Tac Toe. | -| Tik Tac Toe 2 | [Tik Tac Toe 2](https://github.com/DhanushNehru/Python-Scripts/tree/master/Tic-Tac-Toe%202) | A game of Tik Tac Toe. | -| Turtle Art & Patterns | [Turtle Art](https://github.com/DhanushNehru/Python-Scripts/tree/master/Turtle%20Art) | Scripts to view turtle art also have prompt-based ones. | -| Turtle Graphics | [Turtle Graphics](https://github.com/DhanushNehru/Python-Scripts/tree/master/Turtle%20Graphics) | Code using turtle graphics. | -| Twitter Selenium Bot | [Twitter Selenium Bot](https://github.com/DhanushNehru/Python-Scripts/tree/master/Twitter%20Selenium%20Bot) | A bot that can interact with Twitter in a variety of ways. | -| Umbrella Reminder | [Umbrella Reminder](https://github.com/DhanushNehru/Python-Scripts/tree/master/Umbrella%20Reminder) | A reminder for umbrellas. | -| University Rankings | [University Rankings](https://github.com/DhanushNehru/Python-Scripts/tree/master/University%20Rankings) | Ranks Universities across the globes using the Country, Continent, and Captial | -| URL Shortener | [URL Shortener](https://github.com/DhanushNehru/Python-Scripts/tree/master/URL%20Shortener) | A URL shortener code compresses long URLs into shorter, more manageable links | -| Video Downloader | [Video Downloader](https://github.com/DhanushNehru/Python-Scripts/tree/master/Video%20Downloader) | Download Videos from youtube to your local system. | -| Video Watermarker | [Video Watermarker](https://github.com/DhanushNehru/Python-Scripts/tree/master/Video%20Watermarker) | Adds watermark to any video of your choice. | -| Virtual Painter | [Virtual Painter](https://github.com/DhanushNehru/Python-Scripts/tree/master/Virtual%20Painter) | Virtual painting application. | -| Wallpaper Changer | [Wallpaper Changer](https://github.com/DhanushNehru/Python-Scripts/tree/master/Wallpaper%20Changer) | Automatically changes home wallpaper, adding a random quote and stock tickers on it. | -| Weather GUI | [Weather GUI](https://github.com/DhanushNehru/Python-Scripts/tree/master/Weather%20GUI) | Displays information on the weather. | -| Website Blocker | [Website Blocker](https://github.com/DhanushNehru/Python-Scripts/tree/master/Website%20Blocker) | Downloads the website and loads it on your homepage in your local IP. | -| Website Cloner | [Website Cloner](https://github.com/DhanushNehru/Python-Scripts/tree/master/Website%20Cloner) | Clones any website and opens the site in your local IP. | -| Web Scraper | [Web Scraper](https://github.com/DhanushNehru/Python-Scripts/tree/master/Web%20Scraper) | A Python script that scrapes blog titles from [Python.org](https://www.python.org/) and saves them to a file. | -| Weight Converter | [Weight Converter](https://github.com/WatashiwaSid/Python-Scripts/tree/master/Weight%20Converter) | Simple GUI script to convert weight in different measurement units. | -| Wikipedia Data Extractor | [Wikipedia Data Extractor](https://github.com/DhanushNehru/Python-Scripts/tree/master/Wikipedia%20Data%20Extractor) | A simple Wikipedia data extractor script to get output in your IDE. | -| Word to PDF | [Word to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/master/Word%20to%20PDF%20converter) | A Python script to convert an MS Word file to a PDF file. | -| Youtube Downloader | [Youtube Downloader](https://github.com/DhanushNehru/Python-Scripts/tree/master/Youtube%20Downloader) | Downloads any video from [YouTube](https://youtube.com) in video or audio format! | -| Youtube Playlist Info Scraper | [Youtube Playlist Info Scraper](https://github.com/DhanushNehru/Python-Scripts/tree/master/Youtube%20Playlist%20Info%20Scraper) | This python module retrieve information about a YouTube playlist in json format using playlist link. | +| Text to Image | [Text to Image](https://github.com/DhanushNehru/Python-Scripts/tree/main/Text%20to%20Image) | A Python script that will take your text and convert it to a JPEG. | +| Tic Tac Toe 1 | [Tic Tac Toe 1](https://github.com/DhanushNehru/Python-Scripts/tree/main/Tic-Tac-Toe%201) | A game of Tic Tac Toe. | +| Tik Tac Toe 2 | [Tik Tac Toe 2](https://github.com/DhanushNehru/Python-Scripts/tree/main/Tic-Tac-Toe%202) | A game of Tik Tac Toe. | +| Turtle Art & Patterns | [Turtle Art](https://github.com/DhanushNehru/Python-Scripts/tree/main/Turtle%20Art) | Scripts to view turtle art also have prompt-based ones. | +| Turtle Graphics | [Turtle Graphics](https://github.com/DhanushNehru/Python-Scripts/tree/main/Turtle%20Graphics) | Code using turtle graphics. | +| Twitter Selenium Bot | [Twitter Selenium Bot](https://github.com/DhanushNehru/Python-Scripts/tree/main/Twitter%20Selenium%20Bot) | A bot that can interact with Twitter in a variety of ways. | +| Umbrella Reminder | [Umbrella Reminder](https://github.com/DhanushNehru/Python-Scripts/tree/main/Umbrella%20Reminder) | A reminder for umbrellas. | +| University Rankings | [University Rankings](https://github.com/DhanushNehru/Python-Scripts/tree/main/University%20Rankings) | Ranks Universities across the globes using the Country, Continent, and Captial | +| URL Shortener | [URL Shortener](https://github.com/DhanushNehru/Python-Scripts/tree/main/URL%20Shortener) | A URL shortener code compresses long URLs into shorter, more manageable links | +| Video Downloader | [Video Downloader](https://github.com/DhanushNehru/Python-Scripts/tree/main/Video%20Downloader) | Download Videos from youtube to your local system. | +| Video Watermarker | [Video Watermarker](https://github.com/DhanushNehru/Python-Scripts/tree/main/Video%20Watermarker) | Adds watermark to any video of your choice. | +| Virtual Painter | [Virtual Painter](https://github.com/DhanushNehru/Python-Scripts/tree/main/Virtual%20Painter) | Virtual painting application. | +| Wallpaper Changer | [Wallpaper Changer](https://github.com/DhanushNehru/Python-Scripts/tree/main/Wallpaper%20Changer) | Automatically changes home wallpaper, adding a random quote and stock tickers on it. | +| Weather GUI | [Weather GUI](https://github.com/DhanushNehru/Python-Scripts/tree/main/Weather%20GUI) | Displays information on the weather. | +| Website Blocker | [Website Blocker](https://github.com/DhanushNehru/Python-Scripts/tree/main/Website%20Blocker) | Downloads the website and loads it on your homepage in your local IP. | +| Website Cloner | [Website Cloner](https://github.com/DhanushNehru/Python-Scripts/tree/main/Website%20Cloner) | Clones any website and opens the site in your local IP. | +| Web Scraper | [Web Scraper](https://github.com/DhanushNehru/Python-Scripts/tree/main/Web%20Scraper) | A Python script that scrapes blog titles from [Python.org](https://www.python.org/) and saves them to a file. | +| Weight Converter | [Weight Converter](https://github.com/WatashiwaSid/Python-Scripts/tree/main/Weight%20Converter) | Simple GUI script to convert weight in different measurement units. | +| Wikipedia Data Extractor | [Wikipedia Data Extractor](https://github.com/DhanushNehru/Python-Scripts/tree/main/Wikipedia%20Data%20Extractor) | A simple Wikipedia data extractor script to get output in your IDE. | +| Word to PDF | [Word to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/main/Word%20to%20PDF%20converter) | A Python script to convert an MS Word file to a PDF file. | +| Youtube Downloader | [Youtube Downloader](https://github.com/DhanushNehru/Python-Scripts/tree/main/Youtube%20Downloader) | Downloads any video from [YouTube](https://youtube.com) in video or audio format! | +| Youtube Playlist Info Scraper | [Youtube Playlist Info Scraper](https://github.com/DhanushNehru/Python-Scripts/tree/main/Youtube%20Playlist%20Info%20Scraper) | This python module retrieve information about a YouTube playlist in json format using playlist link. | ## Gitpod diff --git a/update_master_to_main.py b/update_master_to_main.py new file mode 100644 index 00000000..20f91fad --- /dev/null +++ b/update_master_to_main.py @@ -0,0 +1,25 @@ +import os + +def update_readme(): + if not os.path.exists('README.md'): + print("README.md not found") + return + + with open('README.md', 'r', encoding='utf-8') as f: + content = f.read() + + with open('README.md.backup', 'w', encoding='utf-8') as f: + f.write(content) + + updated = content.replace('/master/', '/main/') + updated = updated.replace('/blob/master/', '/blob/main/') + updated = updated.replace('/tree/master/', '/tree/main/') + + with open('README.md', 'w', encoding='utf-8') as f: + f.write(updated) + + changes = content.count('/master/') - updated.count('/master/') + print(f"Updated {changes} references") + +if __name__ == "__main__": + update_readme() \ No newline at end of file From d1cc07f5065a3456b670fab74b7b27737a0147ef Mon Sep 17 00:00:00 2001 From: Nakul Desai <125589034+bravetiger01@users.noreply.github.com> Date: Sat, 7 Jun 2025 13:14:22 +0530 Subject: [PATCH 25/63] save file to drive --- Save file to Drive/drive/hello.txt | 1 + Save file to Drive/main.py | 66 ++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 Save file to Drive/drive/hello.txt create mode 100644 Save file to Drive/main.py diff --git a/Save file to Drive/drive/hello.txt b/Save file to Drive/drive/hello.txt new file mode 100644 index 00000000..5e1c309d --- /dev/null +++ b/Save file to Drive/drive/hello.txt @@ -0,0 +1 @@ +Hello World \ No newline at end of file diff --git a/Save file to Drive/main.py b/Save file to Drive/main.py new file mode 100644 index 00000000..4c5daeee --- /dev/null +++ b/Save file to Drive/main.py @@ -0,0 +1,66 @@ +from pydrive.auth import GoogleAuth +from pydrive.drive import GoogleDrive +import os + +# Authenticate +gauth = GoogleAuth() +gauth.LocalWebserverAuth() +drive = GoogleDrive(gauth) + +# === Prompt for target folder === +target_folder_name = input("Enter the name of the target folder in Google Drive: ").strip() + +def get_or_create_drive_folder(folder_name, parent_id='root'): + """Get Drive folder ID by name or create it under given parent""" + query = ( + f"title='{folder_name}' and " + f"mimeType='application/vnd.google-apps.folder' and " + f"'{parent_id}' in parents and trashed=false" + ) + file_list = drive.ListFile({'q': query}).GetList() + if file_list: + print(f"Folder '{folder_name}' found in Google Drive.") + return file_list[0]['id'] + else: + print(f"Folder '{folder_name}' not found. Creating it...") + folder_metadata = { + 'title': folder_name, + 'parents': [{'id': parent_id}], + 'mimeType': 'application/vnd.google-apps.folder' + } + folder = drive.CreateFile(folder_metadata) + folder.Upload() + return folder['id'] + +# === Configuration === +local_root = r"drive" # Your local folder name +drive_root_id = get_or_create_drive_folder(target_folder_name) + +# Folder mapping cache +folder_mapping = {local_root: drive_root_id} + +# Recursively walk and upload +for root, dirs, files in os.walk(local_root): + rel_path = os.path.relpath(root, local_root) + + if rel_path == '.': + parent_id = drive_root_id + else: + parent_local = os.path.dirname(root) + parent_id = folder_mapping.get(parent_local, drive_root_id) + + folder_name = os.path.basename(root) + folder_id = get_or_create_drive_folder(folder_name, parent_id) + folder_mapping[root] = folder_id + + for file_name in files: + file_path = os.path.join(root, file_name) + print(f"Uploading '{file_name}' to '{rel_path}'...") + + file_drive = drive.CreateFile({ + 'title': file_name, + 'parents': [{'id': folder_mapping[root]}] + }) + file_drive.SetContentFile(file_path) + file_drive.Upload() + file_drive = None From b679034b394c9ff13eff76401ed9d6858382ef23 Mon Sep 17 00:00:00 2001 From: Nakul Desai <125589034+bravetiger01@users.noreply.github.com> Date: Sat, 7 Jun 2025 13:20:47 +0530 Subject: [PATCH 26/63] same file issue --- Save file to Drive/drive/hello/hello2.txt | 0 Save file to Drive/drive/hello/hello3.txt | 0 Save file to Drive/main.py | 13 ++++++++++++- 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 Save file to Drive/drive/hello/hello2.txt create mode 100644 Save file to Drive/drive/hello/hello3.txt diff --git a/Save file to Drive/drive/hello/hello2.txt b/Save file to Drive/drive/hello/hello2.txt new file mode 100644 index 00000000..e69de29b diff --git a/Save file to Drive/drive/hello/hello3.txt b/Save file to Drive/drive/hello/hello3.txt new file mode 100644 index 00000000..e69de29b diff --git a/Save file to Drive/main.py b/Save file to Drive/main.py index 4c5daeee..881e97c3 100644 --- a/Save file to Drive/main.py +++ b/Save file to Drive/main.py @@ -55,8 +55,19 @@ def get_or_create_drive_folder(folder_name, parent_id='root'): for file_name in files: file_path = os.path.join(root, file_name) - print(f"Uploading '{file_name}' to '{rel_path}'...") + # === Check if file already exists in this Drive folder === + query = ( + f"title='{file_name}' and " + f"'{folder_mapping[root]}' in parents and " + f"trashed=false" + ) + existing_files = drive.ListFile({'q': query}).GetList() + if existing_files: + print(f"⏩ File '{file_name}' already exists in '{rel_path}', skipping.") + continue + + print(f"⬆️ Uploading '{file_name}' to '{rel_path}'...") file_drive = drive.CreateFile({ 'title': file_name, 'parents': [{'id': folder_mapping[root]}] From 8d59b774fef68b29e5aedf13734023c465ac2cda Mon Sep 17 00:00:00 2001 From: Nakul Desai <125589034+bravetiger01@users.noreply.github.com> Date: Sat, 7 Jun 2025 23:35:06 +0530 Subject: [PATCH 27/63] readme and reuirements.txt --- Save file to Drive/readme.md | 77 ++++++++++++++++++++++++++++ Save file to Drive/requirements.txt | Bin 0 -> 932 bytes 2 files changed, 77 insertions(+) create mode 100644 Save file to Drive/readme.md create mode 100644 Save file to Drive/requirements.txt diff --git a/Save file to Drive/readme.md b/Save file to Drive/readme.md new file mode 100644 index 00000000..c7a3b05a --- /dev/null +++ b/Save file to Drive/readme.md @@ -0,0 +1,77 @@ + + +# 📁 Save File and Folder to Drive + +A simple utility to interact with Google Drive. This project uses the Google Drive API and requires authentication via a `client_secret.json` file. + +## 🚀 Features + +* Upload files and folders to Google Drive. +* Doesn't change folder structure +* Easy setup for Google Drive API. + +--- + +## 🛠️ Setup Instructions + +### 1. Clone the Repository + +```bash +git clone https://github.com/yourusername/drive-thing.git +cd drive-thing +``` + +### 2. Install Dependencies + +Make sure you have Python 3 installed. + +```bash +pip install -r requirements.txt +``` + +### 3. Generate `client_secret.json` (Google OAuth Credentials) + +To access Google Drive, you’ll need OAuth 2.0 credentials: + +1. Go to the **Google Cloud Console**: + 👉 [Create OAuth Credentials](https://console.cloud.google.com/apis/credentials) + +2. Steps: + * Don't forget to check project name, create new project. + * Search **Google Drive API**, don't get confused with Google Drive Analytics API + * Click Enable + * Go to **Credentials** on left sidebar, click **Create Credential** on top and select **OAuth client ID** + * You might be asked to **configure consent screen** + * Click on it and click Get Started + * Add necessary details like app name and emails, Name example: test123 + * Click **Create** + * Now select **Create OAuth Client** + * Choose application type as **Desktop app** and leave name as it is + * Download the JSON file and **rename it to `client_secret.json`** + * Place the file in the project directory + * Now you would have to create test user for using this API. + * Select **Audience** from left Sidebar + * Add all necessary emails under test email and save it + +📝 Official Guide: +[Using OAuth 2.0 for Installed Applications](https://developers.google.com/identity/protocols/oauth2) + +--- + +## ▶️ Running the Script + +Once everything is set up: + +```bash +python main.py +``` + +--- + +## 📎 Notes + +* Make sure to enable the **Google Drive API** in your Google Cloud Console. +* The first time you run the script, it will prompt you to authenticate and save a `token.json` for future use. + +--- + diff --git a/Save file to Drive/requirements.txt b/Save file to Drive/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..7524380f1f61488f99f481ae17e27f0f3c978be4 GIT binary patch literal 932 zcmZ`%!AiqW5S+8%r$m}WEgn1+JSuqgBx#!_fwqZFD%OuzXLetc2q}*TA#ZkOc6NV% zR>-hIi5wkjo-JBD^4#IZZh~uE5s~9SM1>8n-V@Atg}UWUa363b`3~d|UxYmw57_bF zmUZ98qUyA-6MJFG1u;2mGBm_S)KqOA)TAM`ndwYdG&oVUWZmBCrJ3`)>p5b~5np6E zTD5nlzGg(GlX{MfsMYZ_*4>g0RjaCGQo}oILvK6g;!Yd(S(B#@*~{VFc)Z)oDuYgi zH9O7BfzpjbQZ@g%+k}b!PehZGmiIWgh^(XI$c^SJtfn>KmSo7jVdG5%%vph3$`!;)TW85}u MP-;w46~?Fk2X}{x2mk;8 literal 0 HcmV?d00001 From 81057fe0300dcd4be1e551fc5fe14f9fc9ed65b7 Mon Sep 17 00:00:00 2001 From: Nakul Desai <125589034+bravetiger01@users.noreply.github.com> Date: Sat, 7 Jun 2025 23:38:01 +0530 Subject: [PATCH 28/63] Update readme.md --- Save file to Drive/readme.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Save file to Drive/readme.md b/Save file to Drive/readme.md index c7a3b05a..a636502f 100644 --- a/Save file to Drive/readme.md +++ b/Save file to Drive/readme.md @@ -71,7 +71,6 @@ python main.py ## 📎 Notes * Make sure to enable the **Google Drive API** in your Google Cloud Console. -* The first time you run the script, it will prompt you to authenticate and save a `token.json` for future use. --- From 4c3332f07fb099b05c7d636b06574973ddd75b58 Mon Sep 17 00:00:00 2001 From: leftkats Date: Fri, 6 Jun 2025 16:04:26 +0300 Subject: [PATCH 29/63] feat: csv to ndjson converter script :sparkles: --- CONTRIBUTING.md | 2 +- CSV_TO_NDJSON/README.md | 38 +++++++++++++++++++++++++++++++++ CSV_TO_NDJSON/csv_to_ndjson.py | 39 ++++++++++++++++++++++++++++++++++ README.md | 1 + 4 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 CSV_TO_NDJSON/README.md create mode 100644 CSV_TO_NDJSON/csv_to_ndjson.py diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 68ebedab..c278f136 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -28,4 +28,4 @@ If this is your first time contributing to an open source project, check out thi ## Code of Conduct -We strive to maintain a welcoming and inclusive community. Please read and respect our [Code of Conduct](https://github.com/DhanushNehru/Python-Scripts/blob/master/CODE_OF_CONDUCT.md) in all your interactions. +We strive to maintain a welcoming and inclusive community. Please read and respect our [Code of Conduct](https://github.com/DhanushNehru/Python-Scripts/blob/main/CODE_OF_CONDUCT.md) in all your interactions. diff --git a/CSV_TO_NDJSON/README.md b/CSV_TO_NDJSON/README.md new file mode 100644 index 00000000..4aaebdbe --- /dev/null +++ b/CSV_TO_NDJSON/README.md @@ -0,0 +1,38 @@ +# README.md + +# CSV to NDJSON Converter + +This Python script converts a CSV file located in this folder into an NDJSON file saved in the same folder. + +## What is NDJSON? + +NDJSON (Newline Delimited JSON) is a convenient format for streaming JSON objects, where each line is a valid JSON object. +It’s widely used in data pipelines and tools such as **Google Cloud BigQuery**, **ElasticSearch**, and many other data processing platforms. + +## How to use + +1. Place your CSV file in this folder. +2. Make sure you have Python 3 installed. +3. Run the script from this folder with: + + ```bash + python csv_to_ndjson.py input.csv output.ndjson + + +#### Example +If you have a CSV file like this: + +```csv +name,age,city +Alice,30,New York +Bob,25,Los Angeles +``` + +The output NDJSON will be: + +```json +{"name":"Alice","age":"30","city":"New York"} +{"name":"Bob","age":"25","city":"Los Angeles"} +``` + +Feel free to modify or extend it as needed. diff --git a/CSV_TO_NDJSON/csv_to_ndjson.py b/CSV_TO_NDJSON/csv_to_ndjson.py new file mode 100644 index 00000000..100da9c8 --- /dev/null +++ b/CSV_TO_NDJSON/csv_to_ndjson.py @@ -0,0 +1,39 @@ +# csv_to_ndjson.py +import csv +import json +import sys +import os + + +def csv_to_ndjson(csv_filename, ndjson_filename): + base_dir = os.path.dirname(os.path.abspath(__file__)) + + csv_path = os.path.join(base_dir, csv_filename) + ndjson_path = os.path.join(base_dir, ndjson_filename) + + try: + with ( + open(csv_path, mode="r", encoding="utf-8") as f_csv, + open(ndjson_path, mode="w", encoding="utf-8") as f_ndjson, + ): + reader = csv.DictReader(f_csv) + for row in reader: + f_ndjson.write( + json.dumps(row, ensure_ascii=False, separators=(",", ":")) + "\n" + ) + + print(f"Successfully converted '{csv_path}' to '{ndjson_path}'") + + except FileNotFoundError: + print(f"Error: CSV file '{csv_path}' not found.") + except Exception as e: + print(f"An error occurred: {e}") + + +if __name__ == "__main__": + if len(sys.argv) != 3: + print("Usage: python csv_to_ndjson.py input.csv output.ndjson") + else: + csv_file = sys.argv[1] + ndjson_file = sys.argv[2] + csv_to_ndjson(csv_file, ndjson_file) diff --git a/README.md b/README.md index 7e0f2397..780ebb08 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,7 @@ More information on contributing and the general code of conduct for discussion | Countdown Timer | [Countdown Timer](https://github.com/DhanushNehru/Python-Scripts/tree/main/Countdown%20Timer) | Displays a message when the Input time elapses. | | Crop Images | [Crop Images](https://github.com/DhanushNehru/Python-Scripts/tree/main/Crop%20Images) | A Python script to crop a given image. | | CSV to Excel | [CSV to Excel](https://github.com/DhanushNehru/Python-Scripts/tree/main/CSV%20to%20Excel) | A Python script to convert a CSV to an Excel file. | +| CSV_TO_NDJSON | [CSV to Excel](https://github.com/DhanushNehru/Python-Scripts/tree/main/CSV_TO_NDJSON) | A Python script to convert a CSV to an NDJSON files file. | | Currency Script | [Currency Script](https://github.com/DhanushNehru/Python-Scripts/tree/main/Currency%20Script) | A Python script to convert the currency of one country to that of another. | | Digital Clock | [Digital Clock](https://github.com/DhanushNehru/Python-Scripts/tree/main/Digital%20Clock) | A Python script to preview a digital clock in the terminal. | | Display Popup Window | [Display Popup Window](https://github.com/DhanushNehru/Python-Scripts/tree/main/Display%20Popup%20Window) | A Python script to preview a GUI interface to the user. | From f5b080c72fafa303d202c3cbd78d2ac8ab31c14c Mon Sep 17 00:00:00 2001 From: Sue Lim Date: Mon, 9 Jun 2025 20:06:30 +0800 Subject: [PATCH 30/63] Refactored currencies.py to handle currency logic only --- Currency Script/.idea/Currency Script.iml | 4 +- Currency Script/.idea/misc.xml | 3 + Currency Script/src/currencies.py | 71 +++++++---------------- 3 files changed, 28 insertions(+), 50 deletions(-) diff --git a/Currency Script/.idea/Currency Script.iml b/Currency Script/.idea/Currency Script.iml index f552a87a..1d27ed66 100644 --- a/Currency Script/.idea/Currency Script.iml +++ b/Currency Script/.idea/Currency Script.iml @@ -1,7 +1,9 @@ - + + + diff --git a/Currency Script/.idea/misc.xml b/Currency Script/.idea/misc.xml index 84dd86c7..e939a18e 100644 --- a/Currency Script/.idea/misc.xml +++ b/Currency Script/.idea/misc.xml @@ -1,4 +1,7 @@ + + \ No newline at end of file diff --git a/Currency Script/src/currencies.py b/Currency Script/src/currencies.py index 409605f7..1c387a4f 100644 --- a/Currency Script/src/currencies.py +++ b/Currency Script/src/currencies.py @@ -1,56 +1,29 @@ -# TODO REVIEW BELOW CODE TO ENSURE THAT WHAT IS IN THIS MODULE FOR FUNCTION RECALLING CURRENCY FROM API -# Importing necessary modules for currency formatting and HTTP requests -from locale import currency -import requests -import json +from api_handler import get_exchange_data -# Get the base currency input from the user and convert it to lowercase -currency = input("Enter the base currency (e.g., USD, EUR): ").lower() +# Returns a list of all supported currency codes. +def get_supported_currencies(rates): + return list(rates.keys()) -# Initialize an empty cache to store exchange rates -cache = {} +# Checks if a currency code is supported. +def is_valid_currency(currency_code, rates): + return currency_code.upper() in rates -# Infinite loop to process exchange requests until the user exits -while True: +# --- DEBUG / MANUAL TEST SECTION --- +# This section runs only when you run this file directly (not when imported elsewhere) +if __name__ == "__main__": + # Fetch live exchange data from the API + exchange_data = get_exchange_data() - # Get the target currency input from the user and convert it to lowercase - currency_exch = input("Enter the currency to exchange to (leave blank to exit): ").lower() + # Print the first 5 currencies for quick inspection + print("Sample of live rates from API:") + print(list(exchange_data["rates"].items())[:5]) - # If the input is blank, break out of the loop (exit condition) - if currency_exch == '': - break + # Sample rates dictionary for local testing + rates_example = {"USD": 1.12, "EUR": 1.0, "GBP": 0.87} - # Get the amount to exchange from the user - amount_to_exch = int(input("Enter the amount to exchange: ")) + # Print supported currencies + print("\nSupported currencies:", get_supported_currencies(rates_example)) - # URL for getting exchange rates from floatrates.com - URL = f'http://www.floatrates.com/daily/{currency}.json' - - # Fetch the exchange rates in JSON format - exch = json.loads(requests.get(URL).text) - - # Update cache for USD and EUR based on the base currency - if currency == 'usd': - # If base currency is USD, cache EUR rate - cache.update(eur=exch['eur']['rate']) - elif currency == 'eur': - # If base currency is EUR, cache USD rate - cache.update(usd=exch['usd']['rate']) - else: - # For other base currencies, cache both USD and EUR rates - cache.update(usd=exch['usd']['rate'], eur=exch['eur']['rate']) - - print("Checking the cache...") - - # Check if the target currency's rate is in the cache - if currency_exch in cache: - # If the rate is in the cache, calculate the exchanged amount - rate = round(amount_to_exch * cache[currency_exch], 2) - print("Oh! It is in the cache!") - print(f"You received {rate} {currency_exch.upper()}.") - else: - # If the rate is not in the cache, fetch it from the exchange rates and store it in cache - print("Sorry, but it is not in the cache!") - cache[currency_exch] = exch[currency_exch]['rate'] - rate = round(amount_to_exch * cache[currency_exch], 2) - print(f"You received {rate} {currency_exch.upper()}.") + # Check a few currency codes + print("Is 'usd' valid?", is_valid_currency("usd", rates_example)) # True + print("Is 'AUD' valid?", is_valid_currency("AUD", rates_example)) # False \ No newline at end of file From 62604ad9019634549db5c184b581728ebecf5176 Mon Sep 17 00:00:00 2001 From: Sue Lim Date: Wed, 11 Jun 2025 16:30:06 +0800 Subject: [PATCH 31/63] Converter.py refactored to contain currency converter logic only --- Currency Script/src/converter.py | 57 +++++++++++++++----------------- 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/Currency Script/src/converter.py b/Currency Script/src/converter.py index fbcc0274..5d1a74e1 100644 --- a/Currency Script/src/converter.py +++ b/Currency Script/src/converter.py @@ -1,39 +1,34 @@ -# TODO REVIEW AND ENSURE THE PURPOSE OF THIS MODULE IS TO CONVERT -# Python program to convert the currency -# of one country to that of another country +from api_handler import get_exchange_data -# Import the modules needed -import requests - -class Currency_convertor: - # empty dict to store the conversion rates - rates = {} - - def __init__(self, url): - data = requests.get(url).json() - # Extracting only the rates from the json data +class CurrencyConverter: + def __init__(self): + data = get_exchange_data() self.rates = data["rates"] - # function to do a simple cross multiplication between - # the amount and the conversion rates - def convert(self, from_currency, to_currency, amount): - initial_amount = amount - if from_currency != 'EUR': - amount = amount / self.rates[from_currency] + def convert(self, from_currency: str, to_currency: str, amount: float) -> float: + from_currency = from_currency.upper() + to_currency = to_currency.upper() + + if from_currency not in self.rates or to_currency not in self.rates: + raise ValueError("Invalid currency code.") - # limiting the precision to 2 decimal places - amount = round(amount * self.rates[to_currency], 2) - print('{} {} = {} {}'.format(initial_amount, from_currency, amount, to_currency)) + # Convert amount to base (EUR), then to target + amount_in_base = amount if from_currency == "EUR" else amount / self.rates[from_currency] + converted_amount = round(amount_in_base * self.rates[to_currency], 2) + return converted_amount -# Driver code +# --- DEBUG / MANUAL TEST SECTION --- if __name__ == "__main__": + print("Running manual test for CurrencyConverter...\n") - YOUR_ACCESS_KEY = 'YOUR_ACCESS_KEY_HERE' # Define your access key - url = f'http://data.fixer.io/api/latest?access_key={YOUR_ACCESS_KEY}' # Use f-string for cleaner concatenation - c = Currency_convertor(url) - - from_country = input("From Country (currency code): ") - to_country = input("To Country (currency code): ") - amount = float(input("Amount: ")) # Use float for decimal support + converter = CurrencyConverter() + from_cur = "USD" + to_cur = "AUD" + amt = 100.0 - c.convert(from_country, to_country, amount) + print(f"Converting {amt} {from_cur} to {to_cur}...") + try: + result = converter.convert(from_cur, to_cur, amt) + print(f"{amt} {from_cur} = {result} {to_cur}") + except ValueError as e: + print("Error during conversion:", e) \ No newline at end of file From a0451f799612562202a266e7d513234623fd4599 Mon Sep 17 00:00:00 2001 From: Sue Lim Date: Wed, 11 Jun 2025 16:31:26 +0800 Subject: [PATCH 32/63] Updated API Link --- Currency Script/src/api_handler.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Currency Script/src/api_handler.py b/Currency Script/src/api_handler.py index 226c88d8..6f3ed23a 100644 --- a/Currency Script/src/api_handler.py +++ b/Currency Script/src/api_handler.py @@ -1,18 +1,21 @@ import requests -import json -def get_exchange_data(api_url: str = "https://theratesapi.com/api/latest/") -> dict: +def get_exchange_data(api_url: str = "https://open.er-api.com/v6/latest") -> dict: """Fetch latest exchange data from the API.""" response = requests.get(api_url) if response.status_code != 200: raise Exception(f"API request failed with status {response.status_code}") data = response.json() - return data # This includes 'base', 'date', and 'rates' + # Ensure response was successful + if data.get("result") != "success": + raise Exception(f"API returned error: {data.get('error-type', 'Unknown error')}") + + return data # Includes 'base_code', 'time_last_update_utc', and 'rates' # NOTE - for logging & debugging if __name__ == "__main__": exchange_data = get_exchange_data() - print("Base currency:", exchange_data["base"]) - print("Date:", exchange_data["date"]) + print("Base currency:", exchange_data["base_code"]) + print("Date:", exchange_data["time_last_update_utc"]) print("Rates:", list(exchange_data["rates"].items())[:5]) From 450f78461b9a7e1d47d51f71edc56d36d42d63e5 Mon Sep 17 00:00:00 2001 From: Dhanush Date: Wed, 11 Jun 2025 16:59:21 +0530 Subject: [PATCH 33/63] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 780ebb08..c82e073b 100644 --- a/README.md +++ b/README.md @@ -174,7 +174,6 @@ You can use Gitpod in the cloud [![Gitpod Ready-to-Code](https://img.shields.io/ -
If you liked this repository, support it by starring ⭐ From c7d1f2d5a6f7790348b590f8d4dcc7516ed03128 Mon Sep 17 00:00:00 2001 From: Sue Lim Date: Thu, 12 Jun 2025 20:30:05 +0800 Subject: [PATCH 34/63] Converter.py Doc Strings Updated --- Currency Script/src/converter.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Currency Script/src/converter.py b/Currency Script/src/converter.py index 5d1a74e1..faa21d69 100644 --- a/Currency Script/src/converter.py +++ b/Currency Script/src/converter.py @@ -1,3 +1,7 @@ +""" +CurrencyConverter: Converts an amount from one currency to another using live exchange rates. +""" + from api_handler import get_exchange_data class CurrencyConverter: @@ -6,6 +10,20 @@ def __init__(self): self.rates = data["rates"] def convert(self, from_currency: str, to_currency: str, amount: float) -> float: + """ + Convert amount between two currencies. + + Args: + from_currency: Source currency code (e.g., 'USD') + to_currency: Target currency code (e.g., 'AUD') + amount: Amount to convert + + Returns: + Converted amount as float + + Raises: + ValueError: If a currency code is invalid + """ from_currency = from_currency.upper() to_currency = to_currency.upper() @@ -17,7 +35,7 @@ def convert(self, from_currency: str, to_currency: str, amount: float) -> float: converted_amount = round(amount_in_base * self.rates[to_currency], 2) return converted_amount -# --- DEBUG / MANUAL TEST SECTION --- +# --- DEBUG / MANUAL TEST --- if __name__ == "__main__": print("Running manual test for CurrencyConverter...\n") From dbca250486883952e11edccb5a95545e45dee1c5 Mon Sep 17 00:00:00 2001 From: Sue Lim Date: Sat, 14 Jun 2025 11:45:58 +0800 Subject: [PATCH 35/63] .\main.py --- Currency Script/{readme.txt => readme.md} | 0 Currency Script/tests/__init__.py | 0 .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 253 bytes ...t_api_handler.cpython-313-pytest-8.3.5.pyc | Bin 0 -> 2555 bytes ...est_converter.cpython-313-pytest-8.3.5.pyc | Bin 0 -> 2748 bytes ...st_currencies.cpython-313-pytest-8.3.5.pyc | Bin 0 -> 2525 bytes Currency Script/tests/test_api_handler.py | 37 ++++++++++++++++++ Currency Script/tests/test_converter.py | 33 ++++++++++++++++ Currency Script/tests/test_currencies.py | 33 ++++++++++++++++ 9 files changed, 103 insertions(+) rename Currency Script/{readme.txt => readme.md} (100%) create mode 100644 Currency Script/tests/__init__.py create mode 100644 Currency Script/tests/__pycache__/__init__.cpython-313.pyc create mode 100644 Currency Script/tests/__pycache__/test_api_handler.cpython-313-pytest-8.3.5.pyc create mode 100644 Currency Script/tests/__pycache__/test_converter.cpython-313-pytest-8.3.5.pyc create mode 100644 Currency Script/tests/__pycache__/test_currencies.cpython-313-pytest-8.3.5.pyc create mode 100644 Currency Script/tests/test_api_handler.py create mode 100644 Currency Script/tests/test_converter.py create mode 100644 Currency Script/tests/test_currencies.py diff --git a/Currency Script/readme.txt b/Currency Script/readme.md similarity index 100% rename from Currency Script/readme.txt rename to Currency Script/readme.md diff --git a/Currency Script/tests/__init__.py b/Currency Script/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/Currency Script/tests/__pycache__/__init__.cpython-313.pyc b/Currency Script/tests/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..52c26ecd042b37638f0c98822c5fcc345f9f3f13 GIT binary patch literal 253 zcmXw!OA5j;5QZBcAVTlp)}+1kwZO#K$a> zZ@$bAlQxcr5!d-O&%^x)$G^l6+8)Ct%A&DY-6HI8*M_J2bum?20wlGBT4l!P)lT{J z0P+MWT4OV%0lhS}G+sI^Gfa!(ql0oKDg6VP5&=;G){}CL&r2(L(uC9zG|Tl@ZZsOl s?V>^itDDhRC=bLoNjT$^Wa66pU{;j->I8G_^RnSH6yVtvLSUEa4J4aQ)Bpeg literal 0 HcmV?d00001 diff --git a/Currency Script/tests/__pycache__/test_api_handler.cpython-313-pytest-8.3.5.pyc b/Currency Script/tests/__pycache__/test_api_handler.cpython-313-pytest-8.3.5.pyc new file mode 100644 index 0000000000000000000000000000000000000000..adca8b354e254993560a2e5a229bda372082cc19 GIT binary patch literal 2555 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 Hq1*oeCXJS{ literal 0 HcmV?d00001 diff --git a/Currency Script/tests/__pycache__/test_currencies.cpython-313-pytest-8.3.5.pyc b/Currency Script/tests/__pycache__/test_currencies.cpython-313-pytest-8.3.5.pyc new file mode 100644 index 0000000000000000000000000000000000000000..adf1456a3126b9b5799b0049468f27033360830e GIT binary patch literal 2525 zcmdT`-ES0C6u+}GyF0rq)Y2BWr6d!A#HsEg#To+$*lnvRP?2E?hK)DV+1u@y+1c^l zJIMCI5I^ga#H5K|4<^1q;sbwz|3cF?tv4nZeL@pcD875{%zgkC^wsll=H7Ge`MBqI z&%Lv?b7vL-eevg+`QJ5!ev^|nC0m27>o8bC7P6Gnh$_)HF|D$Mfu=Q@G-6GPra+T8 zou1aIKAoW%1Le_vWT`{Q(kiL*{cX41@0c2o>5fXyN*=w0ki8orSUc2R(;n?dW38cq zYD!HpQ+MQi#!QHOjd0AuAZSods@MrBCBEYlCVE|luh^d35jLH+KlxQ!ldTtEu!Jhn z=4irFsA?ssCR3+LO9P&=lEBke3b<~iX{M%|8L{gEVZ77{cLxfH7R<8ma)X108FLM4 zw9;uB^TZ1XHReL!;cmlcMW-EKrXheM5X-I$9|+LRn>kT&dJtJ|E6j zxIIS-9g#x zjlMk_eZcc~Gs%6~MQu$V+>%9m2(AmE6$QH671Q#c`nhtwxk z!)ZWwINWO%X$At#m>QM)pgq7uj|717GcMzk?}oM~QY`8zQ>DF9uam0*7?Y|a%`pd_+n~9 z&#mjj%lh!Q7r&eO=ItLY-g!hnk594@1O*N7G0J*iO5o5g>2U^x&u<2F;$U`ag!P<<3(uF zsDx3I#_;To3jU8P5pysTBin(q{n|YcfxQIm8u~@gectm~&uZSh@yxCM^~2-KhsRg) zrB!_b@YznYrceBT0UGTB6#AV9=P@u%*&dTPy*geJ>ec3g#A!#2Q>1zVP{WS_YEHTo z(J|@1I>jd~-YcOx+J!PLU!FbN4jC-z6{06Ag7*`t(#8!>sdnY8}|{iGear=^qGd%Lyd$$L39IjQ`W zRg+UnY$r`*vUS__F*bJzeKvGG?)psRP6bWenGIriXyDo^#?ZjST%_bZ>T)779g#@4 zWmzze3T{)Ohw#$NiO9AddHCmuZ&R75&@X_lWW$XbZQxlc(_})l2*d9Fgnm4( Date: Sat, 14 Jun 2025 11:47:10 +0800 Subject: [PATCH 36/63] Updated Main.py, Readme, Requirements, Docstrings, Tests Files --- Currency Script/main.py | 40 +++++++++++++++++++-- Currency Script/readme.md | 58 +++++++++++++++++++++++++++++- Currency Script/requirements.txt | 2 +- Currency Script/setup.py | 10 +++++- Currency Script/src/api_handler.py | 16 ++++++--- Currency Script/src/converter.py | 7 ++-- Currency Script/src/currencies.py | 21 +++++++++-- 7 files changed, 138 insertions(+), 16 deletions(-) diff --git a/Currency Script/main.py b/Currency Script/main.py index ed705b92..f3643030 100644 --- a/Currency Script/main.py +++ b/Currency Script/main.py @@ -1,2 +1,38 @@ -# TODO IMPORT API / CONVERTER / CURRENCY MODULES -# TODO UPDATE / POPULATE MAIN TO ENSURE THERE IS A INTUITIVE SIMPLE UI \ No newline at end of file +""" +main.py - Simple CLI interface for Currency Converter + +Prompts user for input currencies and amount, and displays the converted value. +""" + +from converter import CurrencyConverter + +def main(): + """ + Run the interactive currency converter CLI loop. + Prompts user for source and target currencies and amount to convert. + Continues until the user types 'no' to exit. + """ + print("Welcome to the Currency Converter\n") + + converter = CurrencyConverter() + + while True: + try: + from_currency = input("Enter source currency code (e.g., AUD): ").strip().upper() + to_currency = input("Enter target currency code (e.g., USD): ").strip().upper() + amount = float(input(f"Enter amount in {from_currency}: ")) + + converted = converter.convert(from_currency, to_currency, amount) + print(f"\n✅ {amount} {from_currency} = {converted} {to_currency}\n") + + except ValueError as e: + print(f"❌ Error: {e}\n") + + # Ask to convert another or exit + again = input("Do you want to convert another amount? (yes/no): ").strip().lower() + if again != "yes": + print("Thank you for using the Currency Converter. Goodbye!") + break + +if __name__ == "__main__": + main() diff --git a/Currency Script/readme.md b/Currency Script/readme.md index 3202240d..8fed1611 100644 --- a/Currency Script/readme.md +++ b/Currency Script/readme.md @@ -1 +1,57 @@ -# TODO - UPDATE README \ No newline at end of file +Currency Converter +================== + +A simple Python CLI application that converts an amount from one currency to another +using live exchange rates fetched from an open API. + +Modules: +-------- + +1. **api_handler.py** + - Handles fetching exchange rate data from the online API. + +2. **currencies.py** + - Provides utility functions to list supported currencies and validate currency codes. + +3. **converter.py** + - Contains the core logic to convert between currencies using the exchange rates. + +4. **main.py** + - CLI interface where users input the currencies and amount to convert. + +5. **test_*.py** + - Unit tests for each module to ensure functionality. + +Requirements: +------------- +- Python 3.7+ +- `requests` library + +Install dependencies: +--------------------- +Run the following command to install dependencies: +- pip install -r requirements.txt + +How to Use: +----------- +Run the main script from the terminal: + +Follow the prompts to enter: +- Source currency code (e.g., USD) +- Target currency code (e.g., AUD) +- Amount to convert + +The app will display the converted amount and allow you to repeat or exit. + +Testing: +-------- +To run tests: +- python -m unittest discover + +Note: +----- +The conversion is based on live exchange rates retrieved from: +https://open.er-api.com/v6/latest + +Make sure you are connected to the internet when running the app. + diff --git a/Currency Script/requirements.txt b/Currency Script/requirements.txt index ef92400b..663bd1f6 100644 --- a/Currency Script/requirements.txt +++ b/Currency Script/requirements.txt @@ -1 +1 @@ -# TODO - UPDATE REQUIREMENTS TO NOTE INSTALLS ARE NOTED \ No newline at end of file +requests \ No newline at end of file diff --git a/Currency Script/setup.py b/Currency Script/setup.py index d1322786..de3a6108 100644 --- a/Currency Script/setup.py +++ b/Currency Script/setup.py @@ -1 +1,9 @@ -# UPDATE SETUP TO NOTE SET UP / PACKAGES \ No newline at end of file +from setuptools import setup + +setup( + name="currency_converter", + version="0.1", + install_requires=[ + "requests" + ], +) \ No newline at end of file diff --git a/Currency Script/src/api_handler.py b/Currency Script/src/api_handler.py index 6f3ed23a..8a8f192f 100644 --- a/Currency Script/src/api_handler.py +++ b/Currency Script/src/api_handler.py @@ -1,15 +1,23 @@ import requests def get_exchange_data(api_url: str = "https://open.er-api.com/v6/latest") -> dict: - """Fetch latest exchange data from the API.""" + """ + Retrieve the latest foreign exchange rates from the specified API. + + Args: + api_url (str): Endpoint to fetch exchange data from. Defaults to the open.er-api URL. + + Returns: + dict: A dictionary containing the base currency, timestamp, and exchange rates. + + Raises: + Exception: If the API request fails or returns a non-200 status. + """ response = requests.get(api_url) if response.status_code != 200: raise Exception(f"API request failed with status {response.status_code}") data = response.json() - # Ensure response was successful - if data.get("result") != "success": - raise Exception(f"API returned error: {data.get('error-type', 'Unknown error')}") return data # Includes 'base_code', 'time_last_update_utc', and 'rates' diff --git a/Currency Script/src/converter.py b/Currency Script/src/converter.py index faa21d69..df03f702 100644 --- a/Currency Script/src/converter.py +++ b/Currency Script/src/converter.py @@ -1,7 +1,3 @@ -""" -CurrencyConverter: Converts an amount from one currency to another using live exchange rates. -""" - from api_handler import get_exchange_data class CurrencyConverter: @@ -35,7 +31,8 @@ def convert(self, from_currency: str, to_currency: str, amount: float) -> float: converted_amount = round(amount_in_base * self.rates[to_currency], 2) return converted_amount -# --- DEBUG / MANUAL TEST --- +# --- DEBUG / MANUAL TEST SECTION --- +# This section runs only when you run this file directly (not when imported elsewhere) if __name__ == "__main__": print("Running manual test for CurrencyConverter...\n") diff --git a/Currency Script/src/currencies.py b/Currency Script/src/currencies.py index 1c387a4f..ba5be173 100644 --- a/Currency Script/src/currencies.py +++ b/Currency Script/src/currencies.py @@ -1,11 +1,28 @@ from api_handler import get_exchange_data -# Returns a list of all supported currency codes. def get_supported_currencies(rates): + """ + Return a list of supported currency codes from the rates dictionary. + + Args: + rates (dict): Dictionary of currency codes and their exchange rates. + + Returns: + list: List of supported currency codes (e.g., ['USD', 'EUR']). + """ return list(rates.keys()) -# Checks if a currency code is supported. def is_valid_currency(currency_code, rates): + """ + Check if the given currency code is valid and supported. + + Args: + currency_code (str): Currency code to validate (e.g., 'USD'). + rates (dict): Dictionary of available exchange rates. + + Returns: + bool: True if the currency code exists in the rates, False otherwise. + """ return currency_code.upper() in rates # --- DEBUG / MANUAL TEST SECTION --- From 62ed597a75daa63b03608be1559cdb693e461ef7 Mon Sep 17 00:00:00 2001 From: Nakul Desai Date: Sat, 14 Jun 2025 10:38:23 +0530 Subject: [PATCH 37/63] updated readme --- Save file to Drive/readme.md | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/Save file to Drive/readme.md b/Save file to Drive/readme.md index c7a3b05a..df730271 100644 --- a/Save file to Drive/readme.md +++ b/Save file to Drive/readme.md @@ -2,7 +2,7 @@ # 📁 Save File and Folder to Drive -A simple utility to interact with Google Drive. This project uses the Google Drive API and requires authentication via a `client_secret.json` file. +A simple utility to interact with Google Drive. This project uses the Google Drive API and requires authentication via `client_secret.json` file. ## 🚀 Features @@ -14,14 +14,7 @@ A simple utility to interact with Google Drive. This project uses the Google Dri ## 🛠️ Setup Instructions -### 1. Clone the Repository - -```bash -git clone https://github.com/yourusername/drive-thing.git -cd drive-thing -``` - -### 2. Install Dependencies +### 1. Install Dependencies Make sure you have Python 3 installed. @@ -29,7 +22,7 @@ Make sure you have Python 3 installed. pip install -r requirements.txt ``` -### 3. Generate `client_secret.json` (Google OAuth Credentials) +### 2. Generate `client_secret.json` (Google OAuth Credentials) To access Google Drive, you’ll need OAuth 2.0 credentials: From bd3d321f7a47138ad03370cef85c2a68bfbb200e Mon Sep 17 00:00:00 2001 From: Nakul Desai <125589034+bravetiger01@users.noreply.github.com> Date: Sat, 14 Jun 2025 22:58:49 +0530 Subject: [PATCH 38/63] Update main README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ff757cb7..b7a9ba0b 100644 --- a/README.md +++ b/README.md @@ -129,6 +129,7 @@ General code of conduct for discussion and feedback in this repo can be found he | Rock Paper Scissor 1 | [Rock Paper Scissor 1](https://github.com/DhanushNehru/Python-Scripts/tree/master/Rock%20Paper%20Scissor%201) | A game of Rock Paper Scissors. | | Rock Paper Scissor 2 | [Rock Paper Scissor 2](https://github.com/DhanushNehru/Python-Scripts/tree/master/Rock%20Paper%20Scissor%202) | A new version game of Rock Paper Scissors. | | Run Then Notify | [Run Then Notify](https://github.com/DhanushNehru/Python-Scripts/tree/master/Run%20Then%20Notify) | Runs a slow command and emails you when it completes execution. | +| Save File To Drive | [Save File To Drive](https://github.com/DhanushNehru/Python-Scripts/tree/master/Save%20file%20to%20Drive) | Saves all files and folder with proper structure from a folder to drive easily through a python script . | | Selfie with Python | [Selfie with Python](https://github.com/DhanushNehru/Python-Scripts/tree/master/Selfie%20with%20Python) | Take your selfie with python . | | Simple DDOS | [Simple DDOS](https://github.com/VanshajR/Python-Scripts/tree/master/Simple%20DDOS) | The code allows you to send multiple HTTP requests concurrently for a specified duration. | | Simple TCP Chat Server | [Simple TCP Chat Server](https://github.com/DhanushNehru/Python-Scripts/tree/master/TCP%20Chat%20Server) | Creates a local server on your LAN for receiving and sending messages! | From e1707ecbea328e784ffef9c9e1704d804e4cbae3 Mon Sep 17 00:00:00 2001 From: Nakul Desai <125589034+bravetiger01@users.noreply.github.com> Date: Sat, 14 Jun 2025 23:08:02 +0530 Subject: [PATCH 39/63] Update main README.md 2 --- README.md | 246 +++++++++++++++++++++++++++--------------------------- 1 file changed, 122 insertions(+), 124 deletions(-) diff --git a/README.md b/README.md index b7a9ba0b..9a97f51e 100644 --- a/README.md +++ b/README.md @@ -33,136 +33,135 @@ _**Note: Please follow the maintainer of the repository for quick approval of th **NOTE:** Remember to close your issues once your PR has been merged! They can be reopened if needed. -More information on contributing can be found here: [CONTRIBUTING.md](https://github.com/DhanushNehru/Python-Scripts/blob/master/CONTRIBUTING.md) - -General code of conduct for discussion and feedback in this repo can be found here: [CODE_OF_CONDUCT.md](https://github.com/DhanushNehru/Python-Scripts/blob/master/CODE_OF_CONDUCT.md) +More information on contributing and the general code of conduct for discussion and feedback in this repo can be found here: [CONTRIBUTIONS.md](https://github.com/DhanushNehru/Python-Scripts/blob/main/CONTRIBUTIONS.md) ## List of Scripts in Repo | Script | Link | Description | | ---------------------------------------- |----------------------------------------------------------------------------------------------------------------------------------------------------------| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Arrange It | [Arrange It](https://github.com/DhanushNehru/Python-Scripts/tree/master/Arrange%20It) | A Python script that can automatically move files into corresponding folders based on their extensions. | -| Auto WiFi Check | [Auto WiFi Check](https://github.com/DhanushNehru/Python-Scripts/tree/master/Auto%20WiFi%20Check) | A Python script to monitor if the WiFi connection is active or not | -| AutoCert | [AutoCert](https://github.com/DhanushNehru/Python-Scripts/tree/master/AutoCert) | A Python script to auto-generate e-certificates in bulk. | -| Autocomplete Notes App | [AutoCert](https://github.com/DhanushNehru/Python-Scripts/tree/master/Autocomplete%20Notes%20App) | A Python script to auto-generate e-certificates in bulk. | -| Automated Emails | [Automated Emails](https://github.com/DhanushNehru/Python-Scripts/tree/master/Automate%20Emails%20Daily) | A Python script to send out personalized emails by reading a CSV file. | -| Black Hat Python | [Black Hat Python](https://github.com/DhanushNehru/Python-Scripts/tree/master/Black%20Hat%20Python) | Source code from the book Black Hat Python | -| Blackjack | [Blackjack](https://github.com/DhanushNehru/Python-Scripts/tree/master/Blackjack) | A game of Blackjack - let's get a 21. | -| Chessboard | [Chessboard](https://github.com/DhanushNehru/Python-Scripts/tree/master/Chess%20Board) | Creates a chessboard using matplotlib. | -| Compound Interest Calculator | [Compound Interest Calculator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Calculate%20Compound%20Interest) | A Python script to calculate compound interest. | -| Convert Temperature | [Convert Temperature](https://github.com/DhanushNehru/Python-Scripts/tree/master/Convert%20Temperature) | A python script to convert temperature between Fahreheit, Celsius and Kelvin | -| Connect Four | [Connect Four](https://github.com/DhanushNehru/Python-Scripts/tree/master/Connect%20Four) | A Python script for the board game Connect Four, which can be played by 1-2 players | -| Countdown Timer | [Countdown Timer](https://github.com/DhanushNehru/Python-Scripts/tree/master/Countdown%20Timer) | Displays a message when the Input time elapses. | -| Crop Images | [Crop Images](https://github.com/DhanushNehru/Python-Scripts/tree/master/Crop%20Images) | A Python script to crop a given image. | -| CSV to Excel | [CSV to Excel](https://github.com/DhanushNehru/Python-Scripts/tree/master/CSV%20to%20Excel) | A Python script to convert a CSV to an Excel file. | -| Currency Script | [Currency Script](https://github.com/DhanushNehru/Python-Scripts/tree/master/Currency%20Script) | A Python script to convert the currency of one country to that of another. | -| Digital Clock | [Digital Clock](https://github.com/DhanushNehru/Python-Scripts/tree/master/Digital%20Clock) | A Python script to preview a digital clock in the terminal. | -| Display Popup Window | [Display Popup Window](https://github.com/DhanushNehru/Python-Scripts/tree/master/Display%20Popup%20Window) | A Python script to preview a GUI interface to the user. | -| Distance Calculator | [Distance Calculator](https://github.com/Mathdallas-code/Python-Scripts/tree/master/Distance%20Calculator) | A Python script to calculate the distance between two points. -| Duplicate Finder | [Duplicate Finder](https://github.com/DhanushNehru/Python-Scripts/tree/master/Duplicate%Fnder) | The script identifies duplicate files by MD5 hash and allows deletion or relocation. | -| Emoji | [Emoji](https://github.com/DhanushNehru/Python-Scripts/tree/master/Emoji) | The script generates a PDF with an emoji using a custom TrueType font. | -| Emoji to PDF | [Emoji to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/master/Emoji%20To%20Pdf) | A Python Script to view Emoji in PDF. | -| Expense Tracker | [Expense Tracker](https://github.com/DhanushNehru/Python-Scripts/tree/master/Expense%20Tracker) | A Python script which can track expenses. | -| Face Reaction | [Face Reaction](https://github.com/DhanushNehru/Python-Scripts/tree/master/Face%20Reaction) | A script which attempts to detect facial expressions. | -| Fake Profiles | [Fake Profiles](https://github.com/DhanushNehru/Python-Scripts/tree/master/Fake%20Profile) | Creates fake profiles. | -| File Encryption Decryption | [File Encryption Decryption](https://github.com/DhanushNehru/Python-Scripts/tree/master/File%20Encryption%20Decryption) | Encrypts and Decrypts files using AES Algorithms for Security purposes. | -| File Search | [File_search](https://github.com/debojit11/Python-Scripts/tree/master/File_Search) | A python script that searches a specified folder for all files, regardless of file type, within its directory and subdirectories. | -| Font Art | [Font Art](https://github.com/DhanushNehru/Python-Scripts/tree/master/Font%20Art) | Displays a font art using Python. | -| File Organizer | [FileOrganizer](https://github.com/DhanushNehru/Python-Scripts/tree/master/FileOrganizer) | Organizes files into different folders according to their file type | -| File Renamer | [FileRenamer](https://github.com/DhanushNehru/Python-Scripts/tree/master/FileRenamer) | Bulk renames files with the same start/end | -| File Text Search | [FileTextSearch](https://github.com/DhanushNehru/Python-Scripts/tree/master/FileTextSearch) | Searches for a keyword/phrase accross different files | -| Freelance Helper Program | [freelance-helper](https://github.com/DhanushNehru/Python-Scripts/tree/master/freelance-help-program) | Takes an Excel file with working hours and calculates the payment. | -| Get Hexcodes From Websites | [Get Hexcodes From Websites](https://github.com/DhanushNehru/Python-Scripts/tree/master/Get%20Hexcodes%20From%20Websites) | Generates a Python list containing Hexcodes from a website. | -| Hand_Volume | [Hand_Volume](https://github.com/DhanushNehru/Python-Scripts/tree/master/Hand%20Volume) | Detects and tracks hand movements to control volume. | -| Hangman Game | [Hangman](https://github.com/DhanushNehru/Python-Scripts/tree/master/Hangman%20Game) | A classic word-guessing game where players guess letters to find the hidden word | -| Hardware Detector | [Hardware Detector](https://github.com/DhanushNehru/Python-Scripts/tree/master/Hardware%20Detector) | A Python script that detects and displays hardware specifications and resource usage, including CPU, RAM, disk space, and GPU information. | -| Harvest Predictor | [Harvest Predictor](https://github.com/DhanushNehru/Python-Scripts/tree/master/Harvest%20Predictor) | Takes some necessary input parameters and predicts harvest according to it. | -| Html-to-images | [html-to-images](https://github.com/DhanushNehru/Python-Scripts/tree/master/HTML%20to%20Images) | Converts HTML documents to image files. | -| Image Capture | [Image Capture](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Capture) | Captures image from your webcam and saves it on your local device. | -| Image Compress | [Image Compress](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Compress) | Takes an image and compresses it. | -| Image Manipulation without libraries | [Image Manipulation without libraries](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Manipulation%20without%20libraries) | Manipulates images without using any external libraries. | -| Image Text | [Image Text](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Text) | Extracts text from the image. | -| Image Text to PDF | [Image Text to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Text%20to%20PDF) | Adds an image and text to a PDF. | -| Image Uploader | [Image Uploader](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Uploader) | Uploads images to Imgur using a keyboard shortcut. | -| Image Watermarker | [Image Watermarker](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20Watermarker) | Adds a watermark to an image. | -| Image to ASCII | [Image to ASCII](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20to%20ASCII) | Converts an image into ASCII art. | -| Image to Gif | [Image to Gif](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20to%20GIF) | Generate gif from images. | -| Images to WebP Converter | [Images to WebP Converter](https://github.com/DhanushNehru/Python-Scripts/tree/master/Images%20to%20WebP%20Converter) | Converts images to WebP vie cmd or GUI | -| Interactive Dictionary | [Interactive Dictionary](https://github.com/DhanushNehru/Python-Scripts/tree/master/Image%20InteractiveDictionary) | finding out meanings of words | -| IP Geolocator | [IP Geolocator](https://github.com/DhanushNehru/Python-Scripts/tree/master/IP%20Geolocator) | Uses an IP address to geolocate a location on Earth. | -| Jokes Generator | [Jokes generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Jokes%20Generator) | Generates jokes. | -| JSON to CSV 1 | [JSON to CSV 1](https://github.com/DhanushNehru/Python-Scripts/tree/master/JSON%20to%20CSV) | Converts JSON to CSV files. | -| JSON to CSV 2 | [JSON to CSV 2](https://github.com/DhanushNehru/Python-Scripts/tree/master/JSON%20to%20CSV%202) | Converts a JSON file to a CSV file. | -| JSON to CSV converter | [JSON to CSV converter](https://github.com/DhanushNehru/Python-Scripts/tree/master/Json%20to%20CSV%20Convertor) | Converts JSON file to CSV files. It can convert nested JSON files as well. A sample JSON is included for testing. | -| JSON to YAML converter | [JSON to YAML converter](https://github.com/DhanushNehru/Python-Scripts/tree/master/JSON%20to%20YAML) | Converts JSON file to YAML files. A sample JSON is included for testing. | -| Keylogger | [Keylogger](https://github.com/DhanushNehru/Python-Scripts/tree/master/Keylogger) | Keylogger that can track your keystrokes, clipboard text, take screenshots at regular intervals, and records audio. | -| Keyword - Retweeting | [Keyword - Retweeting](https://github.com/DhanushNehru/Python-Scripts/tree/master/Keyword%20Retweet%20Twitter%20Bot) | Find the latest tweets containing given keywords and then retweet them. | -| LinkedIn Bot | [LinkedIn Bot](https://github.com/DhanushNehru/Python-Scripts/tree/master/LinkedIn%20Bot) | Automates the process of searching for public profiles on LinkedIn and exporting the data to an Excel sheet. | +| Arrange It | [Arrange It](https://github.com/DhanushNehru/Python-Scripts/tree/main/Arrange%20It) | A Python script that can automatically move files into corresponding folders based on their extensions. | +| Auto WiFi Check | [Auto WiFi Check](https://github.com/DhanushNehru/Python-Scripts/tree/main/Auto%20WiFi%20Check) | A Python script to monitor if the WiFi connection is active or not | +| AutoCert | [AutoCert](https://github.com/DhanushNehru/Python-Scripts/tree/main/AutoCert) | A Python script to auto-generate e-certificates in bulk. | +| Autocomplete Notes App | [AutoCert](https://github.com/DhanushNehru/Python-Scripts/tree/main/Autocomplete%20Notes%20App) | A Python script to auto-generate e-certificates in bulk. | +| Automated Emails | [Automated Emails](https://github.com/DhanushNehru/Python-Scripts/tree/main/Automate%20Emails%20Daily) | A Python script to send out personalized emails by reading a CSV file. | +| Black Hat Python | [Black Hat Python](https://github.com/DhanushNehru/Python-Scripts/tree/main/Black%20Hat%20Python) | Source code from the book Black Hat Python | +| Blackjack | [Blackjack](https://github.com/DhanushNehru/Python-Scripts/tree/main/Blackjack) | A game of Blackjack - let's get a 21. | +| Chessboard | [Chessboard](https://github.com/DhanushNehru/Python-Scripts/tree/main/Chess%20Board) | Creates a chessboard using matplotlib. | +| Compound Interest Calculator | [Compound Interest Calculator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Calculate%20Compound%20Interest) | A Python script to calculate compound interest. | +| Convert Temperature | [Convert Temperature](https://github.com/DhanushNehru/Python-Scripts/tree/main/Convert%20Temperature) | A python script to convert temperature between Fahreheit, Celsius and Kelvin | +| Connect Four | [Connect Four](https://github.com/DhanushNehru/Python-Scripts/tree/main/Connect%20Four) | A Python script for the board game Connect Four, which can be played by 1-2 players | +| Countdown Timer | [Countdown Timer](https://github.com/DhanushNehru/Python-Scripts/tree/main/Countdown%20Timer) | Displays a message when the Input time elapses. | +| Crop Images | [Crop Images](https://github.com/DhanushNehru/Python-Scripts/tree/main/Crop%20Images) | A Python script to crop a given image. | +| CSV to Excel | [CSV to Excel](https://github.com/DhanushNehru/Python-Scripts/tree/main/CSV%20to%20Excel) | A Python script to convert a CSV to an Excel file. | +| CSV_TO_NDJSON | [CSV to Excel](https://github.com/DhanushNehru/Python-Scripts/tree/main/CSV_TO_NDJSON) | A Python script to convert a CSV to an NDJSON files file. | +| Currency Script | [Currency Script](https://github.com/DhanushNehru/Python-Scripts/tree/main/Currency%20Script) | A Python script to convert the currency of one country to that of another. | +| Digital Clock | [Digital Clock](https://github.com/DhanushNehru/Python-Scripts/tree/main/Digital%20Clock) | A Python script to preview a digital clock in the terminal. | +| Display Popup Window | [Display Popup Window](https://github.com/DhanushNehru/Python-Scripts/tree/main/Display%20Popup%20Window) | A Python script to preview a GUI interface to the user. | +| Distance Calculator | [Distance Calculator](https://github.com/Mathdallas-code/Python-Scripts/tree/main/Distance%20Calculator) | A Python script to calculate the distance between two points. +| Duplicate Finder | [Duplicate Finder](https://github.com/DhanushNehru/Python-Scripts/tree/main/Duplicate%Fnder) | The script identifies duplicate files by MD5 hash and allows deletion or relocation. | +| Emoji | [Emoji](https://github.com/DhanushNehru/Python-Scripts/tree/main/Emoji) | The script generates a PDF with an emoji using a custom TrueType font. | +| Emoji to PDF | [Emoji to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/main/Emoji%20To%20Pdf) | A Python Script to view Emoji in PDF. | +| Expense Tracker | [Expense Tracker](https://github.com/DhanushNehru/Python-Scripts/tree/main/Expense%20Tracker) | A Python script which can track expenses. | +| Face Reaction | [Face Reaction](https://github.com/DhanushNehru/Python-Scripts/tree/main/Face%20Reaction) | A script which attempts to detect facial expressions. | +| Fake Profiles | [Fake Profiles](https://github.com/DhanushNehru/Python-Scripts/tree/main/Fake%20Profile) | Creates fake profiles. | +| File Encryption Decryption | [File Encryption Decryption](https://github.com/DhanushNehru/Python-Scripts/tree/main/File%20Encryption%20Decryption) | Encrypts and Decrypts files using AES Algorithms for Security purposes. | +| File Search | [File_search](https://github.com/debojit11/Python-Scripts/tree/main/File_Search) | A python script that searches a specified folder for all files, regardless of file type, within its directory and subdirectories. | +| Font Art | [Font Art](https://github.com/DhanushNehru/Python-Scripts/tree/main/Font%20Art) | Displays a font art using Python. | +| File Organizer | [FileOrganizer](https://github.com/DhanushNehru/Python-Scripts/tree/main/FileOrganizer) | Organizes files into different folders according to their file type | +| File Renamer | [FileRenamer](https://github.com/DhanushNehru/Python-Scripts/tree/main/FileRenamer) | Bulk renames files with the same start/end | +| File Text Search | [FileTextSearch](https://github.com/DhanushNehru/Python-Scripts/tree/main/FileTextSearch) | Searches for a keyword/phrase accross different files | +| Freelance Helper Program | [freelance-helper](https://github.com/DhanushNehru/Python-Scripts/tree/main/freelance-help-program) | Takes an Excel file with working hours and calculates the payment. | +| Get Hexcodes From Websites | [Get Hexcodes From Websites](https://github.com/DhanushNehru/Python-Scripts/tree/main/Get%20Hexcodes%20From%20Websites) | Generates a Python list containing Hexcodes from a website. | +| Hand_Volume | [Hand_Volume](https://github.com/DhanushNehru/Python-Scripts/tree/main/Hand%20Volume) | Detects and tracks hand movements to control volume. | +| Hangman Game | [Hangman](https://github.com/DhanushNehru/Python-Scripts/tree/main/Hangman%20Game) | A classic word-guessing game where players guess letters to find the hidden word | +| Hardware Detector | [Hardware Detector](https://github.com/DhanushNehru/Python-Scripts/tree/main/Hardware%20Detector) | A Python script that detects and displays hardware specifications and resource usage, including CPU, RAM, disk space, and GPU information. | +| Harvest Predictor | [Harvest Predictor](https://github.com/DhanushNehru/Python-Scripts/tree/main/Harvest%20Predictor) | Takes some necessary input parameters and predicts harvest according to it. | +| Html-to-images | [html-to-images](https://github.com/DhanushNehru/Python-Scripts/tree/main/HTML%20to%20Images) | Converts HTML documents to image files. | +| Image Capture | [Image Capture](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20Capture) | Captures image from your webcam and saves it on your local device. | +| Image Compress | [Image Compress](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20Compress) | Takes an image and compresses it. | +| Image Manipulation without libraries | [Image Manipulation without libraries](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20Manipulation%20without%20libraries) | Manipulates images without using any external libraries. | +| Image Text | [Image Text](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20Text) | Extracts text from the image. | +| Image Text to PDF | [Image Text to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20Text%20to%20PDF) | Adds an image and text to a PDF. | +| Image Uploader | [Image Uploader](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20Uploader) | Uploads images to Imgur using a keyboard shortcut. | +| Image Watermarker | [Image Watermarker](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20Watermarker) | Adds a watermark to an image. | +| Image to ASCII | [Image to ASCII](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20to%20ASCII) | Converts an image into ASCII art. | +| Image to Gif | [Image to Gif](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20to%20GIF) | Generate gif from images. | +| Images to WebP Converter | [Images to WebP Converter](https://github.com/DhanushNehru/Python-Scripts/tree/main/Images%20to%20WebP%20Converter) | Converts images to WebP vie cmd or GUI | +| Interactive Dictionary | [Interactive Dictionary](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20InteractiveDictionary) | finding out meanings of words | +| IP Geolocator | [IP Geolocator](https://github.com/DhanushNehru/Python-Scripts/tree/main/IP%20Geolocator) | Uses an IP address to geolocate a location on Earth. | +| Jokes Generator | [Jokes generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Jokes%20Generator) | Generates jokes. | +| JSON to CSV 1 | [JSON to CSV 1](https://github.com/DhanushNehru/Python-Scripts/tree/main/JSON%20to%20CSV) | Converts JSON to CSV files. | +| JSON to CSV 2 | [JSON to CSV 2](https://github.com/DhanushNehru/Python-Scripts/tree/main/JSON%20to%20CSV%202) | Converts a JSON file to a CSV file. | +| JSON to CSV converter | [JSON to CSV converter](https://github.com/DhanushNehru/Python-Scripts/tree/main/Json%20to%20CSV%20Convertor) | Converts JSON file to CSV files. It can convert nested JSON files as well. A sample JSON is included for testing. | +| JSON to YAML converter | [JSON to YAML converter](https://github.com/DhanushNehru/Python-Scripts/tree/main/JSON%20to%20YAML) | Converts JSON file to YAML files. A sample JSON is included for testing. | +| Keylogger | [Keylogger](https://github.com/DhanushNehru/Python-Scripts/tree/main/Keylogger) | Keylogger that can track your keystrokes, clipboard text, take screenshots at regular intervals, and records audio. | +| Keyword - Retweeting | [Keyword - Retweeting](https://github.com/DhanushNehru/Python-Scripts/tree/main/Keyword%20Retweet%20Twitter%20Bot) | Find the latest tweets containing given keywords and then retweet them. | +| LinkedIn Bot | [LinkedIn Bot](https://github.com/DhanushNehru/Python-Scripts/tree/main/LinkedIn%20Bot) | Automates the process of searching for public profiles on LinkedIn and exporting the data to an Excel sheet. | | Longitude & Latitude to conical coverter | [Longitude Latitude conical converter](master/Longitude%20Latitude%20conical%20converter) | Converts Longitude and Latitude to Lambert conformal conic projection. | -| Mail Sender | [Mail Sender](https://github.com/DhanushNehru/Python-Scripts/tree/master/Mail%20Sender) | Sends an email. | -| Merge Two Images | [Merge Two Images](https://github.com/DhanushNehru/Python-Scripts/tree/master/Merge%20Two%20Images) | Merges two images horizontally or vertically. | -| Mood based youtube song generator | [Mood based youtube song generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Mood%20based%20youtube%20song%20generator) | This Python script fetches a random song from YouTube based on your mood input and opens it in your default web browser. | -| Mouse mover | [Mouse mover](https://github.com/DhanushNehru/Python-Scripts/tree/master/Mouse%20Mover) | Moves your mouse every 15 seconds. | -| Morse Code | [Mose Code](https://github.com/DhanushNehru/Python-Scripts/tree/master/Morse%20Code) | Encodes and decodes Morse code. | -| No Screensaver | [No Screensaver](https://github.com/DhanushNehru/Python-Scripts/tree/master/No%20Screensaver) | Prevents screensaver from turning on. | -| OTP Verification | [OTP Verification](https://github.com/DhanushNehru/Python-Scripts/tree/master/OTP%20%20Verify) | An OTP Verification Checker. | -| Password Generator | [Password Generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Password%20Generator) | Generates a random password. | -| Password Manager | [Password Manager](https://github.com/nem5345/Python-Scripts/tree/master/Password%20Manager) | Generate and interact with a password manager. | -| Password Strength Checker | [Password Strength Checker](https://github.com/nem5345/Python-Scripts/tree/master/Password%20Strength%20Checker) | Evaluates how strong a given password is. | -| PDF Merger | [PDF Merger](https://github.com/DhanushNehru/Python-Scripts/tree/master/PDF%20Merger) | Merges multiple PDF files into a single PDF, with options for output location and custom order. | -| PDF to Audio | [PDF to Audio](https://github.com/DhanushNehru/Python-Scripts/tree/master/PDF%20to%20Audio) | Converts PDF to audio. | -| PDF to Text | [PDF to text](https://github.com/DhanushNehru/Python-Scripts/tree/master/PDF%20to%20text) | Converts PDF to text. | -| PDF merger and splitter | [PDF Merger and Splitter](https://github.com/AbhijitMotekar99/Python-Scripts/blob/master/PDF%20Merger%20and%20Splitter/PDF%20Merger%20and%20Splitter.py) | Create a tool that can merge multiple PDF files into one or split a single PDF into separate pages. | -| Pizza Order | [Pizza Order](https://github.com/DhanushNehru/Python-Scripts/tree/master/Pizza%20Order) | An algorithm designed to handle pizza orders from customers with accurate receipts and calculations. | -| Planet Simulation | [Planet Simulation](https://github.com/DhanushNehru/Python-Scripts/tree/master/Planet%20Simulation) | A simulation of several planets rotating around the sun. | -| Playlist Exchange | [Playlist Exchange](https://github.com/DhanushNehru/Python-Scripts/tree/master/Playlist%20Exchange) | A Python script to exchange songs and playlists between Spotify and Python. | -| Pigeonhole Sort | [Algorithm](https://github.com/DhanushNehru/Python-Scripts/tree/master/PigeonHole) | The pigeonhole sort algorithm to sort your arrays efficiently! | -| PNG TO JPG CONVERTOR | [PNG-To-JPG](https://github.com/DhanushNehru/Python-Scripts/tree/master/PNG%20To%20JPG) | A PNG TO JPG IMAGE CONVERTOR. | -| Pomodoro Timer | [Pomodoro Timer](https://github.com/DhanushNehru/Python-Scripts/tree/master/Pomodoro%20Timer) | A Pomodoro timer | -| Python GUI Notepad | [Python GUI Notepad](https://github.com/DhanushNehru/Python-Scripts/blob/master/PDF%20Merger%20and%20Splitter/PDF%20Merger%20and%20Splitter.py) | A Python-based GUI Notepad with essential features like saving, opening, editing text files, basic formatting, and a simple user interface for quick note-taking. | -| QR Code Generator | [QR Code Generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/QR%20Code%20Generator) | This is generate a QR code from the provided link | -| QR Code Scanner | [QR Code Scanner](https://github.com/DhanushNehru/Python-Scripts/tree/master/QR%20Code%20Scanner) | Helps in Sacanning the QR code in form of PNG or JPG just by running the python script. | -| QR Code with logo | [QR code with Logo](https://github.com/DhanushNehru/Python-Scripts/tree/master/QR%20with%20Logo) | QR Code Customization Feature | -| Random Color Generator | [Random Color Generator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Random%20Color%20Generator) | A random color generator that will show you the color and values! | -| Remove Background | [Remove Background](https://github.com/DhanushNehru/Python-Scripts/tree/master/Remove%20Background) | Removes the background of images. | -| Road-Lane-Detection | [Road-Lane-Detection](https://github.com/NotIncorecc/Python-Scripts/tree/master/Road-Lane-Detection) | Detects the lanes of the road | -| Rock Paper Scissor 1 | [Rock Paper Scissor 1](https://github.com/DhanushNehru/Python-Scripts/tree/master/Rock%20Paper%20Scissor%201) | A game of Rock Paper Scissors. | -| Rock Paper Scissor 2 | [Rock Paper Scissor 2](https://github.com/DhanushNehru/Python-Scripts/tree/master/Rock%20Paper%20Scissor%202) | A new version game of Rock Paper Scissors. | -| Run Then Notify | [Run Then Notify](https://github.com/DhanushNehru/Python-Scripts/tree/master/Run%20Then%20Notify) | Runs a slow command and emails you when it completes execution. | -| Save File To Drive | [Save File To Drive](https://github.com/DhanushNehru/Python-Scripts/tree/master/Save%20file%20to%20Drive) | Saves all files and folder with proper structure from a folder to drive easily through a python script . | -| Selfie with Python | [Selfie with Python](https://github.com/DhanushNehru/Python-Scripts/tree/master/Selfie%20with%20Python) | Take your selfie with python . | -| Simple DDOS | [Simple DDOS](https://github.com/VanshajR/Python-Scripts/tree/master/Simple%20DDOS) | The code allows you to send multiple HTTP requests concurrently for a specified duration. | -| Simple TCP Chat Server | [Simple TCP Chat Server](https://github.com/DhanushNehru/Python-Scripts/tree/master/TCP%20Chat%20Server) | Creates a local server on your LAN for receiving and sending messages! | -| Smart Attendance System | [Smart Attendance System](https://github.com/DhanushNehru/Python-Scripts/tree/master/Smart%20Attendance%20System) | This OpenCV framework is for Smart Attendance by actively decoding a student's QR Code. | -| Snake Game | [Snake Game](https://github.com/DhanushNehru/Python-Scripts/tree/master/Snake%20Game) | Classic snake game using python. | -| Snake Water Gun | [Snake Water Gun](https://github.com/DhanushNehru/Python-Scripts/tree/master/Snake%20Water%20Gun) | A game similar to Rock Paper Scissors. | -| Sorting | [Sorting](https://github.com/DhanushNehru/Python-Scripts/tree/master/Sorting) | Algorithm for bubble sorting. | -| Star Pattern | [Star Pattern](https://github.com/DhanushNehru/Python-Scripts/tree/master/Star%20Pattern) | Creates a star pattern pyramid. | -| Subnetting Calculator | [Subnetting Calculator](https://github.com/DhanushNehru/Python-Scripts/tree/master/Subnetting%20Calculator) | Calculates network information based on a given IP address and subnet mask. | -| Take a break | [Take a break](https://github.com/DhanushNehru/Python-Scripts/tree/master/Take%20A%20Break) | Python code to take a break while working long hours. | +| Mail Sender | [Mail Sender](https://github.com/DhanushNehru/Python-Scripts/tree/main/Mail%20Sender) | Sends an email. | +| Merge Two Images | [Merge Two Images](https://github.com/DhanushNehru/Python-Scripts/tree/main/Merge%20Two%20Images) | Merges two images horizontally or vertically. | +| Mood based youtube song generator | [Mood based youtube song generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Mood%20based%20youtube%20song%20generator) | This Python script fetches a random song from YouTube based on your mood input and opens it in your default web browser. | +| Mouse mover | [Mouse mover](https://github.com/DhanushNehru/Python-Scripts/tree/main/Mouse%20Mover) | Moves your mouse every 15 seconds. | +| Morse Code | [Mose Code](https://github.com/DhanushNehru/Python-Scripts/tree/main/Morse%20Code) | Encodes and decodes Morse code. | +| No Screensaver | [No Screensaver](https://github.com/DhanushNehru/Python-Scripts/tree/main/No%20Screensaver) | Prevents screensaver from turning on. | +| OTP Verification | [OTP Verification](https://github.com/DhanushNehru/Python-Scripts/tree/main/OTP%20%20Verify) | An OTP Verification Checker. | +| Password Generator | [Password Generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Password%20Generator) | Generates a random password. | +| Password Manager | [Password Manager](https://github.com/nem5345/Python-Scripts/tree/main/Password%20Manager) | Generate and interact with a password manager. | +| Password Strength Checker | [Password Strength Checker](https://github.com/nem5345/Python-Scripts/tree/main/Password%20Strength%20Checker) | Evaluates how strong a given password is. | +| PDF Merger | [PDF Merger](https://github.com/DhanushNehru/Python-Scripts/tree/main/PDF%20Merger) | Merges multiple PDF files into a single PDF, with options for output location and custom order. | +| PDF to Audio | [PDF to Audio](https://github.com/DhanushNehru/Python-Scripts/tree/main/PDF%20to%20Audio) | Converts PDF to audio. | +| PDF to Text | [PDF to text](https://github.com/DhanushNehru/Python-Scripts/tree/main/PDF%20to%20text) | Converts PDF to text. | +| PDF merger and splitter | [PDF Merger and Splitter](https://github.com/AbhijitMotekar99/Python-Scripts/blob/main/PDF%20Merger%20and%20Splitter/PDF%20Merger%20and%20Splitter.py) | Create a tool that can merge multiple PDF files into one or split a single PDF into separate pages. | +| Pizza Order | [Pizza Order](https://github.com/DhanushNehru/Python-Scripts/tree/main/Pizza%20Order) | An algorithm designed to handle pizza orders from customers with accurate receipts and calculations. | +| Planet Simulation | [Planet Simulation](https://github.com/DhanushNehru/Python-Scripts/tree/main/Planet%20Simulation) | A simulation of several planets rotating around the sun. | +| Playlist Exchange | [Playlist Exchange](https://github.com/DhanushNehru/Python-Scripts/tree/main/Playlist%20Exchange) | A Python script to exchange songs and playlists between Spotify and Python. | +| Pigeonhole Sort | [Algorithm](https://github.com/DhanushNehru/Python-Scripts/tree/main/PigeonHole) | The pigeonhole sort algorithm to sort your arrays efficiently! | +| PNG TO JPG CONVERTOR | [PNG-To-JPG](https://github.com/DhanushNehru/Python-Scripts/tree/main/PNG%20To%20JPG) | A PNG TO JPG IMAGE CONVERTOR. | +| Pomodoro Timer | [Pomodoro Timer](https://github.com/DhanushNehru/Python-Scripts/tree/main/Pomodoro%20Timer) | A Pomodoro timer | +| Python GUI Notepad | [Python GUI Notepad](https://github.com/DhanushNehru/Python-Scripts/blob/main/PDF%20Merger%20and%20Splitter/PDF%20Merger%20and%20Splitter.py) | A Python-based GUI Notepad with essential features like saving, opening, editing text files, basic formatting, and a simple user interface for quick note-taking. | +| QR Code Generator | [QR Code Generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/QR%20Code%20Generator) | This is generate a QR code from the provided link | +| QR Code Scanner | [QR Code Scanner](https://github.com/DhanushNehru/Python-Scripts/tree/main/QR%20Code%20Scanner) | Helps in Sacanning the QR code in form of PNG or JPG just by running the python script. | +| QR Code with logo | [QR code with Logo](https://github.com/DhanushNehru/Python-Scripts/tree/main/QR%20with%20Logo) | QR Code Customization Feature | +| Random Color Generator | [Random Color Generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Random%20Color%20Generator) | A random color generator that will show you the color and values! | +| Remove Background | [Remove Background](https://github.com/DhanushNehru/Python-Scripts/tree/main/Remove%20Background) | Removes the background of images. | +| Road-Lane-Detection | [Road-Lane-Detection](https://github.com/NotIncorecc/Python-Scripts/tree/main/Road-Lane-Detection) | Detects the lanes of the road | +| Rock Paper Scissor 1 | [Rock Paper Scissor 1](https://github.com/DhanushNehru/Python-Scripts/tree/main/Rock%20Paper%20Scissor%201) | A game of Rock Paper Scissors. | +| Rock Paper Scissor 2 | [Rock Paper Scissor 2](https://github.com/DhanushNehru/Python-Scripts/tree/main/Rock%20Paper%20Scissor%202) | A new version game of Rock Paper Scissors. | +| Run Then Notify | [Run Then Notify](https://github.com/DhanushNehru/Python-Scripts/tree/main/Run%20Then%20Notify) | Runs a slow command and emails you when it completes execution. | +| Save File To Drive | [Save File To Drive](https://github.com/DhanushNehru/Python-Scripts/tree/master/Save%20file%20to%20Drive) | Saves all files and folder with proper structure from a folder to drive easily through a python script . +| Selfie with Python | [Selfie with Python](https://github.com/DhanushNehru/Python-Scripts/tree/main/Selfie%20with%20Python) | Take your selfie with python . | +| Simple DDOS | [Simple DDOS](https://github.com/VanshajR/Python-Scripts/tree/main/Simple%20DDOS) | The code allows you to send multiple HTTP requests concurrently for a specified duration. | +| Simple TCP Chat Server | [Simple TCP Chat Server](https://github.com/DhanushNehru/Python-Scripts/tree/main/TCP%20Chat%20Server) | Creates a local server on your LAN for receiving and sending messages! | +| Smart Attendance System | [Smart Attendance System](https://github.com/DhanushNehru/Python-Scripts/tree/main/Smart%20Attendance%20System) | This OpenCV framework is for Smart Attendance by actively decoding a student's QR Code. | +| Snake Game | [Snake Game](https://github.com/DhanushNehru/Python-Scripts/tree/main/Snake%20Game) | Classic snake game using python. | +| Snake Water Gun | [Snake Water Gun](https://github.com/DhanushNehru/Python-Scripts/tree/main/Snake%20Water%20Gun) | A game similar to Rock Paper Scissors. | +| Sorting | [Sorting](https://github.com/DhanushNehru/Python-Scripts/tree/main/Sorting) | Algorithm for bubble sorting. | +| Star Pattern | [Star Pattern](https://github.com/DhanushNehru/Python-Scripts/tree/main/Star%20Pattern) | Creates a star pattern pyramid. | +| Subnetting Calculator | [Subnetting Calculator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Subnetting%20Calculator) | Calculates network information based on a given IP address and subnet mask. | +| Take a break | [Take a break](https://github.com/DhanushNehru/Python-Scripts/tree/main/Take%20A%20Break) | Python code to take a break while working long hours. | | Text Recognition | [Text Recognition](https://github.com/DhanushNehru/Python-Scripts/tree/Text-Recognition/Text%20Recognition) | A Image Text Recognition ML Model to extract text from Images | -| Text to Image | [Text to Image](https://github.com/DhanushNehru/Python-Scripts/tree/master/Text%20to%20Image) | A Python script that will take your text and convert it to a JPEG. | -| Tic Tac Toe 1 | [Tic Tac Toe 1](https://github.com/DhanushNehru/Python-Scripts/tree/master/Tic-Tac-Toe%201) | A game of Tic Tac Toe. | -| Tik Tac Toe 2 | [Tik Tac Toe 2](https://github.com/DhanushNehru/Python-Scripts/tree/master/Tic-Tac-Toe%202) | A game of Tik Tac Toe. | -| Turtle Art & Patterns | [Turtle Art](https://github.com/DhanushNehru/Python-Scripts/tree/master/Turtle%20Art) | Scripts to view turtle art also have prompt-based ones. | -| Turtle Graphics | [Turtle Graphics](https://github.com/DhanushNehru/Python-Scripts/tree/master/Turtle%20Graphics) | Code using turtle graphics. | -| Twitter Selenium Bot | [Twitter Selenium Bot](https://github.com/DhanushNehru/Python-Scripts/tree/master/Twitter%20Selenium%20Bot) | A bot that can interact with Twitter in a variety of ways. | -| Umbrella Reminder | [Umbrella Reminder](https://github.com/DhanushNehru/Python-Scripts/tree/master/Umbrella%20Reminder) | A reminder for umbrellas. | -| University Rankings | [University Rankings](https://github.com/DhanushNehru/Python-Scripts/tree/master/University%20Rankings) | Ranks Universities across the globes using the Country, Continent, and Captial | -| URL Shortener | [URL Shortener](https://github.com/DhanushNehru/Python-Scripts/tree/master/URL%20Shortener) | A URL shortener code compresses long URLs into shorter, more manageable links | -| Video Downloader | [Video Downloader](https://github.com/DhanushNehru/Python-Scripts/tree/master/Video%20Downloader) | Download Videos from youtube to your local system. | -| Video Watermarker | [Video Watermarker](https://github.com/DhanushNehru/Python-Scripts/tree/master/Video%20Watermarker) | Adds watermark to any video of your choice. | -| Virtual Painter | [Virtual Painter](https://github.com/DhanushNehru/Python-Scripts/tree/master/Virtual%20Painter) | Virtual painting application. | -| Wallpaper Changer | [Wallpaper Changer](https://github.com/DhanushNehru/Python-Scripts/tree/master/Wallpaper%20Changer) | Automatically changes home wallpaper, adding a random quote and stock tickers on it. | -| Weather GUI | [Weather GUI](https://github.com/DhanushNehru/Python-Scripts/tree/master/Weather%20GUI) | Displays information on the weather. | -| Website Blocker | [Website Blocker](https://github.com/DhanushNehru/Python-Scripts/tree/master/Website%20Blocker) | Downloads the website and loads it on your homepage in your local IP. | -| Website Cloner | [Website Cloner](https://github.com/DhanushNehru/Python-Scripts/tree/master/Website%20Cloner) | Clones any website and opens the site in your local IP. | -| Web Scraper | [Web Scraper](https://github.com/DhanushNehru/Python-Scripts/tree/master/Web%20Scraper) | A Python script that scrapes blog titles from [Python.org](https://www.python.org/) and saves them to a file. | -| Weight Converter | [Weight Converter](https://github.com/WatashiwaSid/Python-Scripts/tree/master/Weight%20Converter) | Simple GUI script to convert weight in different measurement units. | -| Wikipedia Data Extractor | [Wikipedia Data Extractor](https://github.com/DhanushNehru/Python-Scripts/tree/master/Wikipedia%20Data%20Extractor) | A simple Wikipedia data extractor script to get output in your IDE. | -| Word to PDF | [Word to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/master/Word%20to%20PDF%20converter) | A Python script to convert an MS Word file to a PDF file. | -| Youtube Downloader | [Youtube Downloader](https://github.com/DhanushNehru/Python-Scripts/tree/master/Youtube%20Downloader) | Downloads any video from [YouTube](https://youtube.com) in video or audio format! | -| Youtube Playlist Info Scraper | [Youtube Playlist Info Scraper](https://github.com/DhanushNehru/Python-Scripts/tree/master/Youtube%20Playlist%20Info%20Scraper) | This python module retrieve information about a YouTube playlist in json format using playlist link. | +| Text to Image | [Text to Image](https://github.com/DhanushNehru/Python-Scripts/tree/main/Text%20to%20Image) | A Python script that will take your text and convert it to a JPEG. | +| Tic Tac Toe 1 | [Tic Tac Toe 1](https://github.com/DhanushNehru/Python-Scripts/tree/main/Tic-Tac-Toe%201) | A game of Tic Tac Toe. | +| Tik Tac Toe 2 | [Tik Tac Toe 2](https://github.com/DhanushNehru/Python-Scripts/tree/main/Tic-Tac-Toe%202) | A game of Tik Tac Toe. | +| Turtle Art & Patterns | [Turtle Art](https://github.com/DhanushNehru/Python-Scripts/tree/main/Turtle%20Art) | Scripts to view turtle art also have prompt-based ones. | +| Turtle Graphics | [Turtle Graphics](https://github.com/DhanushNehru/Python-Scripts/tree/main/Turtle%20Graphics) | Code using turtle graphics. | +| Twitter Selenium Bot | [Twitter Selenium Bot](https://github.com/DhanushNehru/Python-Scripts/tree/main/Twitter%20Selenium%20Bot) | A bot that can interact with Twitter in a variety of ways. | +| Umbrella Reminder | [Umbrella Reminder](https://github.com/DhanushNehru/Python-Scripts/tree/main/Umbrella%20Reminder) | A reminder for umbrellas. | +| University Rankings | [University Rankings](https://github.com/DhanushNehru/Python-Scripts/tree/main/University%20Rankings) | Ranks Universities across the globes using the Country, Continent, and Captial | +| URL Shortener | [URL Shortener](https://github.com/DhanushNehru/Python-Scripts/tree/main/URL%20Shortener) | A URL shortener code compresses long URLs into shorter, more manageable links | +| Video Downloader | [Video Downloader](https://github.com/DhanushNehru/Python-Scripts/tree/main/Video%20Downloader) | Download Videos from youtube to your local system. | +| Video Watermarker | [Video Watermarker](https://github.com/DhanushNehru/Python-Scripts/tree/main/Video%20Watermarker) | Adds watermark to any video of your choice. | +| Virtual Painter | [Virtual Painter](https://github.com/DhanushNehru/Python-Scripts/tree/main/Virtual%20Painter) | Virtual painting application. | +| Wallpaper Changer | [Wallpaper Changer](https://github.com/DhanushNehru/Python-Scripts/tree/main/Wallpaper%20Changer) | Automatically changes home wallpaper, adding a random quote and stock tickers on it. | +| Weather GUI | [Weather GUI](https://github.com/DhanushNehru/Python-Scripts/tree/main/Weather%20GUI) | Displays information on the weather. | +| Website Blocker | [Website Blocker](https://github.com/DhanushNehru/Python-Scripts/tree/main/Website%20Blocker) | Downloads the website and loads it on your homepage in your local IP. | +| Website Cloner | [Website Cloner](https://github.com/DhanushNehru/Python-Scripts/tree/main/Website%20Cloner) | Clones any website and opens the site in your local IP. | +| Web Scraper | [Web Scraper](https://github.com/DhanushNehru/Python-Scripts/tree/main/Web%20Scraper) | A Python script that scrapes blog titles from [Python.org](https://www.python.org/) and saves them to a file. | +| Weight Converter | [Weight Converter](https://github.com/WatashiwaSid/Python-Scripts/tree/main/Weight%20Converter) | Simple GUI script to convert weight in different measurement units. | +| Wikipedia Data Extractor | [Wikipedia Data Extractor](https://github.com/DhanushNehru/Python-Scripts/tree/main/Wikipedia%20Data%20Extractor) | A simple Wikipedia data extractor script to get output in your IDE. | +| Word to PDF | [Word to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/main/Word%20to%20PDF%20converter) | A Python script to convert an MS Word file to a PDF file. | +| Youtube Downloader | [Youtube Downloader](https://github.com/DhanushNehru/Python-Scripts/tree/main/Youtube%20Downloader) | Downloads any video from [YouTube](https://youtube.com) in video or audio format! | +| Youtube Playlist Info Scraper | [Youtube Playlist Info Scraper](https://github.com/DhanushNehru/Python-Scripts/tree/main/Youtube%20Playlist%20Info%20Scraper) | This python module retrieve information about a YouTube playlist in json format using playlist link. | ## Gitpod @@ -176,7 +175,6 @@ You can use Gitpod in the cloud [![Gitpod Ready-to-Code](https://img.shields.io/ -
If you liked this repository, support it by starring ⭐ From d605ac9bea2acf5f90a149eceecd473d1267c752 Mon Sep 17 00:00:00 2001 From: Dhanush Date: Sun, 15 Jun 2025 13:12:12 +0530 Subject: [PATCH 40/63] Corrected links --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8da48dc7..74f12765 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,7 @@ More information on contributing and the general code of conduct for discussion | Run Then Notify | [Run Then Notify](https://github.com/DhanushNehru/Python-Scripts/tree/main/Run%20Then%20Notify) | Runs a slow command and emails you when it completes execution. | | Save File To Drive | [Save File To Drive](https://github.com/DhanushNehru/Python-Scripts/tree/master/Save%20file%20to%20Drive) | Saves all files and folder with proper structure from a folder to drive easily through a python script . | | Selfie with Python | [Selfie with Python](https://github.com/DhanushNehru/Python-Scripts/tree/main/Selfie%20with%20Python) | Take your selfie with python . | -| Simple DDOS | [Simple DDOS](https://github.com/VanshajR/Python-Scripts/tree/main/Simple%20DDOS) | The code allows you to send multiple HTTP requests concurrently for a specified duration. | +| Simple DDOS | [Simple DDOS](https://github.com/DhanushNehru/Python-Scripts/tree/main/Simple%20DDOS) | The code allows you to send multiple HTTP requests concurrently for a specified duration. | | Simple TCP Chat Server | [Simple TCP Chat Server](https://github.com/DhanushNehru/Python-Scripts/tree/main/TCP%20Chat%20Server) | Creates a local server on your LAN for receiving and sending messages! | | Smart Attendance System | [Smart Attendance System](https://github.com/DhanushNehru/Python-Scripts/tree/main/Smart%20Attendance%20System) | This OpenCV framework is for Smart Attendance by actively decoding a student's QR Code. | | Snake Game | [Snake Game](https://github.com/DhanushNehru/Python-Scripts/tree/main/Snake%20Game) | Classic snake game using python. | @@ -157,7 +157,7 @@ More information on contributing and the general code of conduct for discussion | Website Blocker | [Website Blocker](https://github.com/DhanushNehru/Python-Scripts/tree/main/Website%20Blocker) | Downloads the website and loads it on your homepage in your local IP. | | Website Cloner | [Website Cloner](https://github.com/DhanushNehru/Python-Scripts/tree/main/Website%20Cloner) | Clones any website and opens the site in your local IP. | | Web Scraper | [Web Scraper](https://github.com/DhanushNehru/Python-Scripts/tree/main/Web%20Scraper) | A Python script that scrapes blog titles from [Python.org](https://www.python.org/) and saves them to a file. | -| Weight Converter | [Weight Converter](https://github.com/WatashiwaSid/Python-Scripts/tree/main/Weight%20Converter) | Simple GUI script to convert weight in different measurement units. | +| Weight Converter | [Weight Converter](https://github.com/DhanushNehru/Python-Scripts/tree/main/Weight%20Converter) | Simple GUI script to convert weight in different measurement units. | | Wikipedia Data Extractor | [Wikipedia Data Extractor](https://github.com/DhanushNehru/Python-Scripts/tree/main/Wikipedia%20Data%20Extractor) | A simple Wikipedia data extractor script to get output in your IDE. | | Word to PDF | [Word to PDF](https://github.com/DhanushNehru/Python-Scripts/tree/main/Word%20to%20PDF%20converter) | A Python script to convert an MS Word file to a PDF file. | | Youtube Downloader | [Youtube Downloader](https://github.com/DhanushNehru/Python-Scripts/tree/main/Youtube%20Downloader) | Downloads any video from [YouTube](https://youtube.com) in video or audio format! | From 0b09cdeccb2334325cebebb1dce36d9c65c1baad Mon Sep 17 00:00:00 2001 From: Dhanush Date: Fri, 20 Jun 2025 11:28:49 +0000 Subject: [PATCH 41/63] feat: Thread Progress Script --- README.md | 1 + Thread Progress/README.md | 19 +++++++++++++++++++ Thread Progress/thread_progress.py | 28 ++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 Thread Progress/README.md create mode 100644 Thread Progress/thread_progress.py diff --git a/README.md b/README.md index 74f12765..6f9cbe51 100644 --- a/README.md +++ b/README.md @@ -141,6 +141,7 @@ More information on contributing and the general code of conduct for discussion | Take a break | [Take a break](https://github.com/DhanushNehru/Python-Scripts/tree/main/Take%20A%20Break) | Python code to take a break while working long hours. | | Text Recognition | [Text Recognition](https://github.com/DhanushNehru/Python-Scripts/tree/Text-Recognition/Text%20Recognition) | A Image Text Recognition ML Model to extract text from Images | | Text to Image | [Text to Image](https://github.com/DhanushNehru/Python-Scripts/tree/main/Text%20to%20Image) | A Python script that will take your text and convert it to a JPEG. | +| Thread Progress | [Thread Progress](https://github.com/DhanushNehru/Python-Scripts/tree/main/Thread%20Progress) | A Python script demonstrating safe multithreading by using a lock to update a shared progress variable concurrently. | | Tic Tac Toe 1 | [Tic Tac Toe 1](https://github.com/DhanushNehru/Python-Scripts/tree/main/Tic-Tac-Toe%201) | A game of Tic Tac Toe. | | Tik Tac Toe 2 | [Tik Tac Toe 2](https://github.com/DhanushNehru/Python-Scripts/tree/main/Tic-Tac-Toe%202) | A game of Tik Tac Toe. | | Turtle Art & Patterns | [Turtle Art](https://github.com/DhanushNehru/Python-Scripts/tree/main/Turtle%20Art) | Scripts to view turtle art also have prompt-based ones. | diff --git a/Thread Progress/README.md b/Thread Progress/README.md new file mode 100644 index 00000000..1430bf2c --- /dev/null +++ b/Thread Progress/README.md @@ -0,0 +1,19 @@ +## Thread Progress + +This script demonstrates the use of **Python threads** to simulate parallel progress updates using a shared variable and a `Lock` to avoid race conditions. + +### 🧠 Concepts Covered + +- Python `threading.Thread` +- Synchronization with `threading.Lock` +- Global variables and shared state +- Simulated concurrent work using `time.sleep` + +### 📝 Description + +Two threads increment a shared `progress` variable by `10` in a loop. A `Lock` ensures only one thread can modify the shared variable at a time, preventing race conditions. + +### 👉 Run +``` +python3 thread_progress.py +``` diff --git a/Thread Progress/thread_progress.py b/Thread Progress/thread_progress.py new file mode 100644 index 00000000..4b272e89 --- /dev/null +++ b/Thread Progress/thread_progress.py @@ -0,0 +1,28 @@ +import threading +import time + +# Shared variable +progress = 0 +lock = threading.Lock() + +def increase_by_10(): + global progress + for _ in range(10): + time.sleep(0.01) # Simulate work + with lock: # Only one thread can change `progress` at a time + progress += 10 + print(f"{threading.current_thread().name}: progress = {progress}%") + +# Create two threads +thread1 = threading.Thread(target=increase_by_10, name="Thread-1") +thread2 = threading.Thread(target=increase_by_10, name="Thread-2") + +# Start the threads +thread1.start() +thread2.start() + +# Wait for both threads to finish +thread1.join() +thread2.join() + +print(f"Final progress: {progress}%") From 07480b02f8de78b40d44284f21dab7ff42648832 Mon Sep 17 00:00:00 2001 From: Dhanush Date: Sat, 27 Sep 2025 20:20:11 +0530 Subject: [PATCH 42/63] Remove Gitpod section from README Removed the Gitpod section from the README. --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index 6f9cbe51..7fe644e7 100644 --- a/README.md +++ b/README.md @@ -164,11 +164,6 @@ More information on contributing and the general code of conduct for discussion | Youtube Downloader | [Youtube Downloader](https://github.com/DhanushNehru/Python-Scripts/tree/main/Youtube%20Downloader) | Downloads any video from [YouTube](https://youtube.com) in video or audio format! | | Youtube Playlist Info Scraper | [Youtube Playlist Info Scraper](https://github.com/DhanushNehru/Python-Scripts/tree/main/Youtube%20Playlist%20Info%20Scraper) | This python module retrieve information about a YouTube playlist in json format using playlist link. | -## Gitpod - -Use the cloud-free development environment where you can directly start coding. - -You can use Gitpod in the cloud [![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/DhanushNehru/Python-Scripts/) ## Wall of Contributors From 6d5bc2c9bce3686f8def72107efa8e6542f7b523 Mon Sep 17 00:00:00 2001 From: JeevaRamanathan Date: Tue, 30 Sep 2025 19:25:11 +0530 Subject: [PATCH 43/63] Add Multi-Platform Icon Generator Signed-off-by: JeevaRamanathan --- Multi-Platform Icon Generator/README.md | 44 ++ .../icon_generator.py | 387 ++++++++++++++++++ .../sample_icons/android/hdpi.png | Bin 0 -> 7360 bytes .../sample_icons/android/ldpi.png | Bin 0 -> 3171 bytes .../sample_icons/android/mdpi.png | Bin 0 -> 4546 bytes .../sample_icons/android/xhdpi.png | Bin 0 -> 10748 bytes .../sample_icons/android/xxhdpi.png | Bin 0 -> 16692 bytes .../sample_icons/android/xxxhdpi.png | Bin 0 -> 22410 bytes .../sample_icons/favicon.ico | Bin 0 -> 951 bytes .../sample_icons/icon_preview.html | 268 ++++++++++++ .../sample_icons/ios/App-Store.png | Bin 0 -> 164359 bytes .../sample_icons/ios/iPad-App.png | Bin 0 -> 7985 bytes .../sample_icons/ios/iPad-App@2x.png | Bin 0 -> 17730 bytes .../sample_icons/ios/iPad-Pro.png | Bin 0 -> 19604 bytes .../sample_icons/ios/iPhone-App.png | Bin 0 -> 6093 bytes .../sample_icons/ios/iPhone-App@2x.png | Bin 0 -> 13893 bytes .../sample_icons/ios/iPhone-App@3x.png | Bin 0 -> 20901 bytes .../sample_icons/ios/iPhone-Notification.png | Bin 0 -> 1288 bytes .../sample_icons/ios/iPhone-Settings.png | Bin 0 -> 2262 bytes .../sample_icons/ios/iPhone-Settings@2x.png | Bin 0 -> 5817 bytes .../sample_icons/ios/iPhone-Settings@3x.png | Bin 0 -> 9796 bytes .../sample_icons/ios/iPhone-Spotlight.png | Bin 0 -> 3465 bytes .../sample_icons/ios/iPhone-Spotlight@2x.png | Bin 0 -> 8479 bytes .../sample_icons/macos/icon_1024x1024.png | Bin 0 -> 164359 bytes .../sample_icons/macos/icon_128x128.png | Bin 0 -> 13005 bytes .../sample_icons/macos/icon_16x16.png | Bin 0 -> 923 bytes .../sample_icons/macos/icon_256x256.png | Bin 0 -> 26658 bytes .../sample_icons/macos/icon_32x32.png | Bin 0 -> 2538 bytes .../sample_icons/macos/icon_512x512.png | Bin 0 -> 25304 bytes .../rounded/rounded_icon_144x144.png | Bin 0 -> 16204 bytes .../rounded/rounded_icon_192x192.png | Bin 0 -> 21813 bytes .../rounded/rounded_icon_256x256.png | Bin 0 -> 25617 bytes .../rounded/rounded_icon_48x48.png | Bin 0 -> 4303 bytes .../rounded/rounded_icon_512x512.png | Bin 0 -> 24473 bytes .../rounded/rounded_icon_96x96.png | Bin 0 -> 10153 bytes .../web/android-chrome-192x192.png | Bin 0 -> 22410 bytes .../web/android-chrome-512x512.png | Bin 0 -> 25304 bytes .../sample_icons/web/favicon-16x16.png | Bin 0 -> 923 bytes .../sample_icons/web/favicon-32x32.png | Bin 0 -> 2538 bytes .../sample_icons/web/favicon-96x96.png | Bin 0 -> 10748 bytes .../sample_icons/windows/extra-large.png | Bin 0 -> 6721 bytes .../sample_icons/windows/jumbo.png | Bin 0 -> 26658 bytes .../sample_icons/windows/large.png | Bin 0 -> 4546 bytes .../sample_icons/windows/medium.png | Bin 0 -> 2538 bytes .../sample_icons/windows/small.png | Bin 0 -> 923 bytes 45 files changed, 699 insertions(+) create mode 100644 Multi-Platform Icon Generator/README.md create mode 100644 Multi-Platform Icon Generator/icon_generator.py create mode 100644 Multi-Platform Icon Generator/sample_icons/android/hdpi.png create mode 100644 Multi-Platform Icon Generator/sample_icons/android/ldpi.png create mode 100644 Multi-Platform Icon Generator/sample_icons/android/mdpi.png create mode 100644 Multi-Platform Icon Generator/sample_icons/android/xhdpi.png create mode 100644 Multi-Platform Icon Generator/sample_icons/android/xxhdpi.png create mode 100644 Multi-Platform Icon Generator/sample_icons/android/xxxhdpi.png create mode 100644 Multi-Platform Icon Generator/sample_icons/favicon.ico create mode 100644 Multi-Platform Icon Generator/sample_icons/icon_preview.html create mode 100644 Multi-Platform Icon Generator/sample_icons/ios/App-Store.png create mode 100644 Multi-Platform Icon Generator/sample_icons/ios/iPad-App.png create mode 100644 Multi-Platform Icon Generator/sample_icons/ios/iPad-App@2x.png create mode 100644 Multi-Platform Icon Generator/sample_icons/ios/iPad-Pro.png create mode 100644 Multi-Platform Icon Generator/sample_icons/ios/iPhone-App.png create mode 100644 Multi-Platform Icon Generator/sample_icons/ios/iPhone-App@2x.png create mode 100644 Multi-Platform Icon Generator/sample_icons/ios/iPhone-App@3x.png create mode 100644 Multi-Platform Icon Generator/sample_icons/ios/iPhone-Notification.png create mode 100644 Multi-Platform Icon Generator/sample_icons/ios/iPhone-Settings.png create mode 100644 Multi-Platform Icon Generator/sample_icons/ios/iPhone-Settings@2x.png create mode 100644 Multi-Platform Icon Generator/sample_icons/ios/iPhone-Settings@3x.png create mode 100644 Multi-Platform Icon Generator/sample_icons/ios/iPhone-Spotlight.png create mode 100644 Multi-Platform Icon Generator/sample_icons/ios/iPhone-Spotlight@2x.png create mode 100644 Multi-Platform Icon Generator/sample_icons/macos/icon_1024x1024.png create mode 100644 Multi-Platform Icon Generator/sample_icons/macos/icon_128x128.png create mode 100644 Multi-Platform Icon Generator/sample_icons/macos/icon_16x16.png create mode 100644 Multi-Platform Icon Generator/sample_icons/macos/icon_256x256.png create mode 100644 Multi-Platform Icon Generator/sample_icons/macos/icon_32x32.png create mode 100644 Multi-Platform Icon Generator/sample_icons/macos/icon_512x512.png create mode 100644 Multi-Platform Icon Generator/sample_icons/rounded/rounded_icon_144x144.png create mode 100644 Multi-Platform Icon Generator/sample_icons/rounded/rounded_icon_192x192.png create mode 100644 Multi-Platform Icon Generator/sample_icons/rounded/rounded_icon_256x256.png create mode 100644 Multi-Platform Icon Generator/sample_icons/rounded/rounded_icon_48x48.png create mode 100644 Multi-Platform Icon Generator/sample_icons/rounded/rounded_icon_512x512.png create mode 100644 Multi-Platform Icon Generator/sample_icons/rounded/rounded_icon_96x96.png create mode 100644 Multi-Platform Icon Generator/sample_icons/web/android-chrome-192x192.png create mode 100644 Multi-Platform Icon Generator/sample_icons/web/android-chrome-512x512.png create mode 100644 Multi-Platform Icon Generator/sample_icons/web/favicon-16x16.png create mode 100644 Multi-Platform Icon Generator/sample_icons/web/favicon-32x32.png create mode 100644 Multi-Platform Icon Generator/sample_icons/web/favicon-96x96.png create mode 100644 Multi-Platform Icon Generator/sample_icons/windows/extra-large.png create mode 100644 Multi-Platform Icon Generator/sample_icons/windows/jumbo.png create mode 100644 Multi-Platform Icon Generator/sample_icons/windows/large.png create mode 100644 Multi-Platform Icon Generator/sample_icons/windows/medium.png create mode 100644 Multi-Platform Icon Generator/sample_icons/windows/small.png diff --git a/Multi-Platform Icon Generator/README.md b/Multi-Platform Icon Generator/README.md new file mode 100644 index 00000000..ce9c225f --- /dev/null +++ b/Multi-Platform Icon Generator/README.md @@ -0,0 +1,44 @@ +# Multi-Platform Icon Generator + +**Automates the tedious task of manually resizing a single logo/icon into 35+ different sizes required by modern app stores and platforms.** + +## 📦 Dependencies + +- **Pillow (PIL)** - Python Imaging Library for high-quality image processing + +```bash +pip install Pillow +``` + +## How to Run + +```bash +python icon_generator.py +``` + +## 📋 Available Options + +1. **Generate all platform icons** - Creates icons for all platforms +2. **Generate specific platform** - Choose Android/iOS/Web/Windows/macOS +3. **Generate rounded icons only** - Modern rounded corner versions +4. **Generate favicon.ico only** - Website favicon file +5. **Exit** + +## 📸 Input + +**Formats**: PNG, JPG, BMP, TIFF, GIF, WebP +**Recommended**: PNG, 1024x1024px, square + +## 📁 Output + +``` +your_image_icons/ +├── android/ # 36px to 192px (6 sizes) +├── ios/ # 29px to 1024px (13 sizes) +├── web/ # 16px to 512px (5 sizes) +├── windows/ # 16px to 256px (5 sizes) +├── macos/ # 16px to 1024px (6 sizes) +├── rounded/ # Various rounded sizes +├── favicon.ico +└── icon_preview.html +``` \ No newline at end of file diff --git a/Multi-Platform Icon Generator/icon_generator.py b/Multi-Platform Icon Generator/icon_generator.py new file mode 100644 index 00000000..8d88d46f --- /dev/null +++ b/Multi-Platform Icon Generator/icon_generator.py @@ -0,0 +1,387 @@ +import subprocess +from pathlib import Path + +def try_install_package(package_name): + """Try to install a package using pip""" + try: + subprocess.check_call(["pip", "install", package_name], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL) + return True + except: + return False + +# Standard icon sizes for different platforms +ICON_SIZES = { + 'android': [ + (36, 'ldpi'), + (48, 'mdpi'), + (72, 'hdpi'), + (96, 'xhdpi'), + (144, 'xxhdpi'), + (192, 'xxxhdpi') + ], + 'ios': [ + (20, 'iPhone-Notification'), + (29, 'iPhone-Settings'), + (40, 'iPhone-Spotlight'), + (58, 'iPhone-Settings@2x'), + (60, 'iPhone-App'), + (76, 'iPad-App'), + (80, 'iPhone-Spotlight@2x'), + (87, 'iPhone-Settings@3x'), + (120, 'iPhone-App@2x'), + (152, 'iPad-App@2x'), + (167, 'iPad-Pro'), + (180, 'iPhone-App@3x'), + (1024, 'App-Store') + ], + 'web': [ + (16, 'favicon-16x16'), + (32, 'favicon-32x32'), + (96, 'favicon-96x96'), + (192, 'android-chrome-192x192'), + (512, 'android-chrome-512x512') + ], + 'windows': [ + (16, 'small'), + (32, 'medium'), + (48, 'large'), + (64, 'extra-large'), + (256, 'jumbo') + ], + 'macos': [ + (16, 'icon_16x16'), + (32, 'icon_32x32'), + (128, 'icon_128x128'), + (256, 'icon_256x256'), + (512, 'icon_512x512'), + (1024, 'icon_1024x1024') + ] +} + +def generate_icons_with_pillow(input_image, output_dir, platform='all'): + """Generate icons using Pillow (PIL)""" + try: + from PIL import Image + + # Open and validate input image + with Image.open(input_image) as img: + # Convert to RGBA for transparency support + if img.mode != 'RGBA': + img = img.convert('RGBA') + + # Get original size + original_size = img.size + print(f"Original image size: {original_size[0]}x{original_size[1]}") + + output_path = Path(output_dir) + + # To Determine which platforms to generate + platforms_to_generate = [platform] if platform != 'all' else ICON_SIZES.keys() + + total_generated = 0 + + for plat in platforms_to_generate: + if plat not in ICON_SIZES: + continue + + # Create platform directory + platform_dir = output_path / plat + platform_dir.mkdir(parents=True, exist_ok=True) + + print(f"\n📱 Generating {plat.upper()} icons...") + + for size, name in ICON_SIZES[plat]: + try: + # Resize image with high quality + resized_img = img.resize((size, size), Image.Resampling.LANCZOS) + + # Save icon + icon_path = platform_dir / f"{name}.png" + resized_img.save(icon_path, "PNG", optimize=True) + + print(f" ✅ {size}x{size} - {icon_path.name}") + total_generated += 1 + + except Exception as e: + print(f" ❌ Failed to create {size}x{size}: {e}") + + return total_generated + + except ImportError: + print("Installing Pillow...") + if try_install_package("Pillow"): + return generate_icons_with_pillow(input_image, output_dir, platform) + return 0 + except Exception as e: + print(f"❌ Error generating icons: {e}") + return 0 + +def generate_rounded_icons(input_image, output_dir, corner_radius=0.2): + """Generate rounded corner icons""" + try: + from PIL import Image, ImageDraw + + with Image.open(input_image) as img: + if img.mode != 'RGBA': + img = img.convert('RGBA') + + output_path = Path(output_dir) / "rounded" + output_path.mkdir(parents=True, exist_ok=True) + + print(f"\n🔄 Generating rounded icons...") + + # Common sizes for rounded icons + sizes = [48, 96, 144, 192, 256, 512] + generated = 0 + + for size in sizes: + try: + # Resize image + resized_img = img.resize((size, size), Image.Resampling.LANCZOS) + + # Create rounded mask + mask = Image.new('L', (size, size), 0) + draw = ImageDraw.Draw(mask) + + # To calculate corner radius + radius = int(size * corner_radius) + + # Rounded rectangle + draw.rounded_rectangle([(0, 0), (size-1, size-1)], radius=radius, fill=255) + + # Apply mask + rounded_img = Image.new('RGBA', (size, size), (0, 0, 0, 0)) + rounded_img.paste(resized_img, (0, 0)) + rounded_img.putalpha(mask) + + # Rounded icon + icon_path = output_path / f"rounded_icon_{size}x{size}.png" + rounded_img.save(icon_path, "PNG") + + print(f" ✅ {size}x{size} rounded - {icon_path.name}") + generated += 1 + + except Exception as e: + print(f" ❌ Failed to create rounded {size}x{size}: {e}") + + return generated + + except Exception as e: + print(f"❌ Error generating rounded icons: {e}") + return 0 + +def generate_favicon_ico(input_image, output_dir): + """Generate Windows ICO format favicon""" + try: + from PIL import Image + + with Image.open(input_image) as img: + if img.mode != 'RGBA': + img = img.convert('RGBA') + + output_path = Path(output_dir) + output_path.mkdir(parents=True, exist_ok=True) + + print(f"\n🌐 Generating favicon.ico...") + + # Create multiple sizes for ICO + sizes = [(16, 16), (32, 32), (48, 48), (64, 64)] + images = [] + + for size in sizes: + resized = img.resize(size, Image.Resampling.LANCZOS) + images.append(resized) + + # Save as ICO + ico_path = output_path / "favicon.ico" + images[0].save(ico_path, format='ICO', sizes=sizes) + + print(f" ✅ favicon.ico created - {ico_path.name}") + return 1 + + except Exception as e: + print(f"❌ Error generating ICO: {e}") + return 0 + +def create_icon_preview(output_dir): + """Create HTML preview of generated icons""" + try: + output_path = Path(output_dir) + + html_content = """ + + + + Icon Preview + + + +

Generated Icons Preview

+""" + + # Find all generated icons + for platform_dir in output_path.iterdir(): + if platform_dir.is_dir(): + icons = list(platform_dir.glob("*.png")) + if icons: + html_content += f""" +
+

{platform_dir.name.upper()} Icons

+
+""" + + for icon in sorted(icons): + try: + from PIL import Image + with Image.open(icon) as img: + size = img.size + + relative_path = icon.relative_to(output_path) + html_content += f""" +
+ {icon.stem} +
{icon.stem}
{size[0]}x{size[1]}
+
+""" + except: + pass + + html_content += """ +
+
+""" + + html_content += """ + + +""" + + # Save HTML preview + preview_path = output_path / "icon_preview.html" + preview_path.write_text(html_content, encoding='utf-8') + + print(f"\n📄 HTML preview created: {preview_path.name}") + return True + + except Exception as e: + print(f"❌ Error creating preview: {e}") + return False + +def main(): + print("🎨 Icon Generator") + print("Create app icons in multiple sizes for different platforms!") + print("="*60) + + while True: + print("\nChoose an option:") + print("1. Generate icons from single image") + print("2. Generate specific platform icons") + print("3. Generate rounded icons only") + print("4. Generate favicon.ico only") + print("5. Exit") + + choice = input("\nEnter choice (1-5): ").strip() + + if choice == "1": + input_image = input("\nEnter image file path: ").strip().strip('"') + if input_image and Path(input_image).exists(): + output_dir = input("Enter output directory (or press Enter for auto): ").strip().strip('"') + if not output_dir: + output_dir = Path(input_image).stem + "_icons" + + print(f"\n🎨 Generating icons from: {Path(input_image).name}") + + total = 0 + total += generate_icons_with_pillow(input_image, output_dir, 'all') + total += generate_rounded_icons(input_image, output_dir) + total += generate_favicon_ico(input_image, output_dir) + + if total > 0: + create_icon_preview(output_dir) + print(f"\n🎉 Generated {total} icons in: {output_dir}") + + else: + print("❌ Invalid file path") + + elif choice == "2": + input_image = input("\nEnter image file path: ").strip().strip('"') + if input_image and Path(input_image).exists(): + print("\nAvailable platforms:") + for i, platform in enumerate(ICON_SIZES.keys(), 1): + print(f"{i}. {platform}") + + platform_choice = input("\nEnter platform number: ").strip() + try: + platform_idx = int(platform_choice) - 1 + platform = list(ICON_SIZES.keys())[platform_idx] + + output_dir = input("Enter output directory (or press Enter for auto): ").strip().strip('"') + if not output_dir: + output_dir = f"{Path(input_image).stem}_{platform}_icons" + + generated = generate_icons_with_pillow(input_image, output_dir, platform) + + if generated > 0: + create_icon_preview(output_dir) + print(f"\n🎉 Generated {generated} {platform} icons") + + except (ValueError, IndexError): + print("❌ Invalid platform choice") + else: + print("❌ Invalid file path") + + elif choice == "3": + input_image = input("\nEnter image file path: ").strip().strip('"') + if input_image and Path(input_image).exists(): + output_dir = input("Enter output directory (or press Enter for auto): ").strip().strip('"') + if not output_dir: + output_dir = Path(input_image).stem + "_rounded_icons" + + corner_radius = input("Enter corner radius (0.1-0.5, default 0.2): ").strip() + try: + corner_radius = float(corner_radius) if corner_radius else 0.2 + except ValueError: + corner_radius = 0.2 + + generated = generate_rounded_icons(input_image, output_dir, corner_radius) + + if generated > 0: + create_icon_preview(output_dir) + print(f"\n🎉 Generated {generated} rounded icons") + else: + print("❌ Invalid file path") + + elif choice == "4": + input_image = input("\nEnter image file path: ").strip().strip('"') + if input_image and Path(input_image).exists(): + output_dir = input("Enter output directory (or press Enter for auto): ").strip().strip('"') + if not output_dir: + output_dir = Path(input_image).parent + + generated = generate_favicon_ico(input_image, output_dir) + + if generated > 0: + print(f"\n🎉 Generated favicon.ico") + else: + print("❌ Invalid file path") + + elif choice == "5": + print("👋 Goodbye!") + break + + else: + print("❌ Invalid choice, please try again") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/Multi-Platform Icon Generator/sample_icons/android/hdpi.png b/Multi-Platform Icon Generator/sample_icons/android/hdpi.png new file mode 100644 index 0000000000000000000000000000000000000000..50b43b60cb0d3507dbd71d357dcf232ee2afb1e3 GIT binary patch literal 7360 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 m3SVl{KNdO>cz^@E{C@yGT~6F!kyeiY0000V z-E(T!-v7P#e{TWY0(t`y5d8m)j(67yKu&vd7(bXah(IKa5Fn*QQ3Up;%PA>wXevz& zZLE8%fV8yvBqxtTQB(jd%jDd-6BHF?v*MlU#P^KCG)xcz)3i`k0SKg&?e9>qEJ?J( z#j)b^?8~h{1LTDCL1M+i>3l;IQMmBnBtQrQ3l*iyXGq*QxYp9Zy0;1#H!g#D^PXbM zmX82<_Spq&+t!<+qHLadIhA|kdJ-anf#{Dd&EaO1#%ik}b`l3v7u8}{W^NCgnS z))4hpD=r*-e)hkaG5tNhZf!y!s1LSMAM()<^3l-dqu%h*RObi4?{CKEGbk#`rl=?z zpU=SWZw8>L&QG1uN@K{+*R75G=k`yjZE7GG4pUb3B{_wk;g5u<^R-fEv=Z=z0fYwN zbZPj)LH6fW5De=a+Ec~Z&#%&WD?s{_kD#bFw4^0bH3e0(wWeuK0s+DM@9zO15D;jZ z6983H5Sk!Pi(=1#)2y7gnGbd>SGY>0qu4^>rY^M_gS z%w~S|dI9l0qj~WkKjht4^H8L~vLvQyeIJR^!tGWlEZjt4;U?T}1u3mAIJJKZa!w(D zgS*ahEl@}Ku^Ipl@2@6Wb76G>ssa!S>I~?8CmZ*^L`!2E%?$y(aUODy{tV5b6616e z<8otK7P2eIEen@RP*Spsl9FAxTmos?0$CE=IJkcE7RUCV$JslY(I`XK*x_$Lf{;BFkM%I>_A96fZ79`0yVVS5RH zqH46Xn5>D4oH@^TnoLm@f|gF+#^WgQZo-X0v{*Nx`Zg4ohGIz~mc^dzQ;ho8`>`x}TSJ{f zDGF`6j;}3nMf(Az1qO2{;!d@={VjVQ2>~Rfu>m;Ig-bbBY9|=g=rY= zfLCY^2WV_+L-px=w&)Lpt~cX!XA6YNH`s3PjZHvNRNj7jTl-lRZ)^epM#RG7ak2OG>l{0Bf#tJ5 z9F8s;YOHVLT5TOo;XtSAK!OlhmW8INn5INSaH0Ap%VuUV zble0o|6@HP1`q6J@>5k8c>9HAyf8Bhkq^m3?j~d!AVEmh_iQ|+WFJtVO z(EuDT`!_)zCVBWMq?8=U-A>xnsf-;n zn$@dUvwHPv#*P_H+SI8W$lZ>VlH}o|sHv&utJ*r2EJ-IfcLTZ}Wbxv3a&odTj1Wtg zrmgXVRoz~nJ!|iWJv>nkOi7V9rIbtF zSR(;hdb~__jMC#}5|B&YSR-#rDF>#c$YBpplvP#s9p&ZromEx0*Oir0UcM~l%9X#d zodDqcxsz<$_VHf?wKu*e6(vVGQB}k8Rj*QZa3ABwj`<#_m#=!26IC@_s3>RRgjwv~ zz4I@E`uw?*f5UG7(|4w`;JHcdfl*+ZcKT2hr8BJ{z^!VW`{FB>&B|i%s6QVVt4@@# zKK~^K4N1blLQw^#VIjU#*qEk84_7oFZ7$}6w+d{xPv{lJy-B@^kuFqW6LJHSHgp`Q zMB$>1FggY^`i?~If+ZPQJTYVt$s<#EaOjB6)N$@)IRGCPzR2{)Q)rbzblt!-EMlVF zSV)vELYdN{mxv{ySJZ7Ui$qL9mQJuuM@YfS&f`J}%wMq)D@II2{anB#9t8eMCI(yu6dek7vL?avE8PA4Ek z=s}Z+9%1t2rsN0HGEy$NOMDgpS|)CQC=ti zk~xcJ-Oigru?fBqqI(>&ka!d)`|{2JaH;BRPS#wacyBcTg*(a#T49uS;Q@TDjaZgR zX68IHGv{GhCcf6j_M%a8XJP_7HtDI4mri>U1UOT{*SA5VV;( z1)Iz8Cf|V)?`HLjJE^X?LGST>Ia_v>>Mw2(g$vnEH&so;FceZ#XOo&b8^cggHJkJK zTY~&>@*`|H@M8eNp$I?!{d^WJn~X0K!t3#%X)1!^^ z#0NVT^30-C6cmhz$&Vge$Hl6fB*pYZAi5JYX-S-D>{$O95~$gDn&zubwpr@^RK9Z< zGZ^9HjitP@W+o0tdo6Do#KoyBTsRYeO`AT&GL3E=y)oz`b?QTCs5Asy`DF7+`Xt3s zdhj9@rB^s}>?*UL9fQ`Dpb15wV=y53PDVfa0H^j`q(?$D6CNEzU0pL5c2HcW z--RhHy9ogZMIjuPOqgH`6b?&-(mg$@s)9cpLI6&ok@fTa)PLh6E+L9vuG)>SCCH4Y zM|4)lopo7&Fwd`?!Y7AbBf3WvX>*5j^w4V7{C++FYqu`o!>upiaH^dc>M&VG#zHbO z7Irh)cZEU-98Qh=($~1FZvriiZ5W10PVox*_3T497`d$>%aWLeMN6O!-DU90tqVv@ zil-*{4R`nJ$-3>&k$6`;{}X7!<#KeE)rO%H9W7b1JWi)Du^7_-UJ43U z5y8YqkVHp3(OwrF*^LI~lF_lPUkzvaT&TAr9bT9lr?z?rhE2t{C-R(lMxwbIeB>UeOgJ=0qM zm#q9JrUghLsIO@H#q5+H^xpu~w94#RiAg;Q+y7(!sdK=s{{ literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/android/mdpi.png b/Multi-Platform Icon Generator/sample_icons/android/mdpi.png new file mode 100644 index 0000000000000000000000000000000000000000..c1c7fc9b729541a8b72eb68c1717b5ff159037fa GIT binary patch literal 4546 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 literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/android/xhdpi.png b/Multi-Platform Icon Generator/sample_icons/android/xhdpi.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f6d3736de6107a259f8f2010960528c12c4885 GIT binary patch literal 10748 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 literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/android/xxhdpi.png b/Multi-Platform Icon Generator/sample_icons/android/xxhdpi.png new file mode 100644 index 0000000000000000000000000000000000000000..a251d2e003699512ca54a04f1c3c30215b621eed GIT binary patch literal 16692 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 z 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 Z{|65uEU-JjX4C)x002ovPDHLkV1gf=n128O literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/favicon.ico b/Multi-Platform Icon Generator/sample_icons/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7ced512222020bd5557166f54c8682730e81524a GIT binary patch literal 951 zcmV;o14#S;0096201yxW0000W0HFf_02TlM0EtjeM-2)Z3IG5A4M|8uQUCw|5C8xG z5C{eU001BJ|6u?C187M^K~#90Ws+M=n*|idf8V7o{R-U%g8^g3wiYOHld*(Lx8XKN ze3~R`R7B>Bi;BL;MCXH-#2YRnQ896IhB*{Tj2a$v4;nDAIW8NHi@_8f8w;7pHrNtM zzx!ueAAImUot*r0{+Dxva9O^&YhRfpxCAuK#I_wA+vMWl--H6yq-yTkD3x`2_BDip4vc{W-#<;J#6#*C+?x6j%o&0%anVei7 ze=Xdmsw~0_Ehi<><(4_o@gq%pKj5dnDHPl!k{X((q3cOBJ&B&`ZG+b4)4X%|TMjiG zXHi|jb{u3)H8}X}9ts25lx!{J^X{Lit-lLNmhpJJX-iq_eT)vpxvHy7_e~&d^wR&s z6#jKyL{qm|m+9l+qkB2?^{=!&b(+c1c@&?_-0bhnUyftwIt80I65ZhEp@!{L%Sq9#z7KI6!>>!=Bfd@)4u?kH+9Nru-;Z|^b0G$O@g zr?@~6g|zJdl><%+kjDHs7XGzRODYT70a*~4oSvfTa61d}OKDJ1>2`WLj!;=qfvTH0 zwvEf>;{4fR$*Y4or`O7>K`;ad>M<~cF z!0qxO3Nm7*KZBwEX(n&o=F^iyOfIc3HXcXGQV0Y~2$n?ARGW&LVw#_?W8Z;$I5#}Q zny#j^5>3-aPgvv%5~bl>lr zvX<0od~i3RXdVT{*(@)u5-!T7uWJymqNI~|d)$II!!6uljrxXdyx-MKLt_=~uYQLR zj^>+HyCRb85lN|$T@uMel1t~72nK2#97k9+;y0dqednUCTCRcbe=E!KXP_rchWcl$ Ze*m|nYS34sGTQ(E002ovPDHLkV1i*e!f^lq literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/icon_preview.html b/Multi-Platform Icon Generator/sample_icons/icon_preview.html new file mode 100644 index 00000000..dacfed78 --- /dev/null +++ b/Multi-Platform Icon Generator/sample_icons/icon_preview.html @@ -0,0 +1,268 @@ + + + + + Icon Preview + + + +

Generated Icons Preview

+ +
+

ANDROID Icons

+
+ +
+ hdpi +
hdpi
72x72
+
+ +
+ ldpi +
ldpi
36x36
+
+ +
+ mdpi +
mdpi
48x48
+
+ +
+ xhdpi +
xhdpi
96x96
+
+ +
+ xxhdpi +
xxhdpi
144x144
+
+ +
+ xxxhdpi +
xxxhdpi
192x192
+
+ +
+
+ +
+

IOS Icons

+
+ +
+ App-Store +
App-Store
1024x1024
+
+ +
+ iPad-App +
iPad-App
76x76
+
+ +
+ iPad-App@2x +
iPad-App@2x
152x152
+
+ +
+ iPad-Pro +
iPad-Pro
167x167
+
+ +
+ iPhone-App +
iPhone-App
60x60
+
+ +
+ iPhone-App@2x +
iPhone-App@2x
120x120
+
+ +
+ iPhone-App@3x +
iPhone-App@3x
180x180
+
+ +
+ iPhone-Notification +
iPhone-Notification
20x20
+
+ +
+ iPhone-Settings +
iPhone-Settings
29x29
+
+ +
+ iPhone-Settings@2x +
iPhone-Settings@2x
58x58
+
+ +
+ iPhone-Settings@3x +
iPhone-Settings@3x
87x87
+
+ +
+ iPhone-Spotlight +
iPhone-Spotlight
40x40
+
+ +
+ iPhone-Spotlight@2x +
iPhone-Spotlight@2x
80x80
+
+ +
+
+ +
+

MACOS Icons

+
+ +
+ icon_1024x1024 +
icon_1024x1024
1024x1024
+
+ +
+ icon_128x128 +
icon_128x128
128x128
+
+ +
+ icon_16x16 +
icon_16x16
16x16
+
+ +
+ icon_256x256 +
icon_256x256
256x256
+
+ +
+ icon_32x32 +
icon_32x32
32x32
+
+ +
+ icon_512x512 +
icon_512x512
512x512
+
+ +
+
+ +
+

ROUNDED Icons

+
+ +
+ rounded_icon_144x144 +
rounded_icon_144x144
144x144
+
+ +
+ rounded_icon_192x192 +
rounded_icon_192x192
192x192
+
+ +
+ rounded_icon_256x256 +
rounded_icon_256x256
256x256
+
+ +
+ rounded_icon_48x48 +
rounded_icon_48x48
48x48
+
+ +
+ rounded_icon_512x512 +
rounded_icon_512x512
512x512
+
+ +
+ rounded_icon_96x96 +
rounded_icon_96x96
96x96
+
+ +
+
+ +
+

WEB Icons

+
+ +
+ android-chrome-192x192 +
android-chrome-192x192
192x192
+
+ +
+ android-chrome-512x512 +
android-chrome-512x512
512x512
+
+ +
+ favicon-16x16 +
favicon-16x16
16x16
+
+ +
+ favicon-32x32 +
favicon-32x32
32x32
+
+ +
+ favicon-96x96 +
favicon-96x96
96x96
+
+ +
+
+ +
+

WINDOWS Icons

+
+ +
+ extra-large +
extra-large
64x64
+
+ +
+ jumbo +
jumbo
256x256
+
+ +
+ large +
large
48x48
+
+ +
+ medium +
medium
32x32
+
+ +
+ small +
small
16x16
+
+ +
+
+ + + diff --git a/Multi-Platform Icon Generator/sample_icons/ios/App-Store.png b/Multi-Platform Icon Generator/sample_icons/ios/App-Store.png new file mode 100644 index 0000000000000000000000000000000000000000..6e9d2dece0bafbf57c5afa8f8a0e68a32dd14cf9 GIT binary patch literal 164359 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 Csxj;U literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/ios/iPad-App.png b/Multi-Platform Icon Generator/sample_icons/ios/iPad-App.png new file mode 100644 index 0000000000000000000000000000000000000000..3b176db20b9c1cc8a959de67f74dda46f94af648 GIT binary patch literal 7985 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

(X}Nf3n7Cnnw6Zao{@zv& zAq2r_gx&?689(U!$oLv`{|2HWGFKI_F_}_3MOX*%=i_lYkkGHM?L=v^HC( z!Jz?%=|M{=Gm=A^BID>(VOnliIjhaYH`DtL2x=l>3JNcOo~pz1vP(woy)~pgIzww+qnT{ap>(2*^~;VJeLn71x;lBL-%xfl~;Dh-uKb zUsr~l-qVeRs%W}n!*uAJ!>MN$61E$5ScDKntQZ3a^`L)IH*DLXrfHgrW!ZG=)sA7O z_Hr8lh+_s!UH4#`22-d0oj?8Qex^?SJEm!%>z+0YP}S9-op@t*5Mh{kO7ZQXWzZ2s|;JLzB4&EWtVHeGw>^XKtDpmV1@j6;wCEK}kSc=*$6cTqU7 zOM*w(qo4z0-}nLT+GS(94ESRKOjXqg2CI4e@oO17_5r3&{X1jFKEUITUrR7poyZoo zSq&Nu)4Q;99Y9SRO;;18ADXT@Uiqj3#?5??+;%Mo%vSAeEQCVHj4@>RDNI@XI7>e( z!H8O%eqJBCb!z9%aaRr*><<|+PCcWLsb4(7vIQkrmSp64edydFpP+H44>?7nzKmcjN>;9qE3ZD?2}8*k!B(ybKU`MQ z+O>=8v67qux3y~*w+U9#;Q=&Eufk4D{P?Fl^Vn1t%-w*hsa$&92!8g=XmWCWEe_11 zG9)V=Ft0K~iGMd0R8AjBiz>VMGFoeEH;ho;coVoJLMXk z+vO6G1`)$(abUK3C@GmK9VcZpSCcq{0**{Z%d?VndiLz++MlX>jSkVIXU~3Utx#9P zF$~nlVkW^@l>Cla*F#x)%k77>*a+7(kQPh@;-1Jk#^H=u94gEYIPCGv2l1(^>0zEHbXu${ddM z5pT1yVtHxGeJ5*~*IxTQd3hbMEQ6LEQtmWlsH!^9B>|6zz5AsEcG-gDhQ*s=9MB98pi-+hON|N9!dCK{H>%EY!M ze$B(C;@#@q*Zhs`TlTk^=dU%Em2r%E*}_`mc5P`#mC;08zh* z79R+!g9nY@J~D+JTMsxh>}{|ti?P3Wk4vu`ANesquK zR!|=6cj}h(*bVno(f~VCFy0wAXYqADj>KU(0!K#z?A=kZv6}FXnova1bs=qOD;|$7 zOLy$`u35V697QOaY1r|h57M%1W=vjIa_ZBC+p0oAMb|ZHOR4A{A$K3B(7s$$cCHYL z$28gu8QKQe<^IJ?n)Gw>Ja(ty{&`U&FK!!PCB3tl`{y-{tl8+kXX7}(f789rT>^N< z)$uAPkK-l0x2VhTE=!*J=qYWooUF#r?>_ZikCajYUT}B2_&d{q6+?z}`nZ8L0>KOJ zdp_P{+p2q=&%}T5Ah5;#HlEa8NB^|lvl5sBbc3{hyzzg>O|U0i4O#_E1x{&TP4dqk k0ZNbK_iVX1d=TLO17N#A&}5THod5s;07*qoM6N<$g1+3#`~Uy| literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/ios/iPhone-App.png b/Multi-Platform Icon Generator/sample_icons/ios/iPhone-App.png new file mode 100644 index 0000000000000000000000000000000000000000..5663a66482131d21237294e974dd921b080feca6 GIT binary patch literal 6093 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 literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/ios/iPhone-Notification.png b/Multi-Platform Icon Generator/sample_icons/ios/iPhone-Notification.png new file mode 100644 index 0000000000000000000000000000000000000000..e43c91228afbce38438949783acc09f7eaf3a273 GIT binary patch literal 1288 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 VZJSHX@PCIP$Vn+n)<}F0{tpSfj*$QW literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/ios/iPhone-Spotlight.png b/Multi-Platform Icon Generator/sample_icons/ios/iPhone-Spotlight.png new file mode 100644 index 0000000000000000000000000000000000000000..002a243a1f8e6e4a41a6b7caa1f3a5e3d225da86 GIT binary patch literal 3465 zcmV;44R-R0P)RWRLZJ^$RrtfL*8)D=|5ib@*c)zb+7)zyViYc?RD=x zXTP)exA*=&0aOCr00jts8dsYyRRU1`GrKc#>;PIKA%rH7mI6T2JN8#fh10Nc{KK=9 zocfmACf$e4bYipF0SJYHgu(w%zD_RknTsy~592u+Kwrxb{|rQ>ZS6%ND3(IaO# zTU?0&sFAl05Zj)ZM=i~02;4XT@X>-meD7GpNV?!5cg+iwoT_BWlBc*jqcf$Yr2q^Z zIFRa^diEE-#MnuL$Xk~~ElrqcC_qQULLyp^D&CGD=|Tz%R_x$xaiuZ<(c%wL8)>30 za2c0r_QZ#LzYT-l%O^5*bn8Pz3xT0HH;H1*TzO7#bdjoApco%=)FT zlj?9|7&DyNJ;@4@4=I z@SPF+7(wRHp6twf7t^K#Pkb+!=$3Fo+E!P0pPvD&pErck|X=0_TjysQPtRhE6Gm0i&|S4{DfGyX$A{dPb3_& z2!|{dteVJUPy7aNumz9Pg~#qfDut5j$}>bMN!PBu=-RaxO38$ZWg&4JcHZA#LSwy; zjGKE>QC7>whYF}FzeL8!Ues4NbM#;-Zo`g+OgzE1tI_Y{;q`Z7+6+MP;M!^URghG> zn;lyZ(c%xWc*Sk_^dKtke+o^*=ku{<&GP^>H8mqNEzW&`1m50NgxST-u&q-#aLbG2 zKmQTVtCJbNbqf2&?BMO)C%EJ8VF^{kXkP@-1Wh47E7nepmYHyn3*Xe!txFoOzj%zM z1|Ku;AIrBD_1rkH4{hn9l*H+DvU~TF0L+;2TN)Z=d(Fhg=`-gz@xhlQ-_V7+6BRhF zauIF_VDIFl_Cz_Zt|@$U=qz8Huj0l&*CJb^WF!VEis+`GA0-vZPAB(I+YYK7jdzWH zg8J%a&R%>LM062pSqLF0EZhmeJ@+g{T2>4kHVn>}RuhquhSSv?oBvjO)JkhPHm}|O z=1dL4`}B)}#pno?x~?IGLMg?A8>TUT+V+I!Pwtt8ju!iu?j#Qmhrzb(9|GWT7`T%> ztz|~TOA9xT>(9YY*0O)!Cv0B3k2PEFV$3fF@y^j=9$!|#ipQrienJ*q`lRBcB?d<0 zhnk_L3H;$8Q>P9^->Wfi>NccQYL?8^2#>q*O#A z7LkZdfVco^yp2qloXrdS7ZDCdxNXXf)HF5H+mnG60V%_*T6uT$O8+GWWOb+T^lIG64$k|k>Cq>h!qcm9CEK~^Z$P#Bl8}Q=myIrl2a*IjI#=dp z1j(Hfh9eL(;itDJgO~E(=jE-3N$Z@>eYwjS|Lf^=>)i{0s;|G{&>Q*e$$OHQw;m>Y zSZ`)dA43Zv1OnZuV__i>C=|LQ6$=XxSXgu+1*gjv+g}a(r=KzQmO=RACXOpF%Zj4X z&^4sg*!lE3^d6AOGjF}k;J&@6@p8?SK`WxuxhEL1BVez!7e0`>v*-OVEG#M>V ziiA$1l#1C>DqMz*BZo^U`Q+Q!?4_cR{6}s>0m{>Lqyhr~7fE~|0$NEJ%2%&NRg4xW>UBR|T zSFD`aMl#OG~7({+THPQRC`%R%y1J;30sEKYv>F{Wt(Fn8`;h7K7* z-l_+fa_>D%oPICQu6c;FrKgxUVLE<)20}m};KS`sK?v~qE@PT@G)*HZ$-riFw)bMw zv{PDI!kjrnIevUUHk--f#pBtyaV{Q@lUHBOBPVAVb#?VrRFq+NJL%r58|O;T;caYW z!NP@@rpcm3i&(U15vFOfVBtc%jg6cuJxBLm-LSizR8*8vS65F?&M;nmH4l%+$;ORy zS-f~WHk--u;8D9rJnQk?nZBksl55(|Ie|^U~w&`=XMJ zu2=EP9#`}8o;?#n91e#WI%Ei6Ubw(}<<-<&{Eo@jb?3gB|IX6fjrjf6kB0csNAKs& zH=m2!zrlu|dB;Q@Cih-n|u^lA+2WF!i8VB-UX63^VlDlCO>lV&o$W1pfZ~puk zNKO|Qv*y44K(}N&yEng#ZfNu$m`&BissxZUG*ov8l29m+K=FREW#$J9b$sz`v)jm% z`ac$GO_M|{i4f5t;)f`0e4#b~hX1NRPyha3sinEK)hTqYXh*HKLgBz<@UUJioB0Cw zju;wib^Wt%h_$+xTU(vCxsJ`R5LpRfS?SwM&PfbIhgNF%Y0=kA&ioyp{k@zF zyN9#Il}yh39Vg!}!((?NfPf66>!4{S8#exlS+iC#V#s7h44KTVS*zHv@lR-)iLNVx zGJ-(hwmVq2B%h~N{e={}6NHFSS|j1Uf_BE|nIUuvb{A1s-OL+1k8}I*n|O2g3F@kw zDcDuSt>XuyltR-4N-Cs`keNA>i4&$%TXzY7F6o`9x>$vj5u{X@n!#^IJw?CF?l@dF zG)*x3?q{j5xlI0%X|;H2=rZhlc%YQ;YA@4u?6q91Xkf#NH>fyYPuDTMX}aX&$iB~U>vm)uHPrOz zrjsVkX40hD(G%8n+Ej}`Jf#gs2jdkRr}EI6J7SbJ+3xI+(k8Mx;H}+77@eF9+j=_( z$M2+IR}qf%C{--H585rH|y5T1z_dM?KCvV1YV2~G>7~wUp*Ct!W$0o z<+*CQck4vK&LV_>f5{n5c||?Lv--s-ZA|(w(Wxk_BWy{+XX`kzcyDZj=CbcNv83HD zKUar2==wMvMInU7#f#s>P88G?`b{+4jV(SD3b)C1a1k8$w8r#!x_fQL8V#e~s=dAH~@9$D}j%Qj49@{}7%>yd;vjv5M0 z$LI61X;WboG(Imv(>p|^Zba#-0MG{K;O*WeAe(5*)& zZXVa4tbx4lf1m& z0x)XSd8|nId!$Pf0!qhoyzI5i8k74w8^xN zD`Z-GyWJ)MyWCM~n3|S>%cZkv(|#a2H>Reg$4Ssiq`8w6C@zNsBE{}fHlhN!h2)NL z!vOFS;Of*=(%WfgR02Nww=*mV?TCr!KPGg?i|C-(vSnF}h|CieWtjr-j|MQaCJq9?N r>~ZFYRQ?#l&<@1C)6utWzEu7Xv#hYt*HQTk00000NkvXXu0mjfOUS^l literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/ios/iPhone-Spotlight@2x.png b/Multi-Platform Icon Generator/sample_icons/ios/iPhone-Spotlight@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e32a5508cc87c6fd78c19a67577db27882471621 GIT binary patch literal 8479 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 N002ovPDHLkV1hTtv;P19 literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/macos/icon_1024x1024.png b/Multi-Platform Icon Generator/sample_icons/macos/icon_1024x1024.png new file mode 100644 index 0000000000000000000000000000000000000000..6e9d2dece0bafbf57c5afa8f8a0e68a32dd14cf9 GIT binary patch literal 164359 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 Csxj;U literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/macos/icon_128x128.png b/Multi-Platform Icon Generator/sample_icons/macos/icon_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..e47c24a4c03afd0f395aef7be88dd7d10e0d3ff2 GIT binary patch literal 13005 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�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 PQvs8aP!O*bH46D39F(0j literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/macos/icon_16x16.png b/Multi-Platform Icon Generator/sample_icons/macos/icon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..7f805a956d1a84dbce92aed6e8493877122e2d79 GIT binary patch literal 923 zcmV;M17!S(P) zcM<~+@q~qCS=e?0%T8ch7Pd^%+I)(44t~plhNCQ)%SffrEi=jfXLnH$$f9I(0iSpM zOl|#LxO5$_*N2pfjJ1A724h^YO{RLs5$k>Q{V+-98XuZtr&yEjXaA$SIsNsov^{l- ziIF)Bzs~H;@626_k+f~{H?AkLE|Z5Ewo;LsO<+?lrs<$7QkcmVZdx~ZqNSS3noWet z^Z4ZLZld*Jgn+U0eC#3sg{52R?l?qcMFpnqprpj@c608`5c;;d4ZL-*!$?zH+YMDjTbvHs!qphij?vICg?U`>VD##&H z9$^Dva#A6xYqxRX+$A1~e#jS{!{n#u<8k}ZgpQV;nZ{t>6caaZ@#*nFCKi_&9gAUP z7zBbP1WO`Vrlg{#i00?(*t72*&JInpYMTfFn&U|9c#0h1qBN9)vFczYQYb00%mlWT zAZaI6<~l>RzuT;?{ISTx(ZihV?8oqX(5-|`=D3a$??FhScuZH7DbhnE{Ji*1Yiv$BT3Z=wK xGIssB*S9a&X3E|F{cmL%nQ7Q@hrzz-)IYbRYS6q_$Cv;B002ovPDHLkV1j|R%KHES literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/macos/icon_256x256.png b/Multi-Platform Icon Generator/sample_icons/macos/icon_256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..fc0e8d4055d81a899a068d33c0ba03c3272ef33d GIT binary patch literal 26658 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 ATR=J_L|VGLyK~>U{e9m# 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 literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/rounded/rounded_icon_144x144.png b/Multi-Platform Icon Generator/sample_icons/rounded/rounded_icon_144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..d337441491da5716f1d240f4c55111859ff5727b GIT binary patch literal 16204 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 Skoh410000q=h literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/rounded/rounded_icon_256x256.png b/Multi-Platform Icon Generator/sample_icons/rounded/rounded_icon_256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..b3904fcb9727bba5dcc573fb69de92b212b1bfde GIT binary patch literal 25617 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 literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/rounded/rounded_icon_48x48.png b/Multi-Platform Icon Generator/sample_icons/rounded/rounded_icon_48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..18464fbf355378ae4d843abe4fb231ba337d48ce GIT binary patch literal 4303 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 literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/rounded/rounded_icon_512x512.png b/Multi-Platform Icon Generator/sample_icons/rounded/rounded_icon_512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..42932e1c2ee960a9e9e3359bb028a551bafb0de9 GIT binary patch literal 24473 zcma&Oby$?`*DibyDN;&G8%T$MbSu&&-JpP=NJz&3gNO)HB8YT%Nq4EVbTh=z-8IzA zzQ^bJz2AH6{T_RNe*rVsb>CO6b*}SVix5q91>&2uHvs@3R#KGH0st)VS1jNL9{A(f zbMyiL%q^7UWOY1~c4i4obe~<~@8fGyj5?ctF~OQ3i#;r!DJxPH=qvg&>}~w#F*-Ir z{-oNVG{O3t;kVcEuM$*v*jaX8vt+Q*%{5x40N(@<9@Sy@?Ha+w;C`QA$^0sxP2n3N8~PrUp;A$W1#O8_u~8|r5D zTytwEAYk6|#wh^w%ODPA9Abxa0PLRb3fPkX~@2z74>$m|s97U7< zRl>D*u%rN(;jO*HR>(OkjvoM2+}ph-#>bLn0$PiqUF|b7o|sRa?73VmGjAgy0BnYl ze0JCX#}@$Dh?w}3Hi+dA_yFLDj7o=go7_MF0HTD4-M9h( z3w$Pi7(uuUra3Dzs>78D8-^eS0QK&B;Ts7}w!VW9pjAXFi-y4mxOD{qWCTUCXlBWP z9g;@?P%BSTSJ(UU@?4{P2cPm-zs6QNedU=vBehY=#&ivD?yvcWfbmk{dW(wKF>n`& z4Zs|n72g%G0zFJJ;N~${8r;_UI*d;Y0BKPNs&%oPE@wJ`wri}g3!mr#K=5QI4#5SH`^M2X2jc})Y=-b z#3mv#8eoJ4OICt0)L@p3KKkp|rvf&9>b{rN{ldt#_PvF(L!m})K!io%j1joPg*Xis z87|pgA=87VSspCSwA0j(P;KrSm577#Lv`pVL@c5vFr9R~qkMaP4OMj94~ zjY6hK`zM}JIQCjQ83Ks!^x($e_yhO{w&?dWM=ex5fxTFO!peFyX2K$>a{B}Ak;GWA zr4OBYVG!U^R96}|e>?!VeNqSZcbH@#bziUY^r(P5a?58d0C;Lb6_rGbtPFuP^&-kx zpq2&6q%0)x^K~h z9-I0u%@EVdd6jQK1>9KCZEdrJokNfOR}LIsFHK7Z%{eS~sua%wK<>d|bH@J70KkIL zkqmgyvZ;=GD{7ClkL!d-((=beyEBm+u>!1t)m>Itz=tCdD$84lhtci~*^$BhX9Z!E z6*P~RH`tG7qfz4)vHg1gb>+;*Hm>9Vx3=7SM(stWqf<7e-E)ba;Mpsb;n&tIKDo#8?R~6ZjzThUW7B` zxdngB;vbpLT!hJlL2Bhpj-_5$w>wVq7I6U@IQYR@rDl$vjgsJLfn9V&B4bmwuB@Be z_<8+ETjFY-$G+Zq9?MDq`!bK3`nJvt_H6&eN!Y4wT7R5wlj1dTA!M$3Wj6P*2KOZV zd;sghwrl2zV<&vSx`3}(QmE%kGH{3P>U^kWNkN^EGm@1U%ZYZLZfE+$i&os-D*zAg z&+?l4}QL!Wmn@(6qUsFr6#5+A(uUz%4o7|+WbThHi z-mc8g6ch|OaSsu#Gtc~xqW+8GNWSaCW|czm|CZ4e4aTo=oOm!ZD!bH$P5_i;uBJe-%e?gFrnIT{9;R)!p- zvO%Zo00C%VUPWAcg^tVb+|px=Yqu6_uRQ(!4M@9W0%UFz<~XJm6}^42^3KpCM_bh{ z66+>K#Sk`VyyEM$$L*fy7{fC^zh?%Jr=WTNG%HS`;`Qfy?{fLhDli)1ux8zsfta?|_Rx5c^xI}#-mgH`7{4@`+k1{;> z(q6$8f#a>=>I(P_xEe74+t_uB=Qzuz^VUAr07bj0 zigt^^GlpMt`rdcDj!XTIYEAD?@Blzn@<3NckhFbFGt(UYo{A9o#vk;>K7hzz)A`lo zNcH<35Xm_Qq8%lXCk5vVy}HNaN7CLiB_0&|l4O2>-f}-^=fcPb{JazB`uuZgW=O?yWp!<5B2k zgk>L98_c5T#Jty^ko^!o_;kBXn)(dO0(8<->dC5^D};-0;Y@p<&)7e|-WiHLBxo%^ zU*sWE$MTjJNyPa?gsQ7isFw3-c@Nq}PUms?9+9}$aFnNcqlO`P1WIBwfJMvScr}EQ z5KDR`EIE9%iLr1<>N7%MbfF7Ja=vt;e4BHZTmzee4WhYHOWsIcKCN}BRmRX^Y5%vpTLu=Jb zG}6(DthEMvTM^3&&)?mmv@zr{&}w*;^GxLu{;tpP!tWNkIKJ1lNOB~@e!jFPMja@? zi_2aNKn?c{><}nUyXn9Y18*jZnTy{7PE>ju0+#b)%s`JTT0mObykH_PVbqsi$|>4g zJ}f;exwDc8Rpek0HF^kXrGdZv`g%?8phlMP&04ke>%vy!FcYe{4GO7mP*qbdg~BR; z_AxNdLHxrjtT)mA{*bq&!wt+_g+wt z4S#y_^cS0i#QUqO7<2`KmIG>;ENtEMqlM4p+s)2OvjH}A22f1ahq`DLgMbj zCv`#_fC+kd99oC z46F5L;zUlFK&m|1zQ=xQWo_!H0<$a{;tw5Yc{G1@v}j*P#6!4EDd-`PELq%7%hWih zI6A|PvBw3KuLzjnd3A~1JC#a+!RONx(^Q;gJajpwvY08Q=AFn>-Y!YB-2#6t*N+Ja z+=jfS4I%xqUf-1WZsm!31Tgql5P-0;VeXi;(2Y|iQSXm>+;j2;hSys{g$_aO7)h1s8MBdbMj-STuHZ|^2BCZ zlfvl!KD=l~$xnxq@c8?cg4HZ|1(hn*fSG8VyU0LREiDpGLn;#nUUjO=PBX2s)sxGc zRWMqNchlWw^07Ci)Dr}qdk!lE1UI`GzgjDQLhZ&E=uRbwBkH)O!Eadpeq(9WI(o0R ze+==x_oW<`g%KHuBIh`atD~c>+hW^G;3`TD?Ip^a`bD2k$U?SiH_q&M2RrtLvL(y5 zMw@o-f8`^9u`2=Zr9b_HM2=_2Co{g&C~1+J~tEt}5XA%2w|0-?*m)#I;!mnDFQH z6uWz{ol_lDnO!-GZ@o40QMG=Hm8OE3B|q|79SzKjau5j3&9N=w$eJ~i6WqbnNu5&l$6wH)z;Bt_w7Tha00~HzK<8(9M!TI6v13< zoN~8u=1RV&_l_jGGgR(E;C#6qz2<*3;A%fmzd|rB`i^idGaXw=X1>Jyc}Jb9!X`L* zbwtV4Q04=6F|i&a_9%U1ujz7d>e1R4R2??TX<%N8&~HX&YU*X`Z=R7KWU)ohSIbk6 z29O@Ci@%F^THV%!Bu<<^Jm2v;eCR<0b(>|K?Pdnrn38_~3q?lnW;ZlyHx;7Pty-<5 z{n4H6I52dvkI$;Q;a&nxt6&X~)XabhSK^ezq~+kkOt*}3B2#&BXMI)z60gMlA{9aR z{JQfS_V{N^w`xZzi)1=sCu=MV56sR1?$FCpPoGDWoOGV;^GAC~N&e}VMm{sGRRl0o z%wYtUW5Gb=DEAp5Z_QooB`czorOVYT{%lF`BjdF$*AjKW>hHyfO2vTD^lR1+-wc_5 zu<5?`SQ4D?1f!PF-7Q~GKDpJEC*F1}cIIWgxL5O4TiC^yQ|vN(aF>j0Y; z^lzO0aci>&m;thAKsyj^&YoY%@&=z9yv#}s5%n3LiDVw9Jmhu$hNM}$DIi%AmhY-& zr?Jd+AV6Et;T8$$@sk^@L<|I=zM{F(Cg;zz4(FE8$XT~+>^#4v&EtK6zKvacI&nP( zAeqbjmPRgGncV2r!QsQapZ2&+M4fvp_QR1Orey8(#VcbRHx3RMV&NYhDX6RFm(ArG%M!iPwQm$P|kZ(oh{ zzZzV+ojQomJCJca8ir+Gv7Q_5YM%L`^4$*O#tHV|xzKdavxA?#Cs~9hD{!Eo(q<*Y zb1NzSCP6D@47+)>yzl&HsmqPmZ$QVy*|nxywt1pAaW)ekxKY+z92PI`I~r9-(d4b4 zUbDmq3yAc$dw2_Qstb~CA3P7^O1J)2p!-c(IL}~x$CGYOPmrT(4J!Z5tzR{W511I- zMI{zfdxY%4y<)06Sw_Hx%{McMx;=k-w5VVX#$dxsJLh_BT@$N=iK$Y|m1Y1-6#q#n z^+4NEHC)Q@DaZ3-NtfKBnhw$U83p88Y67QNuno2n;>uLp1m|Qu``Yp4ub4|XDfJ%6sgI`#V!f+e}0JlWMyc@jgBU>UG9?7Lk!r>)+=tcixAuqaiYh?FKo~ZQ};_I z=Y+o5hV^9UU2)4Y)5djM=U%g)x(6xkD2XS&NFGs_bht;3paNiRo?1Ea0@At7zQ${G zAjJ4aLE85u;H3j z&3j;J#|v)k@H!X{36&IbcP%y~A6_3%DQaQbf@b*B4Kt7dYRM9Q;|cMhHZz|;D`jZ2 zYUP7QWb}v9BSBlE0cjDh86d***?iRn_yq zO{fiDVg46M1zB!xzO&FHB?afg{F@<*rzV1Jl*4Dn7d8F$>qfXu4oAbIf%5Zrj5S+F zFFt3DtJ(a;3qOgG8zEkJ;S|AF2cqNGN;J#>ZCB5qoHh+#4VpE6NpM&pcCo5hBFM8n zR8{BBB8~;zmz8%k@oN>f``X$?I0Pv6hbup#t?SxCgN&0)uqLg7R@Z0=V2hrR(1AHq zwk$4ntdCOSV+Rg}D=ojZTY?)2QFYZ0Gma-tK;FwGqox+h_dflCWI%g6s%&D3=kV%J z(y=(P*K}P9z=`y@R94&{IO*&`OFje;mA{cs)%787qw~(|`zjr zHY@4(43ehob;d@&{BG9H9eUH`=Olq5K;gmvP}gY6J)FRx&bAQrPPM39jT|L*WBta) zQntn?cPUH)S;jEa%?kKux|_iv<}4%qe2~KXHN%9Yeh;~k6~imanz0D};hu>vfB843 zK>w-o63Mj0J6JxqO+*9q@}nXXJewdWcbB6E|W0H%TLJMdM&tCW;x~*5-6O1Z9CV2enZvA{lL@yF?b^Y1P1P_c8 zEbgWKWY^D+xlP#KI(8ts>QXGg41^ZCXzT7Y#9P@ckV^UnkBn)O@h-s&C+ILC!Ao|F z0SWPSo;S8n_ZUPnUyN96(QlCu!0;mD8--ENUD?grdVh&M*9>=7*MDmGe*n0F{WZ6% zMkyTuieCN1oL9Ebwq_Fcg=xV4BCSn_sB5s3=t7^JcI29|m?`lJc^7B~a?32^sBKk& zmf-nb_&O@AVx&ipO=)DJ@kz4J+@`CpOjN(5V^u$UsxdiYHHC$7XXO2O>9o>kzv*>X z-55>LyvM|;$0F}_An){1>qB2aYS+4$qKorth3D|s!1<9PdIsWOyT+@YzlFWtGJl-a zFPS(L<~Xi7I*`aNxwENa7H9+#mf4>!9djHs<{V~r44}h;Z2=CW%Vy&OdtU@*o5bkw z(R<&HbKeNZxYctQEws)R8TxGDo-Vew@sglGgfonq?OczEbJ5?wnSS5*(E^`y^qZZ! z5?4UCR5#_lo&Jw#fcze0@RRv%^NaP%xnnXlS9`K3kU)D%kVZ$soK9S5#5;zyiXAEZ zfEDBm87zokIZ85@CA*2q#BCrOMGxL&XUo69?=BT+6zbUj;;>t!1h9^oC@^Bc2D$=p zWL#MOLOS5^F60p`M@ME7T-V~1jc-G|290_ulZ&(-v8=sIJKg+HJaj9Ybn{dzY7{YoEpceA6uZ` z^5y+|hpfYuLZe>ozzPhf0J1b6Vpkr691=D&z>|&{{a)SZ=txXbcIf$=zLH;#61N}aNo5S?Npdrq1zwVUtXKVf6b6T-#&c9=(^=}DZZLrwLFPRLEl z0*uHQ?n0byQ-U)@|HQxQOZ3m2oE)osJ;E_v!8&(Qy~nKn*nKae!YpplEFeLUPSe1E z@XctR=q&VzLGcDN8O^c?Qmn5M!ym$WMdHDwr{=2dXuo#Ay_}rX#n2s7Q-)dC>Z;D< zfrb?wUrI}vf<8RXkPkO9P?G)i5nb+0DicPvvt=wR;P5nB{~rzkjB81d@+pI*K%FOUcLH7A9xKftLuCY%5=KwT4U3>_Xg<1<}!CaQ}QZTjJGIPZRxR4g4F03 znrDF>h$}zZ0A}B}n9d)Iu9MOXhkGB_hBRMna)*94wtKs8Gb7~ipe7dn$9~Ncu`!8z zmvfNV^Gpg8_37UH1`-)=wYZ3v?lUAZ`)C_#(fQuU(2Fm6#R)dyzdbmci*GYDjd~w^ z#p5<|&HD6dcYG2e@j_Fi$?UD=wa4+`IWB7T&wPxi!Ky{(x0rUK~=?uo~g96FhwJ~=$LpSDe3sbAP5^GGG#6g*Ej8$4$`-&c~1MdyI= zt6SWMqfPh9^%#^3uovqW#7wBX+9xjg_xVMjuKQVPD& z3tWBc8J-hnti)&MK60vtZ;MW`9N#P9Bv(A4)y=$kF}CqVikq!g&nveO)b4^{I6z5H zi^1(p$+Y5=mtf$NDd3;24SE!HeNdHY1i!wSJ$eEe2iqQh{Rl;!{1Svd~vO+ zKra7ms9LT2cqnF0r{07hw-7rGrwA92kpp?eji3_qp#Wd@ENpXg^P6>|VLu)09B?ma z)7^^G%$t>U^Diac*VAH&wpX(5z7V%JYDgdxcFfp*E7@$S-;mDbD|Ga_V1lh{qX3|w zrNYL#^>%L5miA&sM_Ge&a(YR9|KK3q=!8zovsZ{>u7F$6VJ=kJ)I34Q>7w*&<-3!c zp=M<<8Tve#v&KtotP1O?l<63Q@6qBJBPK<=>#7Uf#3cY=cc-RAA43suFWmp|Ydx0< zi5{(X(XY?+#eXxLAsEYE+DS{u8o`kLUAK3mrVF>ywO>_P+~=dtu^d|HvF$Q;kl7Jd zE4v~9;B-l(KEqB$Mo{&Cx)+PQI3FsupB|DVJ&I-CoE#8YxhEvq+tn&Um;srna^Y8U&yMs*0AhaH6bTI1$dSM;X(v?C^g_2B98TnA&9 zU&osIdMv)J1glj`)-s)dbC5SlRdDfS*fc%Q%=2#+6?zf?`!eQzu zK_(*zE`x*<+Xjy0yNTSG%B?(0w|!2n-H=;^3DG3e9JEK`$5@~Wmo601GI0y>es|ASU%XJ3`7x` ze(GVTYinozGe5!^(Jit%S+>vNXO1_e+@VD028VoAbmrnv;)5z2i~G!g#WIn*=d{AyKpNg*Ez@-SNRCZHGf1JE!y2|eXIy-?h;Lo#RoE~LCDm4!Mb3O_8Qh}9n zH+KN40pLTO4v~i5>0A2M+#8AT6?Cclj{OvqNkn8*at#i0deJVdR1hG)3jublK|`V< z$ubOHa+qmi}}!0=m~LdAw>V6@6%aP{s#zR8a#v) z7K2l1k#P(+ny((VY z?kTV>&4}g}Vx@601AzYdD!Of%<_3zE6%y#<{!{~Kr37bF`@YSxd9)lZ&B_`aL9dvT zl}vy!XAd9lrY+AltRHuiyPp1ett{!ApmpA2qi(!M%4N9uvrvbf<9RtnEQjgG_ix5> z5K&^TPZb$%HuJ@B=nNNL8*86ukKRC+rtn%Jgj9>0ziiGN@R+Y$xoR>++~wDG(j>@ zuOA)%Qm?cYX+Os^V>y`R#rei-{+i-IMwr8E_9UyE)O=yy9_*u`;y+MH@mY|EeQuwz%P0RMx<(Ze})*MSF;8`bU}oKpf($;oPtQs->f zVn+&?bt3}T&3}pA+DlJ#jOAR^?S4>BID=XR3se@gfe&L3X0A+AydxNQ#bG6!+TV1X zr5*&DtxrY>6&tRA_B00cONhPJ_M@J{$4!nsUw%Ed{==4VejiTNIxo>SvNF0>oXWN&|KX?AYy%zaenMv6A`h))T(p`8z}jGbSX}A z6?yITDW#zy)-F(bsrrZyVYxujjQ3+4yOz=$Xm!KFQW=b-tHzj+h;4sk)yKrptco#Q zVyoHrH0QtQ3nrLnzFae@&uPpij%QYmRzz$wwX&~6fC;a|s`Ln4bi06Gn$4a=2*RI0 ziVCWVoD>Nt#cgH*X7D5d1c%_}XePUzWxnE2M)htSlmF#nvas!N@E*M0eD>IT#m#%S z@9eF)*Q28=ug!PH52hO|6N@i#oxsEG6gxo8m7T*4pRCu|HS#;^W~_8>8>rsZ*XI_W z(b$6uwAbre<`Q$p4IME|PuFVznPjl8uBH2*v8fY84onk->?`-3;nK%!O#&}Mcjm9m zeU~9P{-n{c+tPokn^+Njx!#(~$N4{deUS^0(FS1$0hkAvX{2!f1rfj&g#Aiql!$#G zMOysWw4Bc4@&S^Xkx4+x-F?YUuH(%|s9ND8!uze+;I3%BwA3FN%EZqCNprnSs;LnC zs)dx6HRR-!gPll$%GJ0_z@lu^KRFK)@{!$Zg}`NkFSr-#P0E2)@v*3l*t_ZLgN_EQC>E- zPYJ?~>biw`Rc5*cI(0}#zp_AlQZp!nnCtpti+-t@T6cH1@*na?uiL#j%E!RTkp8IRER!#UM_r!D0d{183 zu%73ew@A6|&P;g+1qYkE+%>he%{%G&yl1GOpfHjo>QXc@UToY=fbl+lWwt@~BX~!G z6;|V}>1R9V)2nuk_Hc)vJvjS#4iFfBMn;Ybjhb0Qn;JM7xU}Cdre(Q7CMl@MLuO`8 zC{%)&PAJTwZiT8;eh8ybf{dl}R3qtJ+$=^5ts*oRfbOh2g=2f(Bmmg%JzROz{=4Xw zSxNF4%1c+eVeNE{2j$p&{;~S))RWTY3yz=<9~9x#aebile<0;G@4jf++d0X@U&7Gb zac+dK31V-}pJ2?xCN8dG8!s%>7{4jp6tw-r$GEX7tJJh7hTYPaPD52SYp%&hg{IQ| zVI%Jx>t5nkt6Lc%lcm(SJHjrw^xhXF?V25f46Y&|Ltr<-LuR&$0aEUW%iq87kJF3( zsBT<)kj-kSizDXvDM|aBG&u6Gbyr(!OBF1zr+jn^9dFZ@j0CGvhz`zoYI@w z14uOYO4o}7$#;#TzKy5TcH;ubY~|SdrcS1H{U#pq$jKwosBjD#(E(qKSq1vo1n&eg za?7A^Qy^OAV7#MPu0|u!lYms9B1vO{?gtbx>5oIO4*yM<$lV@IMIUkj%XfxwnAaM$YFsS9`zRER>?afZt}*l4xex2rdHnB zF*lfDaYzj7evdTS7yY7kT-81y)d7Kh1&xp;NQ@Aq4skc?8b{kNkbcdM5w~asvQv-F zsA|IDc_X4I+h5Yl~-I4IyW`{Agv41wS$Z ze;ou4DNM{sW*f+(jV6cL(`B-sgiSt&pKML!vZi>xpZN%K3e+J3#HkPB<;*RwXnxqe zwuCi;i}fIaL7WY$G)nhmGfH(UPC<#_1B)tB+hFDuO-N*z3-b}}(g5I31tcMwTO`tO zhD=if9;!S)=g?JRp=nzQz+dJy%Hp80k4pyj1v@4Z6l;kAbr35?+>%6YeAKL)N7W?? zNqHv^^4AecFf)Ic35D}q2mz@Nrc5_8N(G5898=# zv@xpU?UXXb|0ci;#IvNA1i4%xWsB?4ksy`?1H5!=_uZNJ?cV_h6XyQe(kNu$c&WL@ z&=B=*TySvk2zSlQlbShi&RMUuy{<2i}QA)>bFYs&?Dlp5>xm$?*l$h^z~U#DrY_c3}L5s zY$F>x;3=C{(yz5k1^BDPiypavX^AJgq^^F*>qZ7g$IdRJ(J`0TuV3m97aCO2c7vEX zc<>M@>WNzArb{i=kUIb1(0so7U%4}uoo?NoGRH|k#z5@0o!Y34Y}EjAEUn~?CJ*HM zf91#YdsRw;`Gqc`<>@6UDr%I8z$eDczdNG5va_?F@69!_i;E{(k^SdsHQ>%k zFP+PpUMl7no)Q3&MO@q0v33iGwI)NF`g>a(_4sKYmKk9c?`?o0t?ZlKzca51od?iH zewRDKMvb0)-OLvTpQQB5O9dUJ2@Cu>jsoi)qP6sQ$N|5iCwN1wQRyXfah%@E72Axk z(UIJ$O$b8aT5drB&-%ZQfyQ6h>Uu}URB3wNs+b%|CK1})^sTE8humtygKgu;SPk|k z^U5UR$T*Y2-dFQV;|Ir7JtN+ex#@Yzo#OH{=#g1M99o zp6l=R65n8xbznT_7Kb2$e08{bzv0MKus#8sBM1pL3w*I!3t2*>5OsxoA%C}PND`=* zy!2fkycZp!f3g(h+t?1KPVGBJTj*;I1pj4He+S)+X0yezEAfDRRw z)6J8QQRTJt@hXopN|p=w0NJWHcCo-Cv*C%vY0U$^JJj%zwH^vm@mXOg&sy|9nAx zGUeIrF>i*}RVm&oC2!TnU1Pa>l_Wh8sBn1%lNLv79`Fq=m~=Oe%lT93oQGwWyoea9 zN<)54c~IW^PYm(2FIhaGBf?kL!0RO8!$=n8R<^rtO^HeLaFckI?& zh;6sVi+}cTg6O0dE%87wWMgcTYMSan$ytu${O!^F5$&Hn*e+F$=Kb5o0D@$!aGtHQ z(U(A6k%fef_-7&k_g8H5moM+vQP!AR?b|>jtj;VxfmR3fKQ}>)D{`N0U48+(B7z}W zqQT7WU|_F5MKWV|Hn&P#K6?glF zZl^uf?DfFf$AK@Z8KrzEqC62X`WXl~8hO`=+-+9KRVYO|OP?_T?^&PleAe-?t23bk zXN}=wDPeH@WWM3)mrO|@#Yq3adw(RS>LqJTw?^;fF0~npG`{q!KX<^^h3htG>twpA zi92|}`@aZA&i_(rrZGev?G|kn3bKLc)Vw^6GicOVi|gWV0)B>?FK`apRB|a{{sR#B zd{+cRP*x1U#la1_!DLVkGO^M5%Wf0ey*}bf1YsaLgkZ4DgP{eNpKJ0gAkHG4r1%fe z_?~w606Q&1pX=e&u2)uWjI%-{qZ+4PmzqV=Z~G;oO;>d*Gh^t^kqv+$U0eAA08EpJQor zZK!=dbO)OP6y%(AGUfY%2Bw%Q-iUUeI?Y2UG@opTeym$uT+9Q=Ys|(XlxY>U;g++qv;FR`gCizjgjr%S!Q{q~n|fEx*-`jR<(F{gmy;(D;AD4#79fr)IX(Qv#LHl&fd%J$glQq{n{pn^Gb$5V;r@ z@x?eX~ueTEgp7xZ}j)22k=~LibgTG$v4) zBjGQ3NCe5Oh@%~)KPdZT&a^(ltYkt4vmFG!GGa63Djbl?-VOt$; zF@lIaE$E+}+OvU)TjnbF532enBw!;TE?n|d8m)IryvZ#f&iVO%uEs-gSI=XDn+>KY zVKKk3T@Z_A>6`oN=D!ZC<1t|^Ni0&h=4tOth^%8k(k|L5F*lDt;|(H45P*8m2e<>d z^p{>((&)%f?oH zC<(Ju?5HC7=P}jx4Fvx5PBt^Ira?k|DqXJ$4@0(Et<~(x2I4(eRJ@^;jAny%KsHFTXSvr2twbU-+@2t0QqVW^DTe_;rBRw#28bUWk_G! zg^>%9PG#EL&iV&2Rb@Jus6H4Z0ljy3^(a~vNS&3hFHVX(_mPy0jJxkVL`$Tbh%c}}@~G@|r}v8@7**4(^=Cgn z+jV2-R@)Ys@NnNz-&0GFcVGCj)MPaKM1hp?ZZ0k^?(?J7zWg_11>=Rvu^iOsK3?~I zMBC@mr@74WApdL<*HbaBwRa|gJ= z2ud6Bbb_0>MvX{(OaOi{T)AG1;bF^rtH0ZNpYDEh<>BtD_D#q$kO6$_Y#)xh?XqC>_05EWYQvn&og8$7ThPBy+s&1K>Z0RP}}nR1XeZ zT@Net)h9%&f*2>C2J9wM6#Yf|PnmC}f61@z%Y2^^@9|<<@cG~iM`ar~VgfYwX7cdajH?DML4wSUT3L~eDJ&khjl1V6tsDf-LY z3`)FT1t8=x@7D$Gc)}H2zL0QQ>0kc!%ONs8)Kkg4dBSn+r_}j^@gvDSTUC&mcB^Fk z8|al#x%&{(p7rt{o{%?CynC@TN2P&bderRnzHD^*46eTewGN+$Q-+44YjZ*!OpdU^ zHg3R4kOVLnc_gc8Mt`eL9J)?Tp6^(k!{Y;Q+~{Y;MYChpFcj@dKcraw@ubvjvK?KWQv{*_CEHH$5`WnR$qS@8Y6LZUvCVo za;ImYP+4TVx4#RyKkiG|4>}C^Or8(ADFxCqhO|GzC@@i*e?2H-XYhn{Ul`=?<7zAH zJiONu^Ov^@=l1XTDO>DBKdami?#7S_Ju{352h_JS_Y5D#4W*i@1~~0XDXrPuSsyD? zwz&-o%&h@pK!WFPq{Be7Oeqw}p1=JkzlH71DUp#V+9uSn>AluKQnecz6L^1JEzVo< zJ=6Y;J(~wQ_^&-u&}^nYnl=cIw|6*%{FUvD^GE_93{skO0yci0-WNc4EOE0ktp zBIQdq5Sf8MYlyq}L6Lq_$AYro$iRT`gE7Mpf)07-3s0 z_`M@hcIepqN|OP<{@(}3vS^#+5iez`HFX0#; z;K`j+WCfl%A?{3H-u^>bdQZv*x(nvcln{Yhi>_6YxQ*}U{L$7Hvpms^E_<- z&&!ux65okNJJvo8P&S`qi#)=!xb&)GO2s+~gW8j*-J!IGKX}g@j+E>6!kP(7J;GcY zd!Nz0{J00U2!C;SIWNq_?epn_FZ=pLm1o00)Lnh#7>rNbAs<;|77SNpi2v$tlvn3Q zOLinO9-t-m@$+l`E5h&K`Q)UmOf7pV8>Z+pCbh4@27*ilt`0y#gx1^zsQ;x)B+q7A zf`d`lIT$rZzg-_d4;%A{O1bd+5g=k{EvdUc|8MG_<)|Hn+@9Y-p8e%gke8?76extW zr3ug-{G&Yfw|~KCg+#3sARJ?3U?R?Cy{IX38*fr#YS!@GwGTAL5<*!10iCfZlTX9G zVEY6WObK**@9@H*u-%RE-{Zckb7Tfhw$1-2pYHDGYm0UvrR=~62p*P@7Z-zFj!d~= z?hGhQ>_+(287t5p+fs`qHO`OwCWb{mWYU(Z20ID-cU@KSS?I-3?nr6|OU;C{747t{ z+SZT<6KU?Bqc!{a7Ix(10pGIa#&6d@(4Bq3-xFl85O73gq4*ag)Y8%lpsM}qvUx;n zV0cp4Jd?3TFay*wrked{5BQcWJ3FHyvuBYB3mASG&;}1_rm4OdjOA)L4$Sy+vO@cK zyv3O2Y~j>RS^U#o_bd{z14B7<`hwkuQp)C6fNF3R&?*?gB&DV?EB>w8(f#zD zq?y9qMKEX02XU)l7Qy0NVR~R}yV&)DLeS@ERvSJP<1{kNVwM@gLo7W;8{55GnJ(D*( z_myT#Fw0;;S8-M-9o?Mjnbe_3mH+y4P{6nuzdo57T(o;_?uU$U@33dl-Ou!sm}bI8 z$+-Rh&WzZ)-5fN+GQ!mRjZN5^UjviGxAa_k5EKFcSxjvgSO|Q)b4QSAgplod^tAh~ zvPb2fjG9qp4*yCr-EV_C5{4Ro3RaFmFl{7e!;+mW`IKXE!`JJhwCW*tJvjNhla2X9 zkB{r}V^VTipiyk zE!EQ9^owK=vz08b5q=>KX3MB2j+f;8?n|U+YBSdyb6~UM-uSG0Eu#Rg5VNS)6<5=! z<^AH2;WN?e*68f@kAq@*{H-Cf?FC~+sfMLm*?GU`(S6r6Dv~Z2Kevuwi(Q`iyZE~= zBOsiEE`#%NKYm@rmpDY`J!MkcP|NO(bpn$~7(pj;_qm>)kndwF9?lh3ApkcK2+t{9%`cSpazR-O=pSx>PP(&i2bNft-D5gO(OC@t56uY%M1D& zAT;r6%6WPp&J$U~BxuD0RvEBVs;5bZLH2KX%VA|{u!C?^`&UC;jIdR@=ho^$6tvM7b;4hXe*qrrYQ%j*&`4v2n-mvTa0SgN( z(R*mUUxxS#*={p&B2#PEeSh|Z&i^nsFiex4!D9Qshc=W+B{kLoOG4c0jz@_$(WxX^ zm?S%~U2kGSyBAGno-dfes0|t#nxM|d#|dg|pJ#qgOhhI;e*NtBZPFnIj~RvbP+Sr4 zP4*$`WO{lgs$_1SwfR2|WgHcOo9ke0HzRJZN#jm&@so9P`zK1c;N*qr_rW~GS55zq zWJUNJ53trhsU(^z62&0xY-Hdi@%okw4>N#EfA?$wk=n!)-21)kl(G|l0Zde!eRmhS z-$q?DQRniSg8EF{e!4OgRCS-fd|6c8gnh*=&75^x@QrKwMCOZM{tJnI_x^iz`SC}b zG{7&JLFFA?1uB7CqsiR3$`N{wCyeNx&`tnct7>Yof% zc2O_Zo%xoL3rw17(HwR|bj+KvH`^$ zmdb1Y9LAPDUY>nj9_T|PC+m27X_x%Y8g$_D62^xMWW3vjtH&4 zRmv~om*a1=NAQ=ZCuQ;P|b8B2e<8?U*}M$_5YmZ-wu=hZK#hZp1BCzJ^chQs@{%N)%XKL@N@8hOSp{X|T9eE${f2rT0d zq_=1troLs(lBJ}*P!hJoQ!@ptHfn(yfPVYm`g9=gJ|F6qTZ?5(m3&9+d#l~cl-eV0 z@7#G;Wl5I^9h)}|2>&Qxc?l{{#eMZU^Z0sS%G10YoIRk+l~NT_KO@%IDqwe5T$^uR zlo9b_k5kgg{bHiUYli2G9W^F(`mpSO6>{c*PiquG2kQi_52oFadCIQLq`w{asegy7NeH;% z2M<-S7_&bnx$I~e2+YVnjo-ZHtEQrs$lLD6R<3L3i{r!SsvDR5Dn4sZbQun?zmG(T z#KLMlr`1s9q2;#qvEU8}^Z~O{ug|-mtdCmhaN6i1m-h=P?4wML*@9?R6JajA+P=%z zbD}*{pOa!&TGtbxzX0Ufe+qKP9Fat*i=`VPwOQ!HLt;;H-+4@Tw}+uL!`T8F>`ELz zSqw{NvVi8+HowO7<;lNkcEwAA%unGXIcCzwcE`4&b9v)b$!ABBm0sXk)!s~Vk3ps^ z>fT?HTK@z3xX(u(H{M-wB53kVJ2Ds;L_#sg4>1FFsW0MYI7YJ zFuJ`|j4h6jdVW50+_Zz){SbGS){{l`!_#tK990H0Eq-`iqq|iX78=}%iOFthIj5)l zQTz67UY4h@Rsbec#I|y9JcNwv{6aG!{7L>^>m(Skoe8)SkudKWh}^HUBxw_deqz&D zR$g{|TTmbUIUJ>ZTzE!{EKF1@H!xO5CC+S=iirL)J5XTpUeO0#gTN+L42Dg~l7<~Iy)CtGUx zaaO{aUDa>K_JZ0;j}{cXRcT`A|0KytVm3-nToC$zKOf*x)~o3M2B8XTuiLiNg`x1b z{*7KAEQqSC+9ucO9At2^oK@}UFNW%XFh|(c0HV~k9O53 zm+UlsYbm?qeFXfm5W6J%5ns=}=&g(EeS)^h&2ag{XdK(owmW@xnE+SGev!LX*5gB0 zOn)&M600!KE-ev~pgUAG7eZCQoj-7ORyBTd+X|I^p&Km^fhl4c(LlAxY_9g|F*jfN$^G2>ue@z&n2pB|6YZXBVPI`r zIB^CgGC9p>S>eZ@e`%>?sIZ1-H@uVu5wTAtNr;|FqxpxH=O24`LhPVK-a-istwv}CuugbOM#pdWl={syFvML?cnbX&0@@Y<7dHpR7DC8&AeOG;Wc zTw&Hrn%uofb9{BX4w-ZYp+4i*W%z=jyh%z+NrB)&T5BSk=J%TVg!1*2Ud4?&JWp-+ zxeFfM2qE#bQPgY7BV*Ou+d9|pyp%zOUN+E!s7LpB2TJqR(YGDfubh{coVj8ds9D5d z@!iC@8N|ooYB>a>cDYg4PrN9gt!6-9saWR2Cs`6g0b+(X#SyU9hk1^HZg)@CpzN2% zu6vE8e8f0Y^?7se$X+=oPpj0Gj3qoWziW{>9EodVF!GF=54?3q$Vn$+ll#OEyRLCX zKP!f*$d_@^E_vD@MX&|KS9~Myx$d-^ZKXed_6Ck0Eo|GjKeDa=O!fU4{V*2z^);gSYYGC+1?hms{C<*{kjAQy@N0?)Xh=&F5)bB!L7f`d3Mr___kDAPorqqYmdP`Xi~tF}h4 zdt4sLs15<8k__PKgE&yE`3pU_XE=rmJZscpafiJzgK#Rw0KcTV_VZ(x(`C9As}vvi z9f5Z>M!Uypi#_r#2A}_eUXoyD$z2f!OY&|%Q)ZNr$y|{S-^RD%ETfNVLRN=;2 z$a?j=T4xA_JU%wEVUKN_$zysL2yzM&E~{_1ARp^nt*`sNz|5KR>=sm202jG6{j&O2 zA|&DXxvBohrwlumks(c={qgmxgOq2CqJ0=zD-rLy7Fu+ie%jfX*76aBuMIydcL(x{ zk~T!?Q5F;Uaurk35t=j?SBvD`*MzhLYmUnHt~2RT-tj*a&UvkGr?iifo6()sCZ_R# z(>C)YgbA1jFTFM9|JHD-*=c-Gy>B*G49kuG-x2c29v;GBP*tWlso$6PBk=8Iw7TK% zu1}nqSL>wD)_HiBY@Uk#F@$L9uc)P8nr*ciTlW!qM0)z#%jTPA0q^dMEtMN}l+$0N z2qlYtfeq$lI2HKTZ7j@XDL=yZiK$6a^-{OX)9|&wpmHvE=Aq`PgN=a!AP#M3CtSd1 zc^9UWZq8LbE57>zy%4mU!$088hllGpibn;dD(jdSH{SnDYY)|;*xh_^dwgVg+k3xY5Sc#`@cAm)xNr^7&wn(c?pkh!oY6R6YNG=E4ZcYzUe|aT@~PFowN% zGqFM=7iK0AM$-?A(vzaEg3& z7`5jPIsrw*+-zz>iTroS902CvuZ>xK zsN~$k4~3YlpIuZHLI_eh`TVMozbHksJYF~uH&&(~BlL3q{UdL(*6SjHd>1gn~M zN$h`Rx>?p#S88-hS9cGCQtRzK1i@1gH2NX!Agqz!vxG@j$hg*D>mqK4b6=^hKDddN zKihTxy^uz-E@;8%>1Ev&TR(RLUE)2vuZVYC+#dGwy95g77W;unghD0oyRXX^>(`#L zJn%aIhPN{(L0==6xbe{VKMZ;2%sHB_y%GnFZ*KDl9YRVcXU|un?mAiTPriOM12+C% zkCfl#fkJns5UNQ>`vHpV-p$?}iLZ{vfQw#q))5PxH{XLbaLLyXj|_(KAnSkpOMn9o z#qY#|KV@IGbFV34yB5|Q?un90H}uVB281+ngIqc-mV;ht9p$8q2hzeBf;z@j*IMt1h;(}!2P@5i00T%OPvScTY+k;O?>wZTS_6>3R142bR@xhkJy3$nJ0 zaRCDXtei$AoFg0m^6>3L;6s)Dsf9=4C3~uPdE>RA_skSdiSjSR+cVU8{ad7{^W)OW z&Q7(;2x9Ha!R;#}kldTi!KYG&=Z_WJRF=Inf4i0SI!`>?A?}p{L#m%t@Y=Gxm)r&w z9a8DyKh}!V@v2FsEu8l)FgY1J6mUM``K+tPASbeA#{FyaF}P5_Y0~L><~b`GP_?SF z2wyCD_Iv&(yGINJ_i{Wu7T<5Tcs2I{sU~574WM(?IK^6jZ=2fFlf!GI*Kt9j6Z!1_ zXVGc;nwn0L~$bw0H+_P(HFL-}9G1V}Pu$Bo&uYmFmW9|>qsi=c#!a5tZIFdU& z;g3%z!8grW6y&&z7<6~2Cr4Hibe;LB)2=|}olGL?pq-m2h0xPJUlrZ8a9)X$FLgFF zN2Q1x|NGUSMZL0a#q7D8Q4{keB6F=qpznjYGUzr~`)=0ex*$uJ$XrvOup#$Uc#nrX zi9F#A8+rR@WIANGQByT;oA@{KaLYg8bNr+LwKiBnoHDhBoup@SK}}7Z!tsMZ`DXG8 zPq+o_$rGY=N-}B$OC2t#E%7dP(@lT!Cxobt=&TC?y2Gh1EQ%TLNwV(UooayR8^ca? zNni2hDs>RWEv)*+;|<}7NUEu6>2ftOB#+4|srRIduGPLm69bFi8Z5%uAu+EXQyCyYmr7sxogydi`x;Zz@-!49VRwS1ewYeE5u z<<#y<|GGAt)rUGdo0XcTA|>SH+ICL#RFBw(CoAt@Z0;UWEdeZ$Z@jk*F|Q_fat?Oq{-g(Ag&HO_bg4 zR#JyU!`-&!KFLlXf33)GTad-D`nw{WhNgUNzJa}~B<{uTmknM&P8jC-X`aq~f(mb$ zDr{~xbnY7qSsZl@*hgVHF!xqNcADX`vEgtu+b(U`EU8{RPdY3-9suOL18ZvrWT5U# zf~2Ci?koK8jIBo0YZ=?yjI3xorl2A+zH+9bKsQNwMV>`ZG{j05ta;6-Oj;Y@u1`gG1Zl7itb3Tqfsxhy+&y z9VnIsTP{0n{*5~c_vnR`DiAu%INp`q=x}gz4_&Ml++&o8GvE9{>5O=MM+6H!R2;y# z4uE0aFy0_3iM2}1(4&b+%7oRCR$TO3r z6$mutr6o7FF`M?Hn)>Sj$9mM{uuHS~@mQ#J^Zx$u z#7EkJs3c}+3^V02`IJtyv)2XJwhv093?7h9i#$Mp;QTn0na>6C<&#@KJ&HRa_Z~u* zGHz|xb>|BN;LOJ3zBB1Y=0#1&KWu>HUoQnC5 zWv0~)6h)QWM#tl!#Ot)1TOLyd>Zs>Fw!CY$Wch@bv?U*sebb<~%sagAkA=;tlu0;j z9CdPHqPHuRaAvfjXn}*~|8vvT>B??DL&A4lVxeobIvF=KRR6{{z2v~ZS7{zGJLG!& zC&RaO_6Yp{a(|~G(q+iM{W5nQQh)(^BiN`6C&KwtJ!|=+^Rsrcz4jV^%%9A$mVv~1 z7dj^X^RJeGLsD#qlqi8MX^ms6%bYG~x>WUXILj`&Gpy&XuwL}S>!$*Smk>2|_h&WJ zgjcnWi)CP)`JXJjWGyR|V^42`<_OKA8H+p>8&e)^Z@<1gc{6D$sZsy&mqvYg_5Cge z__-I2bBT00|6QF5TY66jY_alna;i75hpMa?o%KL|Dj#(F9JxARt6LA!_wLCHBqzT} zEAgCWVlhd$MI=NC^P_rKeehpijJCbw7&LzN%lAnmH09xoqMXeD z#XC<1Y46(Su|wn)6FBfI)4&X7S}flhBShGM2`C}wIxrl-(XH^^XBnFeKKbPnKs2c- za)Cu8P&T;87|j4)<*E5uPH+zZ*6>K3Ef^#WblHJ`gv8^HI%d2$XcDdS>w$jc_R+?a zHb?Sv>xdC{1Ol)AbQc!7fOrH1^y&lZzx<^*&KSf(!!@h-x4yQuA32yGr%%1AM&cHx zh=f{bPCj+TxJFPNRPg}f4!Be~^QUF@6^i`FlM7<*(h%jdUxfmYK%nLS91rm0*IqY} zs5xS6z-&%Eb71 z7h$BZ>zXA`b>f)AvXysKEGGM5q|q@`-saV~{pI=767V$frfiyhb6BN`(KAjP1sN8> zqq4FtIT!3!vWS+GuZ?P-(=lNIh7BnRcqPkLvm)t0HgN&>^d=6;J^xoW8BP8Qa1d;UHcIP+4x_oAF8Zm@!S_ewO3mKe_K_V3G6t~8NEPG^G^ zl*kIoDVPiP@WT~vU`}$7L=fK0NnYH>h~B4{lV7#ntinQ<$$K^gSb~P^s~i-WEwFdy z>fTF=Mc@=EDZ5}!3`DCP2U$WP?~Pl_JVYt%Q&An;)qanIg7Da9Q%FCk<{JKcOyXWkFNb)Vo zO=j*)?j%Z8Sq2FnA07-03`tH_QvGW*`LDr3fAzpjPhK!E8YekPF-@=B3xAkQEUD$k zb^p74JeL`{A`@&?QzK2MG_6G~Y$KybW3(W5cPKY3Ppm2MQpe%yv*;pP@FH+}`tto; zS7eM#r@QWVk*kVJ0nczaPjpb=XTJAKR?pIsR++L^9{$Emt{j`gtXpR=K*hlDTd+s~eU-X$006yZNsJ<0? zN8ToQQaM@Ut|D6Cw2JS}6ZFB>!EK>JhHItP%;7WxDlBM!D{o)&&z->@r$lTt;RCnP zVEEE&Qo&i=oMB@rb=kXA?`f<`FMfhJ=vS4DwZ)?G@&VcTKNrnQgQnw1&ut@Ld1CU} z6GhT>ixBz2>s_Jxz)$XW$Mtr!o~<{OT(ZAKtcl<}we4@tj7Du#(yqRKwX(d?1LY)A z{a|iJ0_KdPk=Q!+xN2VAVfEW398r#qYe}i8^nmY<-^i2d_$q-DY(-QP7M(MwxO3&d z`YUV*Q64pLOqC*MKM%w>f5?Vp%2bgW+XoTT;3k5QBQT(#+P&_kM=9-B>pGLNv!k4N zDS6Y3l{feFza^HIDQf!a;W5xt{lLBE&2#Gi#sUr-wm2prWHMIn!M~X){Qd{@a+W~( z@P)%`Kj{e-9;y&*0B#1S^!m-mY3sM$)pQF(J`yE+hgeS<|WS_xQ$(%ik{%9 zdeBL;-K^C9i^+KrfiPA>W%{=`Ix6ykg!hn)7B5{`?|SCMZj+r{JpQ`gd=^e2^C<7r z>9M)%Q8uQpioq>m)_IOhD3l!W>DPgL(ZM+q_Aby*0-v6Fz@}fl71JzofxY|N=yl{e zEch?O5j2%mP&YXcgAC7|8_6^f(xD7P0ox7}s8PM%`wF>SyAdL$lONY5iblvxP_%0k zw$Nf#C`S`IC>BffN_e_tOJ6YVBWHB9|f&OOiru*LPPHliNmC&PAa|Gows-1yX6@>k^XEmSCT@KN}3Yto4;nsb*E0 z+v{yU_{n-`#_3KR6+b&9+xMRxHlv0Bhl5!v^VLI z-W|}60bs?B-dGYo!r_2~X{pM~bTzXZDe^s+wS$W&&kuuJA^retI}_qXZ<_sm!j!7g zA)PSr)TN`IUiCDR*fBeU9t#1Fb0P4I1v-eoyG^?`V#L_9dMvXcABp>)Zy{Q=(IC@C zn%D@nd`!w>fu*$I6>G);>no;=CTo&6MD9){-GnYBcm#pSof)*xfwHSgKLH++{xApu z)13pMM3U>}sP|!3#MKLrk}~V@tD+)5NpebEt~C^y=7pe5nE0sVp<6v-J><2EB9#@> z#Y_fO%zKK>tWc?#mA$ckK|RL-(_u93+N}h4+s7i$f)-kM$WVJ4a4hxF6OXaLjCHa! zA+8UME;jf2k_xn<-CeaSgd2MgBWW11cb=tle)68}t3d)sL28_pORZ3sj)Ata1Lb-r4Cit%77t~7*te8! zy7e@#aEdeW zF>-_g^A<-9zYmy9@96H(p%P5p%jo70rouS6(x3R7O>0vH?dW>4{lMAfV$xab8FVfs zUFefK&m-rzw|5W9wGB1_Elbr))PsBYaEdy}$QtO+2nlJHb!*RZWjh~lU*3hy2I3LvR<%eL ztD5+=Vz)A+>Du#hCyuqbt|y&=?@(kV;>2P=XbQ4bLj3RV`^-ylyXBf<^jQ~lOUH9dr<83ReD(RgdT637RK11E}h zOy#L^Dcz71rpHz^_dIK8Xgi+0NXT@5cezOdkK8Ng77{y@uB<`_6mFqx&A`66Tk;tdhSY%B+kn4}QOOJMu$b5KV zH+1%QG<3FP*?);H3E}Ooa_HR+_=yAnWU&c}%85p0P&6(82BV7n{2s>fe?@C zT)cfD@7`q3R8f$ae?$$&c!(FvZBPmdkQUoYEDChOfv0ijG9) zwel!VoeS5C8pW*EGgZkQwkyyZp4$qvj8h7BB7G%M*kzjis#p8f0Rv1$4$cA_!Mv+99dv-p{X%VUy15J2(`xkL9(y=A67JT^fNhABq zMPA9dOng36Jr2}p_0*f6d}G#0mKEk4xcSO0(3c>p8M!rlkESSXsSMJND7`kAGaA4% zy3C%N*l(o}=`zl&EbS}P@cQyuqF>lRFT!3ASz%+s`lRT?<92^m)fo3-)14D${kKT7 zTV@6hbe<$lhYI@46or1q#hRS2THj1C1ZFIXyq^>#rh%}$k+Q2dM=>1L#BuI(ZEqydyXw%h~o`<~rV(Z}^8KdALEL2PdXj~4O8a)?ru z;O&EaE|f;)Lsi|T-9leW@R(NLSK^zY|7JVr!M%IuDa?Y!{8?q4?YyXL_;ymycl!G7 zdT4Q%cb6q}vle0NVUy15qy0J4G6J27o@$r)e zHpfrCf`g(zpH! zdo)bwLHb$Wu*VkfalYcThnH=CCNRr{pG@zQ?-uJOXOFTb;xSsrL0vr>chkm6z!}II zPqdzpn_J8lNG5z#t2-FZq}m&R;U!3CMj;Q$7{m1JfvJ|&oLir51n6z3yPe&?x+PIN zo*ISPwqRjjuLy8%(P)+Xi*8s&L<;rKejd(W-aU9VP8=--v}dtjp!gFMs+1Ej;<@b~ z&Sjf!a<#=&kd%GdpGYth zw5>XyH3gjm?Z_GVO~-w(O2t2n0_OH_g|9}gr?W4Jyg!u3j1d)X6+a8da2bsQ=X2>c zRzm3~_PnAeymswIl-f#fFobWzT#E+9+w8eWu>ur@2!52AQ^M#F=r?{%YOPn@I#E%U zKCVj`TalXcR5XmwEM9nnLG#Hf>fN%C>h2gOwsqqm4y@U5GLg+(i|{{B8}I@UK^iA( z2az(NU}i|o8A|jlz{(09{MT*sceX7)qc-P04$#e+y=5o$GIe6xed_U28IthJv*T*R zC27ZlL)1%FMT3?e^-ZzbT*;n*admD7a>Qm(;n>0mT_`ggey%c&_-nt17=F}L5qkSvj%>kq-*8u|S_#K_3zg8ZDW6*hF$Zqs z^Q|Cz+ZD6d@P}lbrCBJotPH)w^DL3wZ~_)-hr+^*EK*_;&c@I*7+3Gyp97FmYoeO% z655_39m)ct9;s~x*s-MB*YNZ5XN=e@NcA-`NeA-%_tuA|6WtS=s#)Q5?~;GJ>;>K) z<3)BGY{QEzUy-ldl+zydN?5?o*XxOl1NjL^dLQAD&;RK$x?n@GK9;V8S|>c8X^p`- z!Ndvpl@--^`5(lT%L;4lKbN&aH1V#97IXhF zZ1-;7PSg{PV1pP&eLmOaCLiE8A~-ea31Xf!(PK=pY(!oj=GWtK=1n10Pkabz$)aXr zSIKE)5?gUQU-MQ><&IZJuUz-W0S@!ICM~fdJbRPLWptY)AT_zX28%w<5$+$+qr^2$ zF)rGsV)-6ENriUTRW~8RxWpgq)NUj8hZkfFpB8Rxbr?xV?#-Ysayg|FZxt{c#_RrL zIXKU#Wys$yUC{HoTfa)mPlIz*)0O5XW6~O&sqtm|?Do7K#JQ{YeC5W>pGvW&JHfMA z`bEJ^?1oj_@%&`7Qh{}gpxMaFkeqzMo0Sr?&U_NHX}~jl`ttjyb1Ab@iUdM9HH^61 zU|y<4SFc}4z3>lQ1=qomgl9GL_7&FUP(<^45o&^QzzNk>>q&><4Pa`p%P-=p0Wp1; zU61?B#HdnP$%(g^GqT{DAgYYJ@Q00x(ZKFtr_@Bf2#Efl=wdL)MB$@begxc|7)g=gvb@1BSsseM`_5gQ z0P$+&56AhEX#jwQC&os)9vN9a+spbSHG|@Ksfwgj=~dm15iS>}7CX_YY3Xm5)6*uz z5&)ATx|GSld^uaGPT&}FG8bBqm|(;xP^jnQo`Q_I*$6%EZEb!nL@tYFZU-HcP7}u z1mPt&cz3LESJy`A{SCUM>|~;+W_i^)qK3d$P9{SPfbT;AL;23naQ0sPN^bzU!I4`H z#OQAsl{Z&gjy%zv_b7~rI>&A9gdCvYYUOnHb^prn8e4Aohs`T_f?xF!Y02o>vCz#|EjlJ`m zAB}@P$_f-bVzB!s8<=#pvdXd3hsW`~nO3_a|Ho9BEaTkkmBF1!nTMj<&}4w}xo~zN^qp-N zb`0x^q)4et%^vgyS;&0m(@d4(BAfwQh{Db(-8fp2?ZUf2BuNqPQ|$Pp4gxvZi3~3Q^?s)novbeVVQo)aRm1TrL+!YS`-DjyoUZ-FH8PEf zoLH18LPGkP(R4rJ+iUUW}b;%Ywq(Kj(OULAC+ z6-$qIr$ulCUpYBj;W5Toa@%ENQ3Pw1g+Vy0k8pMFbeIhn;a=LWdkoi^nkVM?V$#v! zWwM#0r!&0@E%xeh& zHlvhHfw67+AUN&CnLD4aezV)|!LBjz9En8R!`f~UP}OupUopI+A>^%tAmI6k{hHZy ze@qS*@~!?T1bQ>rsFQnwn>?*kt(X`mDS={YPwj1q^^9?BGVOEVj)E{xPgY(j=C|W| z%XHIpmA~$HmL3rKNE`vpY?*Q%KEayy4swsg4kFOTI*W1rl(EVV0S0Jce~ht$W87t& zO6}l?jL&KKZ>Xg{uCnI)*B&s8I`e6o>he>hOP0n{XzHwIvA;M*!$vNf9@|h32371< zaO8U?=Lu0(w&0s+zA_Chn~M~AGPg6(R{fVtH2kRH&^SZXl>bvVtvnHzT?2GS{I!Lz zwzl~as608=rZs~J+&Pt9wbvP2zvb+wQdPQw|Jll)j4Fdxhx)rNA)os`;P7czHWYSD z!>xf|mSz2viD(T*_2fT>Iww_LJRo4&|DdekLy=RPxpe<#;z~AS`h!|Y-+Ur9;WtJb zE=R#X|GhiZFGVj_h9r;fs@_}<=R5OC1xND+g*>H~np)5sHQHW6aAgvH`gfW-4Ec`8 zJ8#Iauv0!blGGZ}oYaMKHCHh~yUPa$qfU8l4KwvLbR{ z+f~y4tbNtuStfOAlVOsp*zMa5qZm`HPy1||OpcH8{^^QibUKqjwBgKs9>I$F_T#2g zds-EV)W~)$2x3D{&P<(@>}V!01`Zqfw*1Y1S;kpJ7wD4W}{YPDenvc{+<^a3c>n^7p}e@D76iy93CyPm^ z%wrXJ-N>tihGIFU;XtRcM4qGaqG=hu{LW)t`*nwW<$2f*&%7HlYYxBmkyeTqE9 z7h0_%#=XG-=tTX?L1>R2LPANQ18!a;4ny6$HtFdMIQRIrO=I#%@F(3xsVU4~0zc-ph+VRqi%Hg9O^ zjT>e^Vat~tU&{S^n9I@01i{oqSBLUcSLQPnc@NVG+d=c0_A*dF_BURy`2HHcT^JNF z=~K#6g*X9G`+uuDbGhi&G^p?yQ8tUQk_VwgQgc6}Idt-shDs@TbbtQh$xk>*IW#*; zFP?8lhhvx#@?WULa!Etk&~(naJdyuKL9C>2A-h&x%$U!DhCzh9e~4|mc3N}1(T#`C zDJw!{W@ayuhF54e&PO;lNjGqGr?dAr$S|r^gWsVPOUHF|nF0j7TS7O8iy)!jAX#$f zYs3mHQf+xHQgh{y_`NVMuj9_(Kzo&CWk&1$jJzGUi@{ZL-msx;A$mgpcjW3tBnAzl zY*MT{Yk6mg*u9DWF%yN0w-o_bz6d~Wo zss{<5lUhniRH%?2uGf(7r;>5*pc!&O2@iB!qy}2_@+CaA-^hhm0e!Hh!V&_>B9kYc zNX9eYV|+inn{hi=@} z+g^jJQ2X(Y!J-(C-OMn|tC-fACXi8pNwBZD3>Te5prx;}z#fZaI0xSL)Ow^JM+<(l zA@|GrEDx~n#%{5yAUN^afxHmpaT5R@r?;`yXsEV`MxEcJQ+ndHW$YoVjDkI75JGeH zDLJ3cv=uE%8vAHnk;jkVb^CsTbGVb#Xemze9bWLCv@b5PAC z?scodkc$(<7UUN2C^B_qd(qSoTZ1vWMYetLZIzT%f` zD3U)hX@LyX(>%`DMwgaZxtRX|!c6W2Byhuf#J zZ8sXf86hRYIss>*MobHIl^A76S~v+BiFs1gFerp;iirM2>ckCI4hcsWy9SjtU zfufErRO$8b+H0J1qFN|XyQ{O+Is=2Svg5*fmh>w42B%#%mu@z4ob}mHkNG3undM3f zaWy5cJkY@vi+sv7g|rUA`cDW9J+`ZsXjqk+LH1Fer#GV^(p5|=CWcLuWJqk^;o|kF z9S1&T^Oib)FeDb7l#}w;g0`2N*Cid5{={vDhV+x71AKYhge(&{fKmN>+^O1?L5Re~ zP$Zpd(}xBlkk?GYYRgBW_l(Z4_8Hray7w$Ouf!_rVea<>iu@n01;hxRTYP%rI=5fy zR^{yj;u75O9I2M9G8RuNWQ(}V7y zzS4&oKsYo`ljLBG0p0xHRHq`?6zOTrdiSZ5jkZ7nIKNRaFSF=6fNrk~%krP~2+Dl* z>RU!tg4a~Ha3lgIoU1*aMGS{7ETrUqz#5#DtTGy)CP~B*QLsXpEI?0PrIJBTmz9bk zACLPq80uycH(k@bx&AqEW?(SKXibhPQ@XVn=1vo295B`okl6cX|JxOJKb~~gkQ^G@ zuT9=gQp*U2F_ss>)iq%p>#9{lOLdM^Vj%weGe{Yc$XOVlQ+Y6L&}Z+Vy%_7p^6oo} zMuykNxOZE}ibZVinNjF_)0IvQ2K^$$km!M%$>)t-(k`6f!%SjN+)HaZYuv*Nr<8n- zBIe}`6Zf`@ULx%C*dh+&32yN*hzT@Ygq1A!Za4 z-YjIey4rrTo36V@g*TX;C{wO)Xf@QAAD=KM`4I`ADs)}t-)5BVAJTs-7}`) z)AGB4q}ax<%tfh$=ltO9J?H`H+Q%bAj(T72fBuk?J+7JI^?3zAwQgWrZA~$tZ#I@pDi+?)!Z9nP~m9@2(X)aX)t8bR$L zJk?T1RD?qZ)MA6phaId;KJ$u5t56eG#$E4&Y1*B~@}GFsL-etB;bdmzXa6 z$5Bx2!d)L59#V<^quBHHS<9#eNEAx2*rQXYVcJ`&%Z$DfO z{rS1f2T*ZMjry;iQ`ybHxl;%^*rg*1^B4yaQ&6 zJF(Th4y=Ll%!r1@+x|AeJ08V*A>wJWS{IXO&kvSb=A^Hy!|PT(oBCIgfPJ6=Xh3as zMoF=7;63){__Cv$WJP7ni9ac0t=F9`*%%*eWyzJw@BwRY6oi$$5DiV|tVXw)MX?TF zKl05Q?K4!Qw@3)$m-hgsDgjZ4-%Q2RvwbMZM8Hse;a?(rv+1w2m9CG(qh{4QOl4Hpoqc;IWslHpUe1tP8{%l zRiqv+nz)uoH}G`jr&neTTEnZ~r5g73@rZ2_xc zQK-fYj!5NA7?gePw2|8O1Vxht*^^_|h==o4U0DB;wxN%=TN%2p88jT?dOYAYP-ur{ z@(3hfsm?drzt8_rKq;4(ozWB7qVfIud(;xnWEX7Y~M zoaVYQfROE;y{aO$X!!o8rrU{&@)T3plVTNuP+>!2u2Qx&@Tt`(x>iVEdu_c~kdF2j z2ZT1}{e`{S+k+_`t8nww1sb=CM_}m~9NoaV(j{k(3-F8o8N0m6S)Y4z3 zMiNG~eTT<+m)eniZz}iOU!WDXOf!}@CGpr<%_;(?QifEyi+{+X4*W3NB>U!#t?Kd% z6N#zQzhMN*SlJrRsDftsAc4n#~Rk> zKP1E0%FCnM2!Ss!EhN0)HQn(fJ^zYU!_+!Mb&jymr`~$qwF@7A{d0TkCGz*5RmOm_ S{rZ9jCMTsVSu1W5{J#KgbPBBi literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/web/android-chrome-192x192.png b/Multi-Platform Icon Generator/sample_icons/web/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..d1fc847e063919e9e262b7f7694ad4dddf801481 GIT binary patch literal 22410 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 z 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 Z{|65uEU-JjX4C)x002ovPDHLkV1gf=n128O literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/web/android-chrome-512x512.png b/Multi-Platform Icon Generator/sample_icons/web/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..27ee28a3e9b2f59d4381eb651804050a06f927ce GIT binary patch literal 25304 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 literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/web/favicon-16x16.png b/Multi-Platform Icon Generator/sample_icons/web/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..7f805a956d1a84dbce92aed6e8493877122e2d79 GIT binary patch literal 923 zcmV;M17!S(P) zcM<~+@q~qCS=e?0%T8ch7Pd^%+I)(44t~plhNCQ)%SffrEi=jfXLnH$$f9I(0iSpM zOl|#LxO5$_*N2pfjJ1A724h^YO{RLs5$k>Q{V+-98XuZtr&yEjXaA$SIsNsov^{l- ziIF)Bzs~H;@626_k+f~{H?AkLE|Z5Ewo;LsO<+?lrs<$7QkcmVZdx~ZqNSS3noWet z^Z4ZLZld*Jgn+U0eC#3sg{52R?l?qcMFpnqprpj@c608`5c;;d4ZL-*!$?zH+YMDjTbvHs!qphij?vICg?U`>VD##&H z9$^Dva#A6xYqxRX+$A1~e#jS{!{n#u<8k}ZgpQV;nZ{t>6caaZ@#*nFCKi_&9gAUP z7zBbP1WO`Vrlg{#i00?(*t72*&JInpYMTfFn&U|9c#0h1qBN9)vFczYQYb00%mlWT zAZaI6<~l>RzuT;?{ISTx(ZihV?8oqX(5-|`=D3a$??FhScuZH7DbhnE{Ji*1Yiv$BT3Z=wK xGIssB*S9a&X3E|F{cmL%nQ7Q@hrzz-)IYbRYS6q_$Cv;B002ovPDHLkV1j|R%KHES literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/web/favicon-32x32.png b/Multi-Platform Icon Generator/sample_icons/web/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..87b2046703581b55d8468443a919637eaae23c0d GIT binary patch literal 2538 zcmVXm^X4~0r1y3d8}Hoki;%- zMm*e?i+Hf15rvHq5e!V6IM6Zh6DFBhWRwJu3LyOLAzJh{bPS&A{~=#2*a;HcejlEY zWvxCxZo@|;Y+{%?&CLes={-qL?@4pBfnn-I!X|FRhc6W5Oj9#YJpKU(kDWr8f(g%m z!k4SdAtGru+VHi70E7aN*eQn9U+iL3_8k1}AxhTP@L->}X?6RsX&M57sw$|ef)Jo6 zDv^jvzkWIN>z6|$qM|4&LI5hnIijg3tK*wZ-%-B#C{1l%3RhIJddV(?&GMxvR%8`` zc5jGBa_*-2yq6zNHnH!Uda?$0CoRQ=UDdEVG)&XHk`IQV<8nb>-c<7Prs8s0YXAa) zfn?*#N&t3j`i_;0b^>s4-zkpQpCuYQ(v$#b0O63%EjOjIZr|&?IC3G`LwfMuoagWn zWM4%+Xz&Qhj94QY7Xr^#qBc& zP+xS6(l7Tj;O$e`*5H25i%nP zA&{oTrb+7S4^m%$5Su2EQev8tXzUc`?`~DcZ#v~K;hjBV%x#Tt&J$e$OM^ECC+aNkR21N+GrjNHi8po=guOfku z*8G|1yRPZ?-pF!EiuK^f3as;jzl_}$%XV2!<41cmO z?$&0c1Vyp5!!RU5Sl4V*R4!a-qh?p51)yh-{14_R18x`RWziO7^Z>K8B6)@ zuj!W2jcs+u*jluiSH_OPp;|yg27J7BJr6%VjE8>Si_`U|88l!7et$cvq9TO2;?tA{ zs;c4fT%`7Rg>}$*^GfCEMk&AjR?5msDQoMbtg5o+b#+qi*=tBwe3G2KS_;=n>&T#;sP2Pjx%NQSk9emq@Z9aZ{*G*6bju)!=GyW zq*w5hC*ch=l+x05RaH7@Xi02hLZ|a7%8a;hNpE7}-CI z7TSo$fgO!D0%)kj;J}L?J1RT&9^r-Ib4l&`pM~gRV=c=|W-utb7b@BnKLUZ$QCS(7 zBofQUiYk6NAkR`lue+TKx|^UL=5WI)zOTQ?Bg6a9>}{jG^e8z`^uaVuhGhSOheqE+ z@yeroJoEJ%q$0rU%-QpKroCV1cq*+J9ND6_G_PG1))KF zl#?YNY-P&m#i*LX-W_$k_S|RG9ymk1(@DUL;B9r&H)}Y>TP~2FUqgO=4aHk7klA-Q ze!rKqJ`eA|vyN>W4zZ)?I~Fb6%+Ae6NU%Gt%1TpEH3dbz_BE7XN8_BwO~tla0JfJM zW@qsc0E*UBV-qSuv7|H*@R6LTQdqc{!otNQC#nPk?H~oQY81;CZD;MWJ+w5n^VUnN zFv8|_5`XPbtP;y4hA7I5k8r-#Pjc4Hfephf*P87BCD4%}y5(f@7@X0$R%%1-g_dbw;j{vGF zI)nsf%~}Y6#{;UWT@99Igj+A zEgT@_rUafIH-Mh~Z{paYA9-fdKIdDzrpN?09ZAIO;fB| zLY1u8^a>NlE~2XZ1o@@Y=yz9l)@-)ZjZU3Ze)z#+Os8bkl3CL<1;`kuLka7;>9E^`9Zj*JvTXg!vIlb^>8-DLa*00}6@7{v|DBQ3W zkM|-eJ)DY$O3l6o`rVtMo;i1k+Jk4Vw8E;U5)6ikcQ~o4I&rxo!`;!enjPQ&#SB39 z9n^jOj#Gb`hT!5qPrW-Wdq~FmYyV$km-ll23-`TpdzcYTIsgCw07*qoM6N<$g2>Fk A`0;^j$vA^U2bh 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 literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/windows/extra-large.png b/Multi-Platform Icon Generator/sample_icons/windows/extra-large.png new file mode 100644 index 0000000000000000000000000000000000000000..dc048fcdf6cc06dad4f9dbca13523f5b05c455ed GIT binary patch literal 6721 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 literal 0 HcmV?d00001 diff --git a/Multi-Platform Icon Generator/sample_icons/windows/medium.png b/Multi-Platform Icon Generator/sample_icons/windows/medium.png new file mode 100644 index 0000000000000000000000000000000000000000..87b2046703581b55d8468443a919637eaae23c0d GIT binary patch literal 2538 zcmVXm^X4~0r1y3d8}Hoki;%- zMm*e?i+Hf15rvHq5e!V6IM6Zh6DFBhWRwJu3LyOLAzJh{bPS&A{~=#2*a;HcejlEY zWvxCxZo@|;Y+{%?&CLes={-qL?@4pBfnn-I!X|FRhc6W5Oj9#YJpKU(kDWr8f(g%m z!k4SdAtGru+VHi70E7aN*eQn9U+iL3_8k1}AxhTP@L->}X?6RsX&M57sw$|ef)Jo6 zDv^jvzkWIN>z6|$qM|4&LI5hnIijg3tK*wZ-%-B#C{1l%3RhIJddV(?&GMxvR%8`` zc5jGBa_*-2yq6zNHnH!Uda?$0CoRQ=UDdEVG)&XHk`IQV<8nb>-c<7Prs8s0YXAa) zfn?*#N&t3j`i_;0b^>s4-zkpQpCuYQ(v$#b0O63%EjOjIZr|&?IC3G`LwfMuoagWn zWM4%+Xz&Qhj94QY7Xr^#qBc& zP+xS6(l7Tj;O$e`*5H25i%nP zA&{oTrb+7S4^m%$5Su2EQev8tXzUc`?`~DcZ#v~K;hjBV%x#Tt&J$e$OM^ECC+aNkR21N+GrjNHi8po=guOfku z*8G|1yRPZ?-pF!EiuK^f3as;jzl_}$%XV2!<41cmO z?$&0c1Vyp5!!RU5Sl4V*R4!a-qh?p51)yh-{14_R18x`RWziO7^Z>K8B6)@ zuj!W2jcs+u*jluiSH_OPp;|yg27J7BJr6%VjE8>Si_`U|88l!7et$cvq9TO2;?tA{ zs;c4fT%`7Rg>}$*^GfCEMk&AjR?5msDQoMbtg5o+b#+qi*=tBwe3G2KS_;=n>&T#;sP2Pjx%NQSk9emq@Z9aZ{*G*6bju)!=GyW zq*w5hC*ch=l+x05RaH7@Xi02hLZ|a7%8a;hNpE7}-CI z7TSo$fgO!D0%)kj;J}L?J1RT&9^r-Ib4l&`pM~gRV=c=|W-utb7b@BnKLUZ$QCS(7 zBofQUiYk6NAkR`lue+TKx|^UL=5WI)zOTQ?Bg6a9>}{jG^e8z`^uaVuhGhSOheqE+ z@yeroJoEJ%q$0rU%-QpKroCV1cq*+J9ND6_G_PG1))KF zl#?YNY-P&m#i*LX-W_$k_S|RG9ymk1(@DUL;B9r&H)}Y>TP~2FUqgO=4aHk7klA-Q ze!rKqJ`eA|vyN>W4zZ)?I~Fb6%+Ae6NU%Gt%1TpEH3dbz_BE7XN8_BwO~tla0JfJM zW@qsc0E*UBV-qSuv7|H*@R6LTQdqc{!otNQC#nPk?H~oQY81;CZD;MWJ+w5n^VUnN zFv8|_5`XPbtP;y4hA7I5k8r-#Pjc4Hfephf*P87BCD4%}y5(f@7@X0$R%%1-g_dbw;j{vGF zI)nsf%~}Y6#{;UWT@99Igj+A zEgT@_rUafIH-Mh~Z{paYA9-fdKIdDzrpN?09ZAIO;fB| zLY1u8^a>NlE~2XZ1o@@Y=yz9l)@-)ZjZU3Ze)z#+Os8bkl3CL<1;`kuLka7;>9E^`9Zj*JvTXg!vIlb^>8-DLa*00}6@7{v|DBQ3W zkM|-eJ)DY$O3l6o`rVtMo;i1k+Jk4Vw8E;U5)6ikcQ~o4I&rxo!`;!enjPQ&#SB39 z9n^jOj#Gb`hT!5qPrW-Wdq~FmYyV$km-ll23-`TpdzcYTIsgCw07*qoM6N<$g2>Fk A zcM<~+@q~qCS=e?0%T8ch7Pd^%+I)(44t~plhNCQ)%SffrEi=jfXLnH$$f9I(0iSpM zOl|#LxO5$_*N2pfjJ1A724h^YO{RLs5$k>Q{V+-98XuZtr&yEjXaA$SIsNsov^{l- ziIF)Bzs~H;@626_k+f~{H?AkLE|Z5Ewo;LsO<+?lrs<$7QkcmVZdx~ZqNSS3noWet z^Z4ZLZld*Jgn+U0eC#3sg{52R?l?qcMFpnqprpj@c608`5c;;d4ZL-*!$?zH+YMDjTbvHs!qphij?vICg?U`>VD##&H z9$^Dva#A6xYqxRX+$A1~e#jS{!{n#u<8k}ZgpQV;nZ{t>6caaZ@#*nFCKi_&9gAUP z7zBbP1WO`Vrlg{#i00?(*t72*&JInpYMTfFn&U|9c#0h1qBN9)vFczYQYb00%mlWT zAZaI6<~l>RzuT;?{ISTx(ZihV?8oqX(5-|`=D3a$??FhScuZH7DbhnE{Ji*1Yiv$BT3Z=wK xGIssB*S9a&X3E|F{cmL%nQ7Q@hrzz-)IYbRYS6q_$Cv;B002ovPDHLkV1j|R%KHES literal 0 HcmV?d00001 From 78cc675132f6d72f2f1ff580aa2b809948c2a523 Mon Sep 17 00:00:00 2001 From: JeevaRamanathan Date: Tue, 30 Sep 2025 19:44:24 +0530 Subject: [PATCH 44/63] updated the list of scripts in readme Signed-off-by: JeevaRamanathan --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7fe644e7..76c4678d 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,7 @@ More information on contributing and the general code of conduct for discussion | Merge Two Images | [Merge Two Images](https://github.com/DhanushNehru/Python-Scripts/tree/main/Merge%20Two%20Images) | Merges two images horizontally or vertically. | | Mood based youtube song generator | [Mood based youtube song generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Mood%20based%20youtube%20song%20generator) | This Python script fetches a random song from YouTube based on your mood input and opens it in your default web browser. | | Mouse mover | [Mouse mover](https://github.com/DhanushNehru/Python-Scripts/tree/main/Mouse%20Mover) | Moves your mouse every 15 seconds. | +| Multi-Platform Icon Generator | [Multi-Platform Icon Generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Multi-Platform%Icon%Generator) | Automates creation of 35+ platform-specific icon sizes from one source image for app stores and web deployment. | Morse Code | [Mose Code](https://github.com/DhanushNehru/Python-Scripts/tree/main/Morse%20Code) | Encodes and decodes Morse code. | | No Screensaver | [No Screensaver](https://github.com/DhanushNehru/Python-Scripts/tree/main/No%20Screensaver) | Prevents screensaver from turning on. | | OTP Verification | [OTP Verification](https://github.com/DhanushNehru/Python-Scripts/tree/main/OTP%20%20Verify) | An OTP Verification Checker. | From 299b3c8cff6faf62bb6560b3c4ff533bb462946f Mon Sep 17 00:00:00 2001 From: JeevaRamanathan <64531160+JeevaRamanathan@users.noreply.github.com> Date: Fri, 3 Oct 2025 12:46:12 +0530 Subject: [PATCH 45/63] fix the path in projects list Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 76c4678d..d2635b7e 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ More information on contributing and the general code of conduct for discussion | Merge Two Images | [Merge Two Images](https://github.com/DhanushNehru/Python-Scripts/tree/main/Merge%20Two%20Images) | Merges two images horizontally or vertically. | | Mood based youtube song generator | [Mood based youtube song generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Mood%20based%20youtube%20song%20generator) | This Python script fetches a random song from YouTube based on your mood input and opens it in your default web browser. | | Mouse mover | [Mouse mover](https://github.com/DhanushNehru/Python-Scripts/tree/main/Mouse%20Mover) | Moves your mouse every 15 seconds. | -| Multi-Platform Icon Generator | [Multi-Platform Icon Generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Multi-Platform%Icon%Generator) | Automates creation of 35+ platform-specific icon sizes from one source image for app stores and web deployment. +| Multi-Platform Icon Generator | [Multi-Platform Icon Generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Multi-Platform%20Icon%20Generator) | Automates creation of 35+ platform-specific icon sizes from one source image for app stores and web deployment. | Morse Code | [Mose Code](https://github.com/DhanushNehru/Python-Scripts/tree/main/Morse%20Code) | Encodes and decodes Morse code. | | No Screensaver | [No Screensaver](https://github.com/DhanushNehru/Python-Scripts/tree/main/No%20Screensaver) | Prevents screensaver from turning on. | | OTP Verification | [OTP Verification](https://github.com/DhanushNehru/Python-Scripts/tree/main/OTP%20%20Verify) | An OTP Verification Checker. | From 775223a4d6af967d321fb4eb03fc6017402055ca Mon Sep 17 00:00:00 2001 From: JeevaRamanathan <64531160+JeevaRamanathan@users.noreply.github.com> Date: Fri, 3 Oct 2025 12:46:48 +0530 Subject: [PATCH 46/63] update the path to forward slash Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../sample_icons/icon_preview.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Multi-Platform Icon Generator/sample_icons/icon_preview.html b/Multi-Platform Icon Generator/sample_icons/icon_preview.html index dacfed78..7b2414db 100644 --- a/Multi-Platform Icon Generator/sample_icons/icon_preview.html +++ b/Multi-Platform Icon Generator/sample_icons/icon_preview.html @@ -22,32 +22,32 @@

ANDROID Icons

- hdpi + hdpi
hdpi
72x72
- ldpi + ldpi
ldpi
36x36
- mdpi + mdpi
mdpi
48x48
- xhdpi + xhdpi
xhdpi
96x96
- xxhdpi + xxhdpi
xxhdpi
144x144
- xxxhdpi + xxxhdpi
xxxhdpi
192x192
From fae4ad8321df872a40792902ea54638c20639ced Mon Sep 17 00:00:00 2001 From: JeevaRamanathan <64531160+JeevaRamanathan@users.noreply.github.com> Date: Fri, 3 Oct 2025 14:36:46 +0530 Subject: [PATCH 47/63] update the path to forward slash Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../sample_icons/icon_preview.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Multi-Platform Icon Generator/sample_icons/icon_preview.html b/Multi-Platform Icon Generator/sample_icons/icon_preview.html index 7b2414db..babb0666 100644 --- a/Multi-Platform Icon Generator/sample_icons/icon_preview.html +++ b/Multi-Platform Icon Generator/sample_icons/icon_preview.html @@ -59,27 +59,27 @@

IOS Icons

- App-Store + App-Store
App-Store
1024x1024
- iPad-App + iPad-App
iPad-App
76x76
- iPad-App@2x + iPad-App@2x
iPad-App@2x
152x152
- iPad-Pro + iPad-Pro
iPad-Pro
167x167
- iPhone-App + iPhone-App
iPhone-App
60x60
From d13cfc8a2f9a9c37774ad90e864017d04ff8b74c Mon Sep 17 00:00:00 2001 From: JeevaRamanathan <64531160+JeevaRamanathan@users.noreply.github.com> Date: Fri, 3 Oct 2025 14:37:07 +0530 Subject: [PATCH 48/63] update the path to forward slash Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../sample_icons/icon_preview.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Multi-Platform Icon Generator/sample_icons/icon_preview.html b/Multi-Platform Icon Generator/sample_icons/icon_preview.html index babb0666..841cbdea 100644 --- a/Multi-Platform Icon Generator/sample_icons/icon_preview.html +++ b/Multi-Platform Icon Generator/sample_icons/icon_preview.html @@ -131,32 +131,32 @@

MACOS Icons

- icon_1024x1024 + icon_1024x1024
icon_1024x1024
1024x1024
- icon_128x128 + icon_128x128
icon_128x128
128x128
- icon_16x16 + icon_16x16
icon_16x16
16x16
- icon_256x256 + icon_256x256
icon_256x256
256x256
- icon_32x32 + icon_32x32
icon_32x32
32x32
- icon_512x512 + icon_512x512
icon_512x512
512x512
From eeed2b75e640eb2a60ad41972547fc5d2d8cb237 Mon Sep 17 00:00:00 2001 From: JeevaRamanathan <64531160+JeevaRamanathan@users.noreply.github.com> Date: Fri, 3 Oct 2025 14:37:18 +0530 Subject: [PATCH 49/63] update the path to forward slash Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../sample_icons/icon_preview.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Multi-Platform Icon Generator/sample_icons/icon_preview.html b/Multi-Platform Icon Generator/sample_icons/icon_preview.html index 841cbdea..648834ca 100644 --- a/Multi-Platform Icon Generator/sample_icons/icon_preview.html +++ b/Multi-Platform Icon Generator/sample_icons/icon_preview.html @@ -237,27 +237,27 @@

WINDOWS Icons

- extra-large + extra-large
extra-large
64x64
- jumbo + jumbo
jumbo
256x256
- large + large
large
48x48
- medium + medium
medium
32x32
- small + small
small
16x16
From eeda1df23674c85bcb736bfc18396dcc7982be2b Mon Sep 17 00:00:00 2001 From: JeevaRamanathan <64531160+JeevaRamanathan@users.noreply.github.com> Date: Fri, 3 Oct 2025 14:38:42 +0530 Subject: [PATCH 50/63] update the path to forward slash Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../sample_icons/icon_preview.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Multi-Platform Icon Generator/sample_icons/icon_preview.html b/Multi-Platform Icon Generator/sample_icons/icon_preview.html index 648834ca..a3d50a6d 100644 --- a/Multi-Platform Icon Generator/sample_icons/icon_preview.html +++ b/Multi-Platform Icon Generator/sample_icons/icon_preview.html @@ -168,32 +168,32 @@

ROUNDED Icons

- rounded_icon_144x144 + rounded_icon_144x144
rounded_icon_144x144
144x144
- rounded_icon_192x192 + rounded_icon_192x192
rounded_icon_192x192
192x192
- rounded_icon_256x256 + rounded_icon_256x256
rounded_icon_256x256
256x256
- rounded_icon_48x48 + rounded_icon_48x48
rounded_icon_48x48
48x48
- rounded_icon_512x512 + rounded_icon_512x512
rounded_icon_512x512
512x512
- rounded_icon_96x96 + rounded_icon_96x96
rounded_icon_96x96
96x96
From 5de61871f1c2e49bc8dd01e7bdea98668d113a53 Mon Sep 17 00:00:00 2001 From: devanshsonii Date: Fri, 3 Oct 2025 14:46:16 +0530 Subject: [PATCH 51/63] Added the workflow for auto message replies. --- .github/workflows/issue-auto-reply.yml | 28 ++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/issue-auto-reply.yml diff --git a/.github/workflows/issue-auto-reply.yml b/.github/workflows/issue-auto-reply.yml new file mode 100644 index 00000000..8515b140 --- /dev/null +++ b/.github/workflows/issue-auto-reply.yml @@ -0,0 +1,28 @@ +name: Auto-Reply to New Issues + +on: + issues: + types: [opened] + +permissions: + issues: write + +jobs: + post-welcome-comment: + name: Post Welcome Comment + runs-on: ubuntu-latest + steps: + - name: Post welcome comment on new issue + uses: actions/github-script@v7 + with: + script: | + const message = `Thank you for raising this issue! Our team will review it soon. + + For more queries or discussions or approval of requests, please join the Discord server for further discussion: [Discord Link](https://discord.com/invite/Yn9g6KuWyA)`; + + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + body: message + }); \ No newline at end of file From 624de62c9df1032fb809398944f2293a5f6df575 Mon Sep 17 00:00:00 2001 From: JeevaRamanathan <64531160+JeevaRamanathan@users.noreply.github.com> Date: Sun, 5 Oct 2025 11:20:46 +0530 Subject: [PATCH 52/63] update the path to forward slash Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../sample_icons/icon_preview.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Multi-Platform Icon Generator/sample_icons/icon_preview.html b/Multi-Platform Icon Generator/sample_icons/icon_preview.html index a3d50a6d..75c400bf 100644 --- a/Multi-Platform Icon Generator/sample_icons/icon_preview.html +++ b/Multi-Platform Icon Generator/sample_icons/icon_preview.html @@ -84,17 +84,17 @@

IOS Icons

- iPhone-App@2x + iPhone-App@2x
iPhone-App@2x
120x120
- iPhone-App@3x + iPhone-App@3x
iPhone-App@3x
180x180
- iPhone-Notification + iPhone-Notification
iPhone-Notification
20x20
From 035a49b4ff19e27f8c5e099a5b03109208fdd1e9 Mon Sep 17 00:00:00 2001 From: JeevaRamanathan <64531160+JeevaRamanathan@users.noreply.github.com> Date: Sun, 5 Oct 2025 11:21:44 +0530 Subject: [PATCH 53/63] update the path to forward slash Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../sample_icons/icon_preview.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Multi-Platform Icon Generator/sample_icons/icon_preview.html b/Multi-Platform Icon Generator/sample_icons/icon_preview.html index 75c400bf..f1822d11 100644 --- a/Multi-Platform Icon Generator/sample_icons/icon_preview.html +++ b/Multi-Platform Icon Generator/sample_icons/icon_preview.html @@ -205,27 +205,27 @@

WEB Icons

- android-chrome-192x192 + android-chrome-192x192
android-chrome-192x192
192x192
- android-chrome-512x512 + android-chrome-512x512
android-chrome-512x512
512x512
- favicon-16x16 + favicon-16x16
favicon-16x16
16x16
- favicon-32x32 + favicon-32x32
favicon-32x32
32x32
- favicon-96x96 + favicon-96x96
favicon-96x96
96x96
From 1092b44cc7c01eb2eabe038787c917447c2d1225 Mon Sep 17 00:00:00 2001 From: JeevaRamanathan Date: Sun, 5 Oct 2025 11:34:25 +0530 Subject: [PATCH 54/63] updated forward slash Signed-off-by: JeevaRamanathan --- .../sample_icons/icon_preview.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Multi-Platform Icon Generator/sample_icons/icon_preview.html b/Multi-Platform Icon Generator/sample_icons/icon_preview.html index f1822d11..7265f8b8 100644 --- a/Multi-Platform Icon Generator/sample_icons/icon_preview.html +++ b/Multi-Platform Icon Generator/sample_icons/icon_preview.html @@ -99,27 +99,27 @@

IOS Icons

- iPhone-Settings + iPhone-Settings
iPhone-Settings
29x29
- iPhone-Settings@2x + iPhone-Settings@2x
iPhone-Settings@2x
58x58
- iPhone-Settings@3x + iPhone-Settings@3x
iPhone-Settings@3x
87x87
- iPhone-Spotlight + iPhone-Spotlight
iPhone-Spotlight
40x40
- iPhone-Spotlight@2x + iPhone-Spotlight@2x
iPhone-Spotlight@2x
80x80
From 1ee76386aecd7fce42f3cf654fdb0f97b5e1e91c Mon Sep 17 00:00:00 2001 From: Dhanush Date: Thu, 9 Oct 2025 12:48:17 +0530 Subject: [PATCH 55/63] Update Multi-Platform Icon Generator/icon_generator.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Multi-Platform Icon Generator/icon_generator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Multi-Platform Icon Generator/icon_generator.py b/Multi-Platform Icon Generator/icon_generator.py index 8d88d46f..dd2afa4c 100644 --- a/Multi-Platform Icon Generator/icon_generator.py +++ b/Multi-Platform Icon Generator/icon_generator.py @@ -254,7 +254,7 @@ def create_icon_preview(output_dir):
{icon.stem}
{size[0]}x{size[1]}
""" - except: + except Exception: pass html_content += """ From 4ce64c62ea8fed4c33b24e74b355cb7438beb8df Mon Sep 17 00:00:00 2001 From: arceuzvx Date: Fri, 10 Oct 2025 12:54:48 +0530 Subject: [PATCH 56/63] Added my disk visualizer --- Disk Usage Visualizer/README.md | 28 +++++++++++++ Disk Usage Visualizer/disk_visualizer.py | 52 ++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 Disk Usage Visualizer/README.md create mode 100644 Disk Usage Visualizer/disk_visualizer.py diff --git a/Disk Usage Visualizer/README.md b/Disk Usage Visualizer/README.md new file mode 100644 index 00000000..ac4ea61f --- /dev/null +++ b/Disk Usage Visualizer/README.md @@ -0,0 +1,28 @@ +# Disk Usage Visualizer (CLI) + +A simple Python script that scans directories and displays the largest folders or files by disk usage — right from your terminal. +Lightweight, fast, and cross-platform (works on Linux, macOS, and Windows). + +## Features + +- Recursively analyzes disk usage in a directory + +- Displays top N largest folders (default: 10) + +- Handles long file paths and permission errors gracefully + +- Works seamlessly on Windows, Linux, and macOS + +## Usage + +```bash +# Analyze current directory +python vis.py + +# Analyze a specific path +python vis.py D:\Projects # Windows +python vis.py /home/user/docs # Linux/macOS + +# Show top 20 largest folders +python vis.py . -n 20 +``` diff --git a/Disk Usage Visualizer/disk_visualizer.py b/Disk Usage Visualizer/disk_visualizer.py new file mode 100644 index 00000000..09faf66f --- /dev/null +++ b/Disk Usage Visualizer/disk_visualizer.py @@ -0,0 +1,52 @@ +import os + +def get_dir_sizes(path="."): + dir_sizes = {} + for root, dirs, files in os.walk(path): + for name in files: + try: + full_path = os.path.join(root, name) + + # Handle long paths in Windows + if os.name == "nt": + full_path = r"\\?\\" + os.path.abspath(full_path) + + size = os.path.getsize(full_path) + dir_name = os.path.relpath(root, path) + dir_sizes[dir_name] = dir_sizes.get(dir_name, 0) + size + except (FileNotFoundError, PermissionError, OSError): + continue + return dir_sizes + + +def main(): + import argparse + parser = argparse.ArgumentParser(description="Disk Usage Visualizer (CLI)") + parser.add_argument("path", nargs="?", default=".", help="Path to analyze") + parser.add_argument( + "-n", "--top", type=int, default=10, help="Show top N largest directories" + ) + args = parser.parse_args() + + print(f"Analyzing disk usage in: {args.path}\n") + + dir_sizes = get_dir_sizes(args.path) + + # Sort by size (descending) + sorted_dirs = sorted(dir_sizes.items(), key=lambda x: x[1], reverse=True) + + print(f"Top {args.top} largest directories:") + print("-" * 60) + print(f"{'Directory':40s} | {'Size (MB)':>10s}") + print("-" * 60) + + for dir_name, size in sorted_dirs[: args.top]: + size_mb = size / (1024 * 1024) + print(f"{dir_name:40s} | {size_mb:10.2f}") + + print("-" * 60) + print("✅ Disk usage analysis complete.") + + +if __name__ == "__main__": + main() From b979c536cb79b851836aa25cd86521454a491438 Mon Sep 17 00:00:00 2001 From: Shreya Dutta <136884688+arceuzvx@users.noreply.github.com> Date: Fri, 10 Oct 2025 13:00:25 +0530 Subject: [PATCH 57/63] Update README.md Added my Disk Usage Visualizer to the list --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d2635b7e..58db7ffc 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,7 @@ More information on contributing and the general code of conduct for discussion | CSV_TO_NDJSON | [CSV to Excel](https://github.com/DhanushNehru/Python-Scripts/tree/main/CSV_TO_NDJSON) | A Python script to convert a CSV to an NDJSON files file. | | Currency Script | [Currency Script](https://github.com/DhanushNehru/Python-Scripts/tree/main/Currency%20Script) | A Python script to convert the currency of one country to that of another. | | Digital Clock | [Digital Clock](https://github.com/DhanushNehru/Python-Scripts/tree/main/Digital%20Clock) | A Python script to preview a digital clock in the terminal. | +| Disk Usage Visualizer | [Disk Usage Visualizer](https://github.com/DhanushNehru/Python-Scripts/tree/main/Disk%20Usage%20Visualizer) | A Python Script to display the top N files taking up space in your disk. | Display Popup Window | [Display Popup Window](https://github.com/DhanushNehru/Python-Scripts/tree/main/Display%20Popup%20Window) | A Python script to preview a GUI interface to the user. | | Distance Calculator | [Distance Calculator](https://github.com/Mathdallas-code/Python-Scripts/tree/main/Distance%20Calculator) | A Python script to calculate the distance between two points. | Duplicate Finder | [Duplicate Finder](https://github.com/DhanushNehru/Python-Scripts/tree/main/Duplicate%Fnder) | The script identifies duplicate files by MD5 hash and allows deletion or relocation. | From 1315cd3d19576821f247b4a68fa01532403628c4 Mon Sep 17 00:00:00 2001 From: Shreya Dutta <136884688+arceuzvx@users.noreply.github.com> Date: Sat, 11 Oct 2025 02:04:31 +0530 Subject: [PATCH 58/63] Update Disk Usage Visualizer/README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Disk Usage Visualizer/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Disk Usage Visualizer/README.md b/Disk Usage Visualizer/README.md index ac4ea61f..a2c80bc5 100644 --- a/Disk Usage Visualizer/README.md +++ b/Disk Usage Visualizer/README.md @@ -17,12 +17,12 @@ Lightweight, fast, and cross-platform (works on Linux, macOS, and Windows). ```bash # Analyze current directory -python vis.py +python disk_visualizer.py # Analyze a specific path -python vis.py D:\Projects # Windows -python vis.py /home/user/docs # Linux/macOS +python disk_visualizer.py D:\Projects # Windows +python disk_visualizer.py /home/user/docs # Linux/macOS # Show top 20 largest folders -python vis.py . -n 20 +python disk_visualizer.py . -n 20 ``` From dd329d5f74869967edf244cc0c9b94c23d2b0cb4 Mon Sep 17 00:00:00 2001 From: Shreya Dutta <136884688+arceuzvx@users.noreply.github.com> Date: Sat, 11 Oct 2025 12:26:31 +0530 Subject: [PATCH 59/63] removed extra space in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 58db7ffc..fbed8bb5 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ More information on contributing and the general code of conduct for discussion | CSV_TO_NDJSON | [CSV to Excel](https://github.com/DhanushNehru/Python-Scripts/tree/main/CSV_TO_NDJSON) | A Python script to convert a CSV to an NDJSON files file. | | Currency Script | [Currency Script](https://github.com/DhanushNehru/Python-Scripts/tree/main/Currency%20Script) | A Python script to convert the currency of one country to that of another. | | Digital Clock | [Digital Clock](https://github.com/DhanushNehru/Python-Scripts/tree/main/Digital%20Clock) | A Python script to preview a digital clock in the terminal. | -| Disk Usage Visualizer | [Disk Usage Visualizer](https://github.com/DhanushNehru/Python-Scripts/tree/main/Disk%20Usage%20Visualizer) | A Python Script to display the top N files taking up space in your disk. +| Disk Usage Visualizer | [Disk Usage Visualizer](https://github.com/DhanushNehru/Python-Scripts/tree/main/Disk%20Usage%20Visualizer) | A Python Script to display the top N files taking up space in your disk. | Display Popup Window | [Display Popup Window](https://github.com/DhanushNehru/Python-Scripts/tree/main/Display%20Popup%20Window) | A Python script to preview a GUI interface to the user. | | Distance Calculator | [Distance Calculator](https://github.com/Mathdallas-code/Python-Scripts/tree/main/Distance%20Calculator) | A Python script to calculate the distance between two points. | Duplicate Finder | [Duplicate Finder](https://github.com/DhanushNehru/Python-Scripts/tree/main/Duplicate%Fnder) | The script identifies duplicate files by MD5 hash and allows deletion or relocation. | From 3b3e49e9af7ed249352e200ac21feab8c15388f2 Mon Sep 17 00:00:00 2001 From: Shreya Dutta <136884688+arceuzvx@users.noreply.github.com> Date: Sat, 11 Oct 2025 12:29:45 +0530 Subject: [PATCH 60/63] Updated variable name --- Disk Usage Visualizer/disk_visualizer.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Disk Usage Visualizer/disk_visualizer.py b/Disk Usage Visualizer/disk_visualizer.py index 09faf66f..053e170f 100644 --- a/Disk Usage Visualizer/disk_visualizer.py +++ b/Disk Usage Visualizer/disk_visualizer.py @@ -12,8 +12,8 @@ def get_dir_sizes(path="."): full_path = r"\\?\\" + os.path.abspath(full_path) size = os.path.getsize(full_path) - dir_name = os.path.relpath(root, path) - dir_sizes[dir_name] = dir_sizes.get(dir_name, 0) + size + dir_path = os.path.relpath(root, path) + dir_sizes[dir_path] = dir_sizes.get(dir_path, 0) + size except (FileNotFoundError, PermissionError, OSError): continue return dir_sizes @@ -40,9 +40,9 @@ def main(): print(f"{'Directory':40s} | {'Size (MB)':>10s}") print("-" * 60) - for dir_name, size in sorted_dirs[: args.top]: + for dir_path, size in sorted_dirs[: args.top]: size_mb = size / (1024 * 1024) - print(f"{dir_name:40s} | {size_mb:10.2f}") + print(f"{dir_path:40s} | {size_mb:10.2f}") print("-" * 60) print("✅ Disk usage analysis complete.") From 97652f5569e17a967260bb2989dffa12417421a7 Mon Sep 17 00:00:00 2001 From: Dhanush Date: Sat, 11 Oct 2025 12:32:07 +0530 Subject: [PATCH 61/63] Update README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fbed8bb5..9065422b 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ More information on contributing and the general code of conduct for discussion | CSV_TO_NDJSON | [CSV to Excel](https://github.com/DhanushNehru/Python-Scripts/tree/main/CSV_TO_NDJSON) | A Python script to convert a CSV to an NDJSON files file. | | Currency Script | [Currency Script](https://github.com/DhanushNehru/Python-Scripts/tree/main/Currency%20Script) | A Python script to convert the currency of one country to that of another. | | Digital Clock | [Digital Clock](https://github.com/DhanushNehru/Python-Scripts/tree/main/Digital%20Clock) | A Python script to preview a digital clock in the terminal. | -| Disk Usage Visualizer | [Disk Usage Visualizer](https://github.com/DhanushNehru/Python-Scripts/tree/main/Disk%20Usage%20Visualizer) | A Python Script to display the top N files taking up space in your disk. +| Disk Usage Visualizer | [Disk Usage Visualizer](https://github.com/DhanushNehru/Python-Scripts/tree/main/Disk%20Usage%20Visualizer) | A Python script to display the top N directories taking up space in your disk. | Display Popup Window | [Display Popup Window](https://github.com/DhanushNehru/Python-Scripts/tree/main/Display%20Popup%20Window) | A Python script to preview a GUI interface to the user. | | Distance Calculator | [Distance Calculator](https://github.com/Mathdallas-code/Python-Scripts/tree/main/Distance%20Calculator) | A Python script to calculate the distance between two points. | Duplicate Finder | [Duplicate Finder](https://github.com/DhanushNehru/Python-Scripts/tree/main/Duplicate%Fnder) | The script identifies duplicate files by MD5 hash and allows deletion or relocation. | From dc0f56f0464a69d2f5b721368da928232d8aea86 Mon Sep 17 00:00:00 2001 From: KrutikaParab14 <55806064+krutikaParab@users.noreply.github.com> Date: Wed, 19 Nov 2025 16:08:31 +0000 Subject: [PATCH 62/63] Bug fix: Broken or missing links and formatting issues #415 --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9065422b..09b9062a 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ More information on contributing and the general code of conduct for discussion | Arrange It | [Arrange It](https://github.com/DhanushNehru/Python-Scripts/tree/main/Arrange%20It) | A Python script that can automatically move files into corresponding folders based on their extensions. | | Auto WiFi Check | [Auto WiFi Check](https://github.com/DhanushNehru/Python-Scripts/tree/main/Auto%20WiFi%20Check) | A Python script to monitor if the WiFi connection is active or not | | AutoCert | [AutoCert](https://github.com/DhanushNehru/Python-Scripts/tree/main/AutoCert) | A Python script to auto-generate e-certificates in bulk. | -| Autocomplete Notes App | [AutoCert](https://github.com/DhanushNehru/Python-Scripts/tree/main/Autocomplete%20Notes%20App) | A Python script to auto-generate e-certificates in bulk. | +| Autocomplete Notes App | [Autocomplete Notes App](https://github.com/DhanushNehru/Python-Scripts/tree/main/Autocomplete%20Notes%20App) | A Python script that provides a notes application with autocomplete features. | | Automated Emails | [Automated Emails](https://github.com/DhanushNehru/Python-Scripts/tree/main/Automate%20Emails%20Daily) | A Python script to send out personalized emails by reading a CSV file. | | Black Hat Python | [Black Hat Python](https://github.com/DhanushNehru/Python-Scripts/tree/main/Black%20Hat%20Python) | Source code from the book Black Hat Python | | Blackjack | [Blackjack](https://github.com/DhanushNehru/Python-Scripts/tree/main/Blackjack) | A game of Blackjack - let's get a 21. | @@ -87,7 +87,7 @@ More information on contributing and the general code of conduct for discussion | Image Watermarker | [Image Watermarker](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20Watermarker) | Adds a watermark to an image. | | Image to ASCII | [Image to ASCII](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20to%20ASCII) | Converts an image into ASCII art. | | Image to Gif | [Image to Gif](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20to%20GIF) | Generate gif from images. | -| Images to WebP Converter | [Images to WebP Converter](https://github.com/DhanushNehru/Python-Scripts/tree/main/Images%20to%20WebP%20Converter) | Converts images to WebP vie cmd or GUI | +| Images to WebP Converter | [Images to WebP Converter](https://github.com/DhanushNehru/Python-Scripts/tree/main/Images%20to%20WebP%20Converter) | Converts images to WebP via cmd or GUI | | Interactive Dictionary | [Interactive Dictionary](https://github.com/DhanushNehru/Python-Scripts/tree/main/Image%20InteractiveDictionary) | finding out meanings of words | | IP Geolocator | [IP Geolocator](https://github.com/DhanushNehru/Python-Scripts/tree/main/IP%20Geolocator) | Uses an IP address to geolocate a location on Earth. | | Jokes Generator | [Jokes generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Jokes%20Generator) | Generates jokes. | @@ -104,7 +104,7 @@ More information on contributing and the general code of conduct for discussion | Mood based youtube song generator | [Mood based youtube song generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Mood%20based%20youtube%20song%20generator) | This Python script fetches a random song from YouTube based on your mood input and opens it in your default web browser. | | Mouse mover | [Mouse mover](https://github.com/DhanushNehru/Python-Scripts/tree/main/Mouse%20Mover) | Moves your mouse every 15 seconds. | | Multi-Platform Icon Generator | [Multi-Platform Icon Generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Multi-Platform%20Icon%20Generator) | Automates creation of 35+ platform-specific icon sizes from one source image for app stores and web deployment. -| Morse Code | [Mose Code](https://github.com/DhanushNehru/Python-Scripts/tree/main/Morse%20Code) | Encodes and decodes Morse code. | +| Morse Code | [Morse Code](https://github.com/DhanushNehru/Python-Scripts/tree/main/Morse%20Code) | Encodes and decodes Morse code. | | No Screensaver | [No Screensaver](https://github.com/DhanushNehru/Python-Scripts/tree/main/No%20Screensaver) | Prevents screensaver from turning on. | | OTP Verification | [OTP Verification](https://github.com/DhanushNehru/Python-Scripts/tree/main/OTP%20%20Verify) | An OTP Verification Checker. | | Password Generator | [Password Generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/Password%20Generator) | Generates a random password. | @@ -120,7 +120,9 @@ More information on contributing and the general code of conduct for discussion | Pigeonhole Sort | [Algorithm](https://github.com/DhanushNehru/Python-Scripts/tree/main/PigeonHole) | The pigeonhole sort algorithm to sort your arrays efficiently! | | PNG TO JPG CONVERTOR | [PNG-To-JPG](https://github.com/DhanushNehru/Python-Scripts/tree/main/PNG%20To%20JPG) | A PNG TO JPG IMAGE CONVERTOR. | | Pomodoro Timer | [Pomodoro Timer](https://github.com/DhanushNehru/Python-Scripts/tree/main/Pomodoro%20Timer) | A Pomodoro timer | -| Python GUI Notepad | [Python GUI Notepad](https://github.com/DhanushNehru/Python-Scripts/blob/main/PDF%20Merger%20and%20Splitter/PDF%20Merger%20and%20Splitter.py) | A Python-based GUI Notepad with essential features like saving, opening, editing text files, basic formatting, and a simple user interface for quick note-taking. | +| Python GUI Notepad | [Python GUI Notepad](https://github.com/DhanushNehru/Python-Scripts/tree/main/Python%20GUI%20Notepad) | A Python-based GUI Notepad with essential features like saving, opening, editing text files, basic formatting, and a simple user interface for quick note-taking. | + +| Profanity Checker | [Profanity Checker](https://github.com/DhanushNehru/Python-Scripts/tree/main/Profanity%20Checker) | A Python script to detect and optionally censor profanity in text. | | QR Code Generator | [QR Code Generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/QR%20Code%20Generator) | This is generate a QR code from the provided link | | QR Code Scanner | [QR Code Scanner](https://github.com/DhanushNehru/Python-Scripts/tree/main/QR%20Code%20Scanner) | Helps in Sacanning the QR code in form of PNG or JPG just by running the python script. | | QR Code with logo | [QR code with Logo](https://github.com/DhanushNehru/Python-Scripts/tree/main/QR%20with%20Logo) | QR Code Customization Feature | From bd0667275d687ae7bbde45e3de92dabc9f9ff02f Mon Sep 17 00:00:00 2001 From: KrutikaParab14 <55806064+krutikaParab@users.noreply.github.com> Date: Thu, 20 Nov 2025 23:12:00 +0530 Subject: [PATCH 63/63] Update README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 09b9062a..5333ecbf 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,6 @@ More information on contributing and the general code of conduct for discussion | PNG TO JPG CONVERTOR | [PNG-To-JPG](https://github.com/DhanushNehru/Python-Scripts/tree/main/PNG%20To%20JPG) | A PNG TO JPG IMAGE CONVERTOR. | | Pomodoro Timer | [Pomodoro Timer](https://github.com/DhanushNehru/Python-Scripts/tree/main/Pomodoro%20Timer) | A Pomodoro timer | | Python GUI Notepad | [Python GUI Notepad](https://github.com/DhanushNehru/Python-Scripts/tree/main/Python%20GUI%20Notepad) | A Python-based GUI Notepad with essential features like saving, opening, editing text files, basic formatting, and a simple user interface for quick note-taking. | - | Profanity Checker | [Profanity Checker](https://github.com/DhanushNehru/Python-Scripts/tree/main/Profanity%20Checker) | A Python script to detect and optionally censor profanity in text. | | QR Code Generator | [QR Code Generator](https://github.com/DhanushNehru/Python-Scripts/tree/main/QR%20Code%20Generator) | This is generate a QR code from the provided link | | QR Code Scanner | [QR Code Scanner](https://github.com/DhanushNehru/Python-Scripts/tree/main/QR%20Code%20Scanner) | Helps in Sacanning the QR code in form of PNG or JPG just by running the python script. |