From e18cd7a88064c2077684e19116057536c4989dfa Mon Sep 17 00:00:00 2001 From: ce19 <104122959+Abubakrce19@users.noreply.github.com> Date: Sat, 29 Oct 2022 22:40:13 +0500 Subject: [PATCH 1/8] GUI-Instagram-post-downloader --- .../Result/Instagram Downloader 2.png | Bin 0 -> 67261 bytes .../Result/Instagram Downloader.png | Bin 0 -> 5326 bytes .../GUI-Instagram-Downloader/img/Icon.png | Bin 0 -> 485 bytes .../GUI-Instagram-Downloader/img/image.jpg | Bin 0 -> 6629 bytes projects/GUI-Instagram-Downloader/main.py | 167 ++++++++++++++++++ .../modules/connection.py | 18 ++ 6 files changed, 185 insertions(+) create mode 100644 projects/GUI-Instagram-Downloader/Result/Instagram Downloader 2.png create mode 100644 projects/GUI-Instagram-Downloader/Result/Instagram Downloader.png create mode 100644 projects/GUI-Instagram-Downloader/img/Icon.png create mode 100644 projects/GUI-Instagram-Downloader/img/image.jpg create mode 100644 projects/GUI-Instagram-Downloader/main.py create mode 100644 projects/GUI-Instagram-Downloader/modules/connection.py diff --git a/projects/GUI-Instagram-Downloader/Result/Instagram Downloader 2.png b/projects/GUI-Instagram-Downloader/Result/Instagram Downloader 2.png new file mode 100644 index 0000000000000000000000000000000000000000..d69d98829879b06ab12453bf85454eec216010d8 GIT binary patch literal 67261 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

-T)|_|5gY5A{5DDR(KU=x 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 z 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¬Yb%v_m8-$8mdII(&!5(yiBl(+ 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 literal 0 HcmV?d00001 diff --git a/projects/GUI-Instagram-Downloader/Result/Instagram Downloader.png b/projects/GUI-Instagram-Downloader/Result/Instagram Downloader.png new file mode 100644 index 0000000000000000000000000000000000000000..aaf6ce3a5094ba6c436eb51baa6e9a64ed8f0129 GIT binary patch literal 5326 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 bGaTR(1uS$gx13QA00000NkvXXu0mjfSzgPy literal 0 HcmV?d00001 diff --git a/projects/GUI-Instagram-Downloader/img/image.jpg b/projects/GUI-Instagram-Downloader/img/image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1082fa223611f988e720c71990f11db957e532ac GIT binary patch literal 6629 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 Date: Sat, 29 Oct 2022 23:18:06 +0500 Subject: [PATCH 2/8] Create GUI-Instagram-post-downloader.mdx --- .../GUI-Instagram-post-downloader.mdx | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx diff --git a/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx b/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx new file mode 100644 index 00000000..bcb42680 --- /dev/null +++ b/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx @@ -0,0 +1,59 @@ +--- +Title: GUI-Instagram-Downloader +author: Muhammad Abubakar +datePublished: 2022-29-10 +description: This allows you to download any instagram post/profile picture. +header: To be filled +tags: + - Intermediate +--- +# GUI-Insta-Downloader + +**_Graphical User Interface Instagram Downloader_** + +## Introduction +

As Instagram does not provide any download option for thier posts(reels/profile picture/images), here is a + Gui based Instagram downloader.

+ +## Requirements +- Tkinter Library +- Instaloader Module ( Version 4.9.2 ) +- Pillow Library ( Version 9.0.1 ) +- Request Module ( Version 2.27.1 ) +- Os Module +- Threading Module + +## Features +- Download Profile Picture +- Download Posts Using Link +- Ability to Specify where to Save Images and Videos +- Simple and beautiful User interface + +## How to Install +- clone this repositry +- pip install pillow +- pip install instaloader +- pip install tk +- python3 main.py + +## Tutorial Blog +- Visit this tutorial blog of this project here: https://medium.com/@abubakrchan555/instagram-posts-downloader-tutorial-5ef57e4da0b6 + +## Result +

+ +

+

+ +

+ +## [#](#-more-resources) More Resources + +- [Solution on GitHub](To be filled) +- [Documentation: tkinter](https://docs.python.org/3/library/tkinter.html) +- [Documentation: Instaloader](https://instaloader.github.io) +- [Documentation: Pillow](https://pypi.org/project/Pillow/) + + + + From 443f837ce5dac66860790b3511669f109455855c Mon Sep 17 00:00:00 2001 From: ce19 <104122959+Abubakrce19@users.noreply.github.com> Date: Sun, 30 Oct 2022 11:56:56 +0500 Subject: [PATCH 3/8] Code_explaination added --- .../GUI-Instagram-post-downloader.mdx | 156 +++++++++++++++++- 1 file changed, 155 insertions(+), 1 deletion(-) diff --git a/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx b/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx index bcb42680..fb0437c3 100644 --- a/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx +++ b/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx @@ -47,7 +47,161 @@ tags:

-## [#](#-more-resources) More Resources +## Explaination +

Import the required Libraries and Modules

+ +```py +import qrcode +from tkinter import ttk +from tkinter import * +from tkinter import messagebox +from tkinter import filedialog +from PIL import ImageTk, Image +from instaloader import Instaloader , Post +import threading +import os +``` + +

function for downloading User profile picture

+ + +```py +def download_profile(): + def download_image(): + try: + location = filedialog.askdirectory() + os.chdir(location) + #Profile Picture starts downloading here. + obj = Instaloader() + profile = profile_pic_input.get() + obj.download_profile(profile , profile_pic_only = True) + messagebox.showinfo('STATUS','Profile Image Downloaded Successfully') + except: + messagebox.showerror('ERROR','Username Is Incorrect or Does Not Exist') + # Thread is a separate flow of execution. This means that our program will have two things happening at once + threading.Thread(target = download_image).start() +``` + +

Function for downloading image by URL

+ + +```py +def download_post( ): + # Get url from user by GUI input (Entry) + link = post_input.get() + def media(): + if 'https://www.instagram.com/p/' in link : + location = filedialog.askdirectory() + os.chdir(location) + L = Instaloader() + try : + L.login(Username , Password) + except : + messagebox.showerror('ERROR' , 'Username or Password is Wrong') + try : + short_link = link[28:39] + post = Post.from_shortcode(L.context , short_link) + L.download_post(post , target = short_link) + messagebox.showinfo('STATUS','Download Completed !') + except : + messagebox.showerror('ERROR' , 'Link Not Found , please enter the link of the image') + else : + messagebox.showerror('ERROR','URL Is Incorrect') + # thread is a separate flow of execution. This means that our program will have two things happening at once + threading.Thread(target = media).start() +``` + + +

To create a tkinter GUI frame

+ + + +```py +root = Tk() +# Define the geometry +root.geometry('300x300') +root.resizable(False , False) +# Set the title of tkinter frame +root.title('Instagram Downloader') +# Set the background of tkinter frame +root.config(background = 'grey') +Icon = PhotoImage(file='img\\Icon.png') +root.iconphoto(False, Icon) +``` + + +This function takes the Username and Password and pass them to the new_window function + + +```py +def caller(): + Username = username_entry.get() + Password = password_entry.get() + if Username and Password : + new_window(Username , Password) + else : + messagebox.showerror('Error' , 'You have to enter your Username and Password') +``` + + The new_window function + + +```py +def new_window(Username , Password): + # created a new tkinter gui window frame + new_window = Toplevel(root) + # Define the geometry + new_window.geometry('600x600') + new_window.resizable(False , False) + # Set the title of tkinter frame + new_window.title('Instagram Downloader') + # Set the background of tkinter frame + new_window.config(background = 'grey') + Icon = PhotoImage(file='img\\Icon.png') + new_window.iconphoto(False, Icon) + + # Load an image + load_img = Image.open('img\image.jpg') + # Resize the image using resize method + resize_img = load_img.resize((150 , 150) , Image.Resampling.LANCZOS) + # Create an object of tkinter ImageTk and pass the resized image to it + img = ImageTk.PhotoImage(resize_img) + # Create a Label Widget to display the Image + label_img = ttk.Label(new_window , image = img) + label_img.place(x = 30 , y = 20) + + # Create a Label Widget to display the text next to the img + label_img_text = Label(new_window , text = 'Instagram' , bg = 'grey' , fg = 'white' , font = ('Calibri' , 50 , 'bold')) + label_img_text.place(x = 230 , y = 45) + # Creat a Label Widget to display the hint text + hint_text=Label(new_window , text = '* Enter the Username of your desired account in below to download profile picture *' , bg = 'grey' , fg = 'yellow' , font = ('Calibri' , 10)) + hint_text.place(x = 60 , y = 220) + hint_text2=Label(new_window , text = '* Enter the Link of your desire Image from instagram in below to download it *' , bg = 'grey' , fg = 'yellow' , font = ('Calibri' , 10)) + hint_text2.place(x = 70 , y = 360) + + # Set the current value of the input with a StringVar object + Current_value = StringVar() + # Set input to receive username and download the profile picture + profile_pic_input = ttk.Entry(new_window , textvariable = Current_value , width = 35) + # the Entry widget has focus, it’s ready to accept the user input + profile_pic_input.focus() + profile_pic_input.place(x = 190 , y = 260) + + # Set the current value of the input with a StringVar object + Current_value2 = StringVar() + # Set input to recieve instagram image or video URL + post_input = ttk.Entry(new_window , textvariable = Current_value2 , width = 35) + # the Entry widget has focus, it’s ready to accept the user input + post_input.focus() + post_input.place(x = 190 , y = 400) + ... +``` + + + + + +## More Resources - [Solution on GitHub](To be filled) - [Documentation: tkinter](https://docs.python.org/3/library/tkinter.html) From 607706cbce0e5d40cb29ce806e49a4303439adb0 Mon Sep 17 00:00:00 2001 From: ce19 <104122959+Abubakrce19@users.noreply.github.com> Date: Sun, 30 Oct 2022 11:58:03 +0500 Subject: [PATCH 4/8] Tutorial(heading) deleted --- .../GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx | 3 --- 1 file changed, 3 deletions(-) diff --git a/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx b/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx index fb0437c3..8ba45486 100644 --- a/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx +++ b/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx @@ -36,9 +36,6 @@ tags: - pip install tk - python3 main.py -## Tutorial Blog -- Visit this tutorial blog of this project here: https://medium.com/@abubakrchan555/instagram-posts-downloader-tutorial-5ef57e4da0b6 - ## Result

From 61f5eaf7bd0075b2240f2267739e8b29b70cc452 Mon Sep 17 00:00:00 2001 From: ce19 <104122959+Abubakrce19@users.noreply.github.com> Date: Sun, 30 Oct 2022 22:50:28 +0500 Subject: [PATCH 5/8] Typo fixed --- .../GUI-Instagram-post-downloader.mdx | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx b/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx index 8ba45486..f055dc67 100644 --- a/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx +++ b/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx @@ -2,7 +2,7 @@ Title: GUI-Instagram-Downloader author: Muhammad Abubakar datePublished: 2022-29-10 -description: This allows you to download any instagram post/profile picture. +description: This allows you to download any Instagram post/profile picture. header: To be filled tags: - Intermediate @@ -12,8 +12,8 @@ tags: **_Graphical User Interface Instagram Downloader_** ## Introduction -

As Instagram does not provide any download option for thier posts(reels/profile picture/images), here is a - Gui based Instagram downloader.

+

Have you ever wanted to download a post from Instagram? and realise that Instagram does not provide a download option. + Well in this tutorial we will create our own Instagram Post downloader it could be either a reel, Image, or your profile picture.

## Requirements - Tkinter Library @@ -25,21 +25,19 @@ tags: ## Features - Download Profile Picture -- Download Posts Using Link +- Download Posts Using the Link - Ability to Specify where to Save Images and Videos - Simple and beautiful User interface ## How to Install -- clone this repositry +- clone this repository[to be filled] - pip install pillow - pip install instaloader - pip install tk - python3 main.py ## Result -

- -

+

From f0694ade17a2bd4d4a787b975cf9019597319019 Mon Sep 17 00:00:00 2001 From: ce19 <104122959+Abubakrce19@users.noreply.github.com> Date: Sun, 30 Oct 2022 22:51:29 +0500 Subject: [PATCH 6/8] Update GUI-Instagram-post-downloader.mdx --- .../GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx b/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx index f055dc67..fbcc559b 100644 --- a/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx +++ b/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx @@ -13,7 +13,7 @@ tags: ## Introduction

Have you ever wanted to download a post from Instagram? and realise that Instagram does not provide a download option. - Well in this tutorial we will create our own Instagram Post downloader it could be either a reel, Image, or your profile picture.

+ Well in this tutorial we will create our own Instagram Post downloader.

## Requirements - Tkinter Library From a18b8a3d7d8394a81a3a7bf50aedf941f601dac6 Mon Sep 17 00:00:00 2001 From: ce19 <104122959+Abubakrce19@users.noreply.github.com> Date: Tue, 1 Nov 2022 18:41:40 +0500 Subject: [PATCH 7/8] Instaloader intro added(incomplete) --- .../GUI-Instagram-post-downloader.mdx | 44 ++++++++++++------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx b/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx index fbcc559b..e0ba0734 100644 --- a/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx +++ b/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx @@ -14,6 +14,16 @@ tags: ## Introduction

Have you ever wanted to download a post from Instagram? and realise that Instagram does not provide a download option. Well in this tutorial we will create our own Instagram Post downloader.

+ +## Instaloader +In this project we will be using Instaloader, the Instaloader module is a Python package having great functionalities to scrap instagram, it's functions can be used as command-line utility.It is a tool to download pictures or videos along with their captions and other metadata from Instagram. +**How to Install:** +With Python already installed, do: +```py +$ pip3 install instaloader +$ instaloader profile [profile ...] +``` +See Install Instaloader for more options on how to install Instaloader. ## Requirements - Tkinter Library @@ -42,7 +52,7 @@ tags:

-## Explaination +## Explanation

Import the required Libraries and Modules

```py @@ -52,7 +62,7 @@ from tkinter import * from tkinter import messagebox from tkinter import filedialog from PIL import ImageTk, Image -from instaloader import Instaloader , Post +from instaloader import Instaloader, Post import threading import os ``` @@ -69,7 +79,7 @@ def download_profile(): #Profile Picture starts downloading here. obj = Instaloader() profile = profile_pic_input.get() - obj.download_profile(profile , profile_pic_only = True) + obj.download_profile(profile, profile_pic_only = True) messagebox.showinfo('STATUS','Profile Image Downloaded Successfully') except: messagebox.showerror('ERROR','Username Is Incorrect or Does Not Exist') @@ -90,16 +100,16 @@ def download_post( ): os.chdir(location) L = Instaloader() try : - L.login(Username , Password) + L.login(Username,Password) except : - messagebox.showerror('ERROR' , 'Username or Password is Wrong') + messagebox.showerror('ERROR','Username or Password is Wrong') try : short_link = link[28:39] post = Post.from_shortcode(L.context , short_link) - L.download_post(post , target = short_link) + L.download_post(post,target = short_link) messagebox.showinfo('STATUS','Download Completed !') except : - messagebox.showerror('ERROR' , 'Link Not Found , please enter the link of the image') + messagebox.showerror('ERROR','Link Not Found,please enter the link of the image') else : messagebox.showerror('ERROR','URL Is Incorrect') # thread is a separate flow of execution. This means that our program will have two things happening at once @@ -115,13 +125,13 @@ def download_post( ): root = Tk() # Define the geometry root.geometry('300x300') -root.resizable(False , False) +root.resizable(False,False) # Set the title of tkinter frame root.title('Instagram Downloader') # Set the background of tkinter frame root.config(background = 'grey') Icon = PhotoImage(file='img\\Icon.png') -root.iconphoto(False, Icon) +root.iconphoto(False,Icon) ``` @@ -133,37 +143,37 @@ def caller(): Username = username_entry.get() Password = password_entry.get() if Username and Password : - new_window(Username , Password) + new_window(Username,Password) else : - messagebox.showerror('Error' , 'You have to enter your Username and Password') + messagebox.showerror('Error','You have to enter your Username and Password') ``` The new_window function ```py -def new_window(Username , Password): +def new_window(Username,Password): # created a new tkinter gui window frame new_window = Toplevel(root) # Define the geometry new_window.geometry('600x600') - new_window.resizable(False , False) + new_window.resizable(False,False) # Set the title of tkinter frame new_window.title('Instagram Downloader') # Set the background of tkinter frame new_window.config(background = 'grey') Icon = PhotoImage(file='img\\Icon.png') - new_window.iconphoto(False, Icon) + new_window.iconphoto(False,Icon) # Load an image load_img = Image.open('img\image.jpg') # Resize the image using resize method - resize_img = load_img.resize((150 , 150) , Image.Resampling.LANCZOS) + resize_img = load_img.resize((150,150),Image.Resampling.LANCZOS) # Create an object of tkinter ImageTk and pass the resized image to it img = ImageTk.PhotoImage(resize_img) # Create a Label Widget to display the Image - label_img = ttk.Label(new_window , image = img) - label_img.place(x = 30 , y = 20) + label_img = ttk.Label(new_window,image = img) + label_img.place(x = 30,y = 20) # Create a Label Widget to display the text next to the img label_img_text = Label(new_window , text = 'Instagram' , bg = 'grey' , fg = 'white' , font = ('Calibri' , 50 , 'bold')) From 2862431237a3d402a0f9d4d2529ca08f1d00cc25 Mon Sep 17 00:00:00 2001 From: ce19 <104122959+Abubakrce19@users.noreply.github.com> Date: Fri, 4 Nov 2022 23:16:49 +0500 Subject: [PATCH 8/8] tkinter(incomplete) --- .../GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx b/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx index e0ba0734..c8adaae3 100644 --- a/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx +++ b/projects/GUI-Instagram-Downloader/GUI-Instagram-post-downloader.mdx @@ -25,6 +25,9 @@ $ instaloader profile [profile ...] ``` See Install Instaloader for more options on how to install Instaloader. +## Tkinter +Python has a lot of GUI frameworks, but Tkinter is the only framework that’s built into the Python standard library. Tkinter has several strengths. It’s cross-platform, so the same code works on Windows, macOS, and Linux. Visual elements are rendered using native operating system elements, so applications built with Tkinter look like they belong on the platform where they’re run. + ## Requirements - Tkinter Library - Instaloader Module ( Version 4.9.2 )