From 4e6c0b18f04edeb3ad017674cacb2d21a2012e43 Mon Sep 17 00:00:00 2001 From: Sarath Kaul Date: Tue, 12 Nov 2019 10:08:28 +0530 Subject: [PATCH 01/15] Python Program that fetches top trending news --- web_programming/fetch_news.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 web_programming/fetch_news.py diff --git a/web_programming/fetch_news.py b/web_programming/fetch_news.py new file mode 100644 index 000000000000..441190607c31 --- /dev/null +++ b/web_programming/fetch_news.py @@ -0,0 +1,26 @@ +# Created by sarathkaul on 12/11/19 + +import requests + +_NEWS_API = "https://newsapi.org/v1/articles?source=bbc-news&sortBy=top&apiKey=4dbc17e007ab436fb66416009dfb59a8" + +def fetch_bbc_news(): + # fetching data in json format + bbc_page_fetch = requests.get(_NEWS_API).json() + + # getting all articles in a string article + article = bbc_page_fetch["articles"] + + # result containing all trending news + results = [] + + for a_article in article: + results.append(a_article) + + for a_result in range(len(results)): + # printing all trending news + print(str(a_result + 1) + ".) ", results[a_result]['title']) + + +if __name__ == '__main__': + fetch_bbc_news() From f451d5192bc7fa0b573d25740841fd4315463284 Mon Sep 17 00:00:00 2001 From: Sarath Kaul Date: Tue, 12 Nov 2019 10:11:50 +0530 Subject: [PATCH 02/15] Python Program that fetches top trending news --- web_programming/fetch_news.py | 1 + 1 file changed, 1 insertion(+) diff --git a/web_programming/fetch_news.py b/web_programming/fetch_news.py index 441190607c31..e524b540629e 100644 --- a/web_programming/fetch_news.py +++ b/web_programming/fetch_news.py @@ -4,6 +4,7 @@ _NEWS_API = "https://newsapi.org/v1/articles?source=bbc-news&sortBy=top&apiKey=4dbc17e007ab436fb66416009dfb59a8" + def fetch_bbc_news(): # fetching data in json format bbc_page_fetch = requests.get(_NEWS_API).json() From f46a6b7bfad4683d6ab7af03a5d422e1abef17f2 Mon Sep 17 00:00:00 2001 From: Sarath Kaul Date: Tue, 12 Nov 2019 12:18:54 +0530 Subject: [PATCH 03/15] Revisions in Fetch BBC News --- web_programming/fetch_bbc_news.py | 18 ++++++++++++++++++ web_programming/fetch_news.py | 27 --------------------------- 2 files changed, 18 insertions(+), 27 deletions(-) create mode 100644 web_programming/fetch_bbc_news.py delete mode 100644 web_programming/fetch_news.py diff --git a/web_programming/fetch_bbc_news.py b/web_programming/fetch_bbc_news.py new file mode 100644 index 000000000000..43ffc305ea48 --- /dev/null +++ b/web_programming/fetch_bbc_news.py @@ -0,0 +1,18 @@ +# Created by sarathkaul on 12/11/19 + +import requests + +# Enter Your API Key in following URL +_NEWS_API = "https://newsapi.org/v1/articles?source=bbc-news&sortBy=top&apiKey=" + + +def fetch_bbc_news(bbc_news_api_key: str) -> None: + # fetching a list of articles in json format + bbc_news_page = requests.get(_NEWS_API + bbc_news_api_key).json() + # each article in the list is a dict + for i, article in enumerate(bbc_news_page["articles"], 1): + print(f"{i}.) {article['title']}") + + +if __name__ == '__main__': + fetch_bbc_news(bbc_news_api_key="") diff --git a/web_programming/fetch_news.py b/web_programming/fetch_news.py deleted file mode 100644 index e524b540629e..000000000000 --- a/web_programming/fetch_news.py +++ /dev/null @@ -1,27 +0,0 @@ -# Created by sarathkaul on 12/11/19 - -import requests - -_NEWS_API = "https://newsapi.org/v1/articles?source=bbc-news&sortBy=top&apiKey=4dbc17e007ab436fb66416009dfb59a8" - - -def fetch_bbc_news(): - # fetching data in json format - bbc_page_fetch = requests.get(_NEWS_API).json() - - # getting all articles in a string article - article = bbc_page_fetch["articles"] - - # result containing all trending news - results = [] - - for a_article in article: - results.append(a_article) - - for a_result in range(len(results)): - # printing all trending news - print(str(a_result + 1) + ".) ", results[a_result]['title']) - - -if __name__ == '__main__': - fetch_bbc_news() From 258d73f8dce0faae1d6272384c2e152424bf7619 Mon Sep 17 00:00:00 2001 From: Sarath Kaul Date: Tue, 12 Nov 2019 14:54:17 +0530 Subject: [PATCH 04/15] psf/black Changes --- web_programming/fetch_bbc_news.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/web_programming/fetch_bbc_news.py b/web_programming/fetch_bbc_news.py index 43ffc305ea48..7f8bc57b69f5 100644 --- a/web_programming/fetch_bbc_news.py +++ b/web_programming/fetch_bbc_news.py @@ -2,7 +2,6 @@ import requests -# Enter Your API Key in following URL _NEWS_API = "https://newsapi.org/v1/articles?source=bbc-news&sortBy=top&apiKey=" @@ -14,5 +13,5 @@ def fetch_bbc_news(bbc_news_api_key: str) -> None: print(f"{i}.) {article['title']}") -if __name__ == '__main__': +if __name__ == "__main__": fetch_bbc_news(bbc_news_api_key="") From 6e6dd6b38b064692102355cdc5dd877212d488b4 Mon Sep 17 00:00:00 2001 From: Sarath Kaul Date: Tue, 12 Nov 2019 15:06:35 +0530 Subject: [PATCH 05/15] Python Program to send slack message to a channel --- web_programming/slack_message.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 web_programming/slack_message.py diff --git a/web_programming/slack_message.py b/web_programming/slack_message.py new file mode 100644 index 000000000000..9d3cc5911181 --- /dev/null +++ b/web_programming/slack_message.py @@ -0,0 +1,20 @@ +# Created by sarathkaul on 12/11/19 + +import json +import requests + + +def send_slack_message(message_body, slack_url): + slack_data = {"text": message_body} + headers = {"Content-Type": "application/json"} + response = requests.post(slack_url, data=json.dumps(slack_data), headers=headers) + if response.status_code != 200: + raise ValueError( + "Request to slack returned an error %s, the response is:\n%s" + % (response.status_code, response.text) + ) + + +if __name__ == "main": + # Set the slack url to the one provided by Slack when you create the webhook at https://my.slack.com/services/new/incoming-webhook/ + send_slack_message("", "") From 8d74643237063b66764fe9b826a0cd605f84f6a3 Mon Sep 17 00:00:00 2001 From: Sarath Kaul Date: Tue, 12 Nov 2019 15:32:17 +0530 Subject: [PATCH 06/15] Slack Message Revision Changes --- web_programming/slack_message.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/web_programming/slack_message.py b/web_programming/slack_message.py index 9d3cc5911181..8dd0462d48e3 100644 --- a/web_programming/slack_message.py +++ b/web_programming/slack_message.py @@ -1,17 +1,15 @@ # Created by sarathkaul on 12/11/19 -import json import requests -def send_slack_message(message_body, slack_url): - slack_data = {"text": message_body} +def send_slack_message(message_body: str, slack_url: str) -> None: headers = {"Content-Type": "application/json"} - response = requests.post(slack_url, data=json.dumps(slack_data), headers=headers) + response = requests.post(slack_url, json={"text": message_body}, headers=headers) if response.status_code != 200: raise ValueError( - "Request to slack returned an error %s, the response is:\n%s" - % (response.status_code, response.text) + f"Request to slack returned an error {response.status_code}, " + f"the response is:\n{response.text}" ) From eb98b3ad8b12f1173d703cfedd3b32e225187a9b Mon Sep 17 00:00:00 2001 From: Sarath Kaul Date: Tue, 12 Nov 2019 17:47:30 +0530 Subject: [PATCH 07/15] Python Program to check Palindrome String --- data_structures/string/__init__.py | 3 +++ data_structures/string/check_palindrome.py | 15 +++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 data_structures/string/__init__.py create mode 100644 data_structures/string/check_palindrome.py diff --git a/data_structures/string/__init__.py b/data_structures/string/__init__.py new file mode 100644 index 000000000000..7bfcd76bd368 --- /dev/null +++ b/data_structures/string/__init__.py @@ -0,0 +1,3 @@ +# Created by sarathkaul on 12/11/19 + +# Enter file description here diff --git a/data_structures/string/check_palindrome.py b/data_structures/string/check_palindrome.py new file mode 100644 index 000000000000..d841ce013ecd --- /dev/null +++ b/data_structures/string/check_palindrome.py @@ -0,0 +1,15 @@ +# Created by sarathkaul on 12/11/19 + + +def check_palindrome(input_str: str) -> None: + reverse_str = "".join( + reversed(input_str) + ) # Use reversed to reverse the input string + if reverse_str == input_str: + print(f"Entered String {input_str} is Palindrome") + else: + print(f"Entered String {input_str} is not Palindrome") + + +if __name__ == "main": + print(check_palindrome("INPUT STRING")) From 60f5ba2708102ec99c39cbc0194edaf63c9caa03 Mon Sep 17 00:00:00 2001 From: Sarath Kaul Date: Tue, 12 Nov 2019 18:01:11 +0530 Subject: [PATCH 08/15] Doctest Added --- data_structures/string/check_palindrome.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/data_structures/string/check_palindrome.py b/data_structures/string/check_palindrome.py index d841ce013ecd..d59c08c69177 100644 --- a/data_structures/string/check_palindrome.py +++ b/data_structures/string/check_palindrome.py @@ -2,6 +2,13 @@ def check_palindrome(input_str: str) -> None: + """ + >>> check_palindrome("PALINDROME") + Entered String PALINDROME is not Palindrome + >>> check_palindrome("SSASS") + Entered String SSASS is Palindrome + """ + reverse_str = "".join( reversed(input_str) ) # Use reversed to reverse the input string From 19f8ef59e3b4dc7845cb2bf2ca51153d36426f55 Mon Sep 17 00:00:00 2001 From: Sarath Kaul Date: Tue, 12 Nov 2019 18:14:14 +0530 Subject: [PATCH 09/15] Python Program to check whether a String is Panagram or not --- data_structures/string/check_palindrome.py | 22 --------------------- data_structures/string/check_panagram.py | 23 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 22 deletions(-) delete mode 100644 data_structures/string/check_palindrome.py create mode 100644 data_structures/string/check_panagram.py diff --git a/data_structures/string/check_palindrome.py b/data_structures/string/check_palindrome.py deleted file mode 100644 index d59c08c69177..000000000000 --- a/data_structures/string/check_palindrome.py +++ /dev/null @@ -1,22 +0,0 @@ -# Created by sarathkaul on 12/11/19 - - -def check_palindrome(input_str: str) -> None: - """ - >>> check_palindrome("PALINDROME") - Entered String PALINDROME is not Palindrome - >>> check_palindrome("SSASS") - Entered String SSASS is Palindrome - """ - - reverse_str = "".join( - reversed(input_str) - ) # Use reversed to reverse the input string - if reverse_str == input_str: - print(f"Entered String {input_str} is Palindrome") - else: - print(f"Entered String {input_str} is not Palindrome") - - -if __name__ == "main": - print(check_palindrome("INPUT STRING")) diff --git a/data_structures/string/check_panagram.py b/data_structures/string/check_panagram.py new file mode 100644 index 000000000000..a055c2d1fc47 --- /dev/null +++ b/data_structures/string/check_panagram.py @@ -0,0 +1,23 @@ +# Created by sarathkaul on 12/11/19 + + +def check_panagram(input_str: str) -> None: + """ + A Panagram String contains all the alphabets at least once. + >>> check_panagram("The quick brown fox jumps over the lazy dog") + The quick brown fox jumps over the lazy dog is a Panagram String + >>> check_panagram("My name is Unknown") + My name is Unknown is not a Panagram String + """ + frequency = set() + + for alpha in input_str: + if alpha != " ": + frequency.add(alpha.lower()) + if len(frequency) == 26: + print(f"{input_str} is a Panagram String") + else: + print(f"{input_str} is not a Panagram String") + +if __name__ == "main": + check_panagram("INPUT STRING") \ No newline at end of file From 9ef2d40d2353ec5804ca98b24cb3c9c652b43f34 Mon Sep 17 00:00:00 2001 From: Sarath Kaul Date: Tue, 12 Nov 2019 18:14:46 +0530 Subject: [PATCH 10/15] Python Program to check whether a String is Panagram or not --- data_structures/string/check_panagram.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data_structures/string/check_panagram.py b/data_structures/string/check_panagram.py index a055c2d1fc47..8cf5e148c9fb 100644 --- a/data_structures/string/check_panagram.py +++ b/data_structures/string/check_panagram.py @@ -19,5 +19,6 @@ def check_panagram(input_str: str) -> None: else: print(f"{input_str} is not a Panagram String") + if __name__ == "main": - check_panagram("INPUT STRING") \ No newline at end of file + check_panagram("INPUT STRING") From 3bde45ba428b08a5ae931b71a111aa7baeb6e21b Mon Sep 17 00:00:00 2001 From: Sarath Kaul Date: Tue, 12 Nov 2019 18:34:24 +0530 Subject: [PATCH 11/15] Check Panagram Script Added --- data_structures/string/__init__.py | 3 --- {data_structures/string => other}/check_panagram.py | 0 2 files changed, 3 deletions(-) delete mode 100644 data_structures/string/__init__.py rename {data_structures/string => other}/check_panagram.py (100%) diff --git a/data_structures/string/__init__.py b/data_structures/string/__init__.py deleted file mode 100644 index 7bfcd76bd368..000000000000 --- a/data_structures/string/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# Created by sarathkaul on 12/11/19 - -# Enter file description here diff --git a/data_structures/string/check_panagram.py b/other/check_panagram.py similarity index 100% rename from data_structures/string/check_panagram.py rename to other/check_panagram.py From d5c95ab637b0bbcd0c8914dca46f9a40e1592ae3 Mon Sep 17 00:00:00 2001 From: Sarath Kaul Date: Tue, 12 Nov 2019 18:38:36 +0530 Subject: [PATCH 12/15] Panagram Script Added --- {other => strings}/check_panagram.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {other => strings}/check_panagram.py (100%) diff --git a/other/check_panagram.py b/strings/check_panagram.py similarity index 100% rename from other/check_panagram.py rename to strings/check_panagram.py From e8dd7a641fd44afd0307310cb2b7905fab9a920c Mon Sep 17 00:00:00 2001 From: Sarath Kaul Date: Tue, 12 Nov 2019 22:05:12 +0530 Subject: [PATCH 13/15] Anagram Script Changes --- strings/check_panagram.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/strings/check_panagram.py b/strings/check_panagram.py index 8cf5e148c9fb..149e1ff53927 100644 --- a/strings/check_panagram.py +++ b/strings/check_panagram.py @@ -1,24 +1,27 @@ # Created by sarathkaul on 12/11/19 -def check_panagram(input_str: str) -> None: +def check_panagram( + input_str: str = "The quick brown fox jumps over the lazy dog", +) -> bool: """ A Panagram String contains all the alphabets at least once. >>> check_panagram("The quick brown fox jumps over the lazy dog") - The quick brown fox jumps over the lazy dog is a Panagram String + True >>> check_panagram("My name is Unknown") - My name is Unknown is not a Panagram String + False """ frequency = set() - + input_str = input_str.replace( + " ", "" + ) # Replacing all the Whitespaces in our sentence for alpha in input_str: - if alpha != " ": - frequency.add(alpha.lower()) - if len(frequency) == 26: - print(f"{input_str} is a Panagram String") - else: - print(f"{input_str} is not a Panagram String") + frequency.add(alpha.lower()) + + return True if len(frequency) == 26 else False if __name__ == "main": - check_panagram("INPUT STRING") + check_str = "INPUT STRING" + status = check_panagram(check_str) + print(f"{check_str} is {'not ' if status else ''}a panagram string") From 28d7b62e5be28184d7c7fef121df99842477f650 Mon Sep 17 00:00:00 2001 From: Sarath Kaul Date: Tue, 12 Nov 2019 22:33:45 +0530 Subject: [PATCH 14/15] Anagram Alphabet Check Added --- strings/check_panagram.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/strings/check_panagram.py b/strings/check_panagram.py index 149e1ff53927..6f1991da2aa9 100644 --- a/strings/check_panagram.py +++ b/strings/check_panagram.py @@ -10,13 +10,16 @@ def check_panagram( True >>> check_panagram("My name is Unknown") False + >>> check_panagram("The quick brown fox jumps over the la_y dog") + False """ frequency = set() input_str = input_str.replace( " ", "" ) # Replacing all the Whitespaces in our sentence for alpha in input_str: - frequency.add(alpha.lower()) + if "a" <= alpha.lower() <= "z": + frequency.add(alpha.lower()) return True if len(frequency) == 26 else False From 625206c00af2be6bcfe3ec225a489d24aa892ccc Mon Sep 17 00:00:00 2001 From: Sarath Kaul Date: Thu, 14 Nov 2019 15:45:26 +0530 Subject: [PATCH 15/15] Python Program to fetch github info --- web_programming/fetch_github_info.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 web_programming/fetch_github_info.py diff --git a/web_programming/fetch_github_info.py b/web_programming/fetch_github_info.py new file mode 100644 index 000000000000..f6626770e833 --- /dev/null +++ b/web_programming/fetch_github_info.py @@ -0,0 +1,17 @@ +# Created by sarathkaul on 14/11/19 + +import requests + +_GITHUB_API = "https://api.github.com/user" + + +def fetch_github_info(auth_user: str, auth_pass: str) -> None: + # fetching github info using requests + info = requests.get(_GITHUB_API, auth=(auth_user, auth_pass)) + + for a_info, a_detail in info.json().items(): + print(f"{a_info}: {a_detail}") + + +if __name__ == "main": + fetch_github_info("", "")