{"id":13683049,"url":"https://github.com/ranahaani/GNews","last_synced_at":"2025-04-30T10:30:41.072Z","repository":{"id":38010529,"uuid":"339720467","full_name":"ranahaani/GNews","owner":"ranahaani","description":"A Happy and lightweight Python Package that Provides an API to search for articles on Google News and returns a JSON response.","archived":false,"fork":false,"pushed_at":"2024-05-29T07:32:19.000Z","size":412,"stargazers_count":560,"open_issues_count":23,"forks_count":95,"subscribers_count":18,"default_branch":"master","last_synced_at":"2024-05-29T20:15:18.467Z","etag":null,"topics":["article","gnews","google-news","google-news-api","google-news-homepage","google-news-rss","google-news-scraper","hacktoberfest","hacktoberfest-accepted","hacktoberfest2023","news","newspaper3k","python","rss-feed"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/gnews/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ranahaani.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-17T12:42:51.000Z","updated_at":"2024-06-09T11:54:14.625Z","dependencies_parsed_at":"2023-01-31T06:01:32.854Z","dependency_job_id":"668b5828-da9a-4486-be8a-f0bd5d631796","html_url":"https://github.com/ranahaani/GNews","commit_stats":{"total_commits":86,"total_committers":13,"mean_commits":6.615384615384615,"dds":0.5348837209302326,"last_synced_commit":"8591313e3fdaaf44e2e09f2265254fc3aaea8b56"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranahaani%2FGNews","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranahaani%2FGNews/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranahaani%2FGNews/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranahaani%2FGNews/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ranahaani","download_url":"https://codeload.github.com/ranahaani/GNews/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224206389,"owners_count":17273450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["article","gnews","google-news","google-news-api","google-news-homepage","google-news-rss","google-news-scraper","hacktoberfest","hacktoberfest-accepted","hacktoberfest2023","news","newspaper3k","python","rss-feed"],"created_at":"2024-08-02T13:01:58.644Z","updated_at":"2024-11-12T02:32:55.920Z","avatar_url":"https://github.com/ranahaani.png","language":"Python","funding_links":["https://www.buymeacoffee.com/ranahaani"],"categories":["Python"],"sub_categories":[],"readme":"[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![MIT License][license-shield]][license-url]\n[![Download][download-sheild]][download-url]\n[![LinkedIn][linkedin-shield]][linkedin-url]\n\n\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/ranahaani/GNews\"\u003e\n    \u003cimg src=\"https://github.com/ranahaani/GNews/raw/master/imgs/logo.png\" alt=\"GNews\"\u003e\n  \u003c/a\u003e\n  \n\u003ch3 align=\"center\"\u003eGNews 📰\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    A Happy and lightweight Python Package that Provides an API to search for articles on Google News and returns a usable JSON response! 🚀\n    \u003cbr /\u003e    \n    If you like ❤️ GNews or find it useful 🌟, support the project by buying me a coffee ☕.\n    \u003cbr /\u003e\n    \u003ca href=\"https://www.buymeacoffee.com/ranahaani\" target=\"_blank\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png\" alt=\"Buy Me A Coffee\" \u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/ranahaani/GNews/blob/master/README.md\"\u003e🚀 View Demo\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/ranahaani/GNews/issues\"\u003e🐞 Report Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/ranahaani/GNews/issues\"\u003e🚀 Request Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails open=\"open\"\u003e\n   \u003csummary\u003eTable of Contents 📑\u003c/summary\u003e\n   \u003col\u003e\n      \u003cli\u003e\n         \u003ca href=\"#about-gnews\"\u003eAbout 🚩\u003c/a\u003e\n         \u003cul\u003e\n            \u003cli\u003e\u003ca href=\"#demo\"\u003eDemo 📺\u003c/a\u003e\u003c/li\u003e\n         \u003c/ul\u003e\n      \u003c/li\u003e\n      \u003cli\u003e\n         \u003ca href=\"#getting-started\"\u003eGetting Started 🚀\u003c/a\u003e\n         \u003cul\u003e\n            \u003cli\u003e\u003ca href=\"#1-installing-the-gnews-package\"\u003eInstalling the GNews package 📦\u003c/a\u003e\u003c/li\u003e\n         \u003c/ul\u003e\n        \u003cul\u003e\n            \u003cli\u003e\u003ca href=\"#2-setting-up-gnews-for-local-development\"\u003eSetting Up GNews for Local Development 🧑‍💻\u003c/a\u003e\u003c/li\u003e\n         \u003c/ul\u003e\n      \u003c/li\u003e\n      \u003cli\u003e\n         \u003ca href=\"#example-usage\"\u003eUsage 🧩\u003c/a\u003e\n         \u003cul\u003e\n            \u003cli\u003e\u003ca href=\"#Get-top-news\"\u003eTop News 🌟\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"#Get-news-by-keyword\"\u003eNews by Keywords 🔎\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"#Get-news-by-major-topic\"\u003eNews by Major Topics 🚀\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"#Get-news-by-geo-location\"\u003eNews by GEO Location 🌎\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"#get-news-by-site\"\u003eNews by Site 📰\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"#results-specification\"\u003eResults 📊\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"#supported-countries\"\u003eSupported Countries 🌐\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"#supported-languages\"\u003eSupported Languages 🌍\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"#article-properties\"\u003eArticle Properties 📝\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"#getting-full-article\"\u003eGetting Full Article 📰\u003c/a\u003e\u003c/li\u003e\n         \u003c/ul\u003e\n      \u003c/li\u003e\n      \u003cli\u003e\u003ca href=\"#todo\"\u003eTo Do 📋\u003c/a\u003e\u003c/li\u003e\n      \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap 🛣️\u003c/a\u003e\u003c/li\u003e\n      \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing 🤝\u003c/a\u003e\u003c/li\u003e\n      \u003cli\u003e\u003ca href=\"#license\"\u003eLicense ⚖️\u003c/a\u003e\u003c/li\u003e\n      \u003cli\u003e\u003ca href=\"#contact\"\u003eContact 📬\u003c/a\u003e\u003c/li\u003e\n      \u003cli\u003e\u003ca href=\"#acknowledgements\"\u003eAcknowledgements 🙏\u003c/a\u003e\u003c/li\u003e\n   \u003c/ol\u003e\n\u003c/details\u003e\n\u003c!-- ABOUT GNews --\u003e\n\n## About GNews\n\n🚩 GNews is A Happy and lightweight Python Package that searches Google News RSS Feed and returns a usable JSON\nresponse \\\n🚩 As well as you can fetch full article (**No need to write scrappers for articles fetching anymore**)\n\nGoogle News cover across **141+ countries** with **41+ languages**. On the bottom left side of the Google News page you\nmay find a `Language \u0026 region` section where you can find all of the supported combinations.\n\n### Demo\n\n[![GNews Demo][demo-gif]](https://github.com/ranahaani/GNews)\n\n\n\n\u003c!-- GETTING STARTED --\u003e\n\n## Getting Started\n\nThis section provides instructions for two different use cases:\n\n1. **Installing the GNews package** for immediate use.\n2. **Setting up the GNews project** for local development.\n\n### 1. Installing the GNews package\n\nTo install the package and start using it in your own projects, follow these steps:\n\n``` shell\npip install gnews\n```\n### 2. Setting Up GNews for Local Development\n\nIf you want to make modifications locally, follow these steps to set up the development environment.\n\n#### Option 1: Setup with Docker\n\n1. Install [docker and docker-compose](https://docs.docker.com/get-docker/).\n2. Configure the `.env` file by placing your MongoDB credentials.\n3. Run the following command to build and start the Docker containers:\n\n``` shell\ndocker-compose up --build\n```\n\n#### Option 2: Install Using Git Clone\n\n1. Clone this repository:\n``` shell\ngit clone https://github.com/ranahaani/GNews.git\n```\n\n2. Set up a virtual environment:\n```shell\nvirtualenv venv\nsource venv/bin/activate  # MacOS/Linux\n.\\venv\\Scripts\\activate  # Windows\n```\n\n3. Install the required dependencies:\n```shell\npip install -r requirements.txt\n```\n\n\u003c!-- USAGE EXAMPLES --\u003e\n\n### Example usage\n\n```python\nfrom gnews import GNews\n\ngoogle_news = GNews()\npakistan_news = google_news.get_news('Pakistan')\nprint(pakistan_news[0])\n```\n\n```\n[{\n'publisher': 'Aljazeera.com',\n 'description': 'Pakistan accuses India of stoking conflict in Indian Ocean  '\n                'Aljazeera.com',\n 'published date': 'Tue, 16 Feb 2021 11:50:43 GMT',\n 'title': 'Pakistan accuses India of stoking conflict in Indian Ocean - '\n          'Aljazeera.com',\n 'url': 'https://www.aljazeera.com/news/2021/2/16/pakistan-accuses-india-of-nuclearizing-indian-ocean'\n },\n ...]\n```\n\n### Get top news\n\n* `GNews.get_top_news()`\n\n### Get news by keyword\n\n* `GNews.get_news(keyword)`\n\n### Get news by major topic\n\n* `GNews.get_news_by_topic(topic)`\n* Available topics:` WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH, POLITICS, CELEBRITIES, TV, MUSIC, MOVIES, THEATER, SOCCER, CYCLING, MOTOR SPORTS, TENNIS, COMBAT SPORTS, BASKETBALL, BASEBALL, FOOTBALL, SPORTS BETTING, WATER SPORTS, HOCKEY, GOLF, \nCRICKET, RUGBY, ECONOMY, PERSONAL FINANCE, FINANCE, DIGITAL CURRENCIES, MOBILE, ENERGY, GAMING, INTERNET SECURITY, GADGETS, VIRTUAL REALITY, ROBOTICS, NUTRITION, PUBLIC HEALTH, MENTAL HEALTH, MEDICINE, SPACE, WILDLIFE, ENVIRONMENT, NEUROSCIENCE, PHYSICS, GEOLOGY, PALEONTOLOGY, SOCIAL SCIENCES, EDUCATION, JOBS, ONLINE EDUCATION, HIGHER EDUCATION, VEHICLES, ARTS-DESIGN, BEAUTY, FOOD, TRAVEL, SHOPPING, HOME, OUTDOORS, FASHION.`\n\n### Get news by geo location\n\n* `GNews.get_news_by_location(location)`\n* location can be name of city/state/country\n\n### Get news by site\n\n* `GNews.get_news_by_site(site)`\n* site should be in the format of: `\"cnn.com\"`\n\n### Results specification\nAll parameters are optional and can be passed during initialization. Here’s a list of the available parameters:\n\n- **language**: The language in which to return results (default: 'en').\n- **country**: The country code for the headlines (default: 'US').\n- **period**: The time period for which you want news.\n- **start_date**: Date after which results must have been published.\n- **end_date**: Date before which results must have been published.\n- **max_results**: The maximum number of results to return (default: 100).\n- **exclude_websites**: A list of websites to exclude from results.\n- **proxy**: A dictionary specifying the proxy settings used to route requests. The dictionary should contain a single key-value pair where the key is the protocol (`http` or `https`) and the value is the proxy address. Example:\n```python\n# Example with only HTTP proxy\n  proxy = {\n      'http': 'http://your_proxy_address',\n  }\n  \n# Example with only HTTPS proxy\n  proxy = {\n      'https': 'http://your_proxy_address',\n  }\n```\n  \n#### Example Initialization\n```python\nfrom gnews import GNews\n\n# Initialize GNews with various parameters, including proxy\ngoogle_news = GNews(\n    language='en',\n    country='US',\n    period='7d',\n    start_date=None,\n    end_date=None,\n    max_results=10,\n    exclude_websites=['yahoo.com', 'cnn.com'],\n    proxy={\n        'https': 'https://your_proxy_address'\n    }\n)\n```\n\n* Or change it to an existing object\n\n```python\ngoogle_news.period = '7d'  # News from last 7 days\ngoogle_news.max_results = 10  # number of responses across a keyword\ngoogle_news.country = 'United States'  # News from a specific country \ngoogle_news.language = 'english'  # News in a specific language\ngoogle_news.exclude_websites = ['yahoo.com', 'cnn.com']  # Exclude news from specific website i.e Yahoo.com and CNN.com\ngoogle_news.start_date = (2020, 1, 1) # Search from 1st Jan 2020\ngoogle_news.end_date = (2020, 3, 1) # Search until 1st March 2020\n```\n\nThe format of the timeframe is a string comprised of a number, followed by a letter representing the time operator. For\nexample 1y would signify 1 year. Full list of operators below:\n\n```\n - h = hours (eg: 12h)\n - d = days (eg: 7d)\n - m = months (eg: 6m)\n - y = years (eg: 1y)\n ```\n \nSetting the start and end dates can be done by passing in either a datetime or a tuple in the form (YYYY, MM, DD).\n\n### Supported Countries\n\n```python\nprint(google_news.AVAILABLE_COUNTRIES)\n\n{'Australia': 'AU', 'Botswana': 'BW', 'Canada ': 'CA', 'Ethiopia': 'ET', 'Ghana': 'GH', 'India ': 'IN',\n 'Indonesia': 'ID', 'Ireland': 'IE', 'Israel ': 'IL', 'Kenya': 'KE', 'Latvia': 'LV', 'Malaysia': 'MY', 'Namibia': 'NA',\n 'New Zealand': 'NZ', 'Nigeria': 'NG', 'Pakistan': 'PK', 'Philippines': 'PH', 'Singapore': 'SG', 'South Africa': 'ZA',\n 'Tanzania': 'TZ', 'Uganda': 'UG', 'United Kingdom': 'GB', 'United States': 'US', 'Zimbabwe': 'ZW',\n 'Czech Republic': 'CZ', 'Germany': 'DE', 'Austria': 'AT', 'Switzerland': 'CH', 'Argentina': 'AR', 'Chile': 'CL',\n 'Colombia': 'CO', 'Cuba': 'CU', 'Mexico': 'MX', 'Peru': 'PE', 'Venezuela': 'VE', 'Belgium ': 'BE', 'France': 'FR',\n 'Morocco': 'MA', 'Senegal': 'SN', 'Italy': 'IT', 'Lithuania': 'LT', 'Hungary': 'HU', 'Netherlands': 'NL',\n 'Norway': 'NO', 'Poland': 'PL', 'Brazil': 'BR', 'Portugal': 'PT', 'Romania': 'RO', 'Slovakia': 'SK', 'Slovenia': 'SI',\n 'Sweden': 'SE', 'Vietnam': 'VN', 'Turkey': 'TR', 'Greece': 'GR', 'Bulgaria': 'BG', 'Russia': 'RU', 'Ukraine ': 'UA',\n 'Serbia': 'RS', 'United Arab Emirates': 'AE', 'Saudi Arabia': 'SA', 'Lebanon': 'LB', 'Egypt': 'EG',\n 'Bangladesh': 'BD', 'Thailand': 'TH', 'China': 'CN', 'Taiwan': 'TW', 'Hong Kong': 'HK', 'Japan': 'JP',\n 'Republic of Korea': 'KR'}\n```\n\n### Supported Languages\n\n```python\nprint(google_news.AVAILABLE_LANGUAGES)\n\n{'english': 'en', 'indonesian': 'id', 'czech': 'cs', 'german': 'de', 'spanish': 'es-419', 'french': 'fr',\n 'italian': 'it', 'latvian': 'lv', 'lithuanian': 'lt', 'hungarian': 'hu', 'dutch': 'nl', 'norwegian': 'no',\n 'polish': 'pl', 'portuguese brasil': 'pt-419', 'portuguese portugal': 'pt-150', 'romanian': 'ro', 'slovak': 'sk',\n 'slovenian': 'sl', 'swedish': 'sv', 'vietnamese': 'vi', 'turkish': 'tr', 'greek': 'el', 'bulgarian': 'bg',\n 'russian': 'ru', 'serbian': 'sr', 'ukrainian': 'uk', 'hebrew': 'he', 'arabic': 'ar', 'marathi': 'mr', 'hindi': 'hi',\n 'bengali': 'bn', 'tamil': 'ta', 'telugu': 'te', 'malyalam': 'ml', 'thai': 'th', 'chinese simplified': 'zh-Hans',\n 'chinese traditional': 'zh-Hant', 'japanese': 'ja', 'korean': 'ko'}\n```\n\n### Article Properties\n\n- Get news returns the list with following keys: `title`, `published_date`, `description`, `url`, `publisher`.\n\n| Properties   | Description                                    | Example                                                                                                                                                                                                                                                                             |\n|--------------|------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| title        | Title of the article                           | IMF Staff and Pakistan Reach Staff-Level Agreement on the Pending Reviews Under the Extended Fund Facility                                                                                                                                                                                                   |\n| url         | Google news link to article                    | [Article Link](http://news.google.com/news/url?sa=t\u0026fd=R\u0026ct2=us\u0026usg=AFQjCNGNR4Qg8LGbjszT1yt2s2lMXvvufQ\u0026clid=c3a7d30bb8a4878e06b80cf16b898331\u0026cid=52779522121279\u0026ei=VQU7WYjiFoLEhQHIs4HQCQ\u0026url=https://www.theguardian.com/commentisfree/2017/jun/07/why-dont-unicorns-exist-google) |\n| published date      | Published date                                 | Wed, 07 Jun 2017 07:01:30 GMT                                                                                                                                                                                                                                                       |\n| description  | Short description of article                   | IMF Staff and Pakistan Reach Staff-Level Agreement on the Pending Reviews Under the Extended Fund Facility ...                                                                                                                                                                                                                  |\n| publisher    | Publisher of article                           | The Guardian                                                                                                                                                                                                                                                                        |                                                                                                                                                        |\n\n## Getting full article\n\n* To read a full article you can either:\n    * Navigate to the url directly in your browser, or\n    * Use `newspaper3k` library to scrape the article\n* The article url, needed for both methods, is accessed as `article['url']`.\n\n#### Using newspaper3k\n\n1. Install the library - `pip3 install newspaper3k`.\n2. Use `get_full_article` method from `GNews`, that creates an `newspaper.article.Article` object from the url.\n\n```python\nfrom gnews import GNews\n\ngoogle_news = GNews()\njson_resp = google_news.get_news('Pakistan')\narticle = google_news.get_full_article(\n    json_resp[0]['url'])  # newspaper3k instance, you can access newspaper3k all attributes in article\n```\n\nThis new object contains `title`, `text` (full article) or `images` attributes. Examples:\n\n```python\narticle.title \n```\n\n\u003e IMF Staff and Pakistan Reach Staff-Level Agreement on the Pending Reviews Under the Extended Fund Facility'\n\n```python\narticle.text \n```\n\n\u003e End-of-Mission press releases include statements of IMF staff teams that convey preliminary findings after a mission. The views expressed are those of the IMF staff and do not necessarily represent the views of the IMF’s Executive Board.\\n\\nIMF staff and the Pakistani authorities have reached an agreement on a package of measures to complete second to fifth reviews of the authorities’ reform program supported by the IMF Extended Fund Facility (EFF) ..... (full article)\n\n```python\narticle.images\n```\n\n\u003e `{'https://www.imf.org/~/media/Images/IMF/Live-Page/imf-live-rgb-h.ashx?la=en', 'https://www.imf.org/-/media/Images/IMF/Data/imf-logo-eng-sep2019-update.ashx', 'https://www.imf.org/-/media/Images/IMF/Data/imf-seal-shadow-sep2019-update.ashx', 'https://www.imf.org/-/media/Images/IMF/Social/TW-Thumb/twitter-seal.ashx', 'https://www.imf.org/assets/imf/images/footer/IMF_seal.png'}\n`\n\n```python\narticle.authors\n```\n\n\u003e `[]`\n\nRead full documentation for `newspaper3k`\n[newspaper3k](https://newspaper.readthedocs.io/en/latest/user_guide/quickstart.html#parsing-an-article)\n\u003c!-- ToDo --\u003e\n\n## Todo\n\n- Save to MongoDB\n- Save to SQLite\n- Save to JSON\n- Save to .CSV file\n- More than 100 articles\n\n\u003c!-- ROADMAP --\u003e\n\n## Roadmap\n\nSee the [open issues](https://github.com/ranahaani/GNews/issues) for a list of proposed features (and known issues).\n\n\n\n\u003c!-- CONTRIBUTING --\u003e\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to be learn, inspire, and create. Any\ncontributions you make are **greatly appreciated**.\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\u003c!-- LICENSE --\u003e\n\n## License\n\nDistributed under the MIT License. See `LICENSE` for more information.\n\n\n\n\u003c!-- CONTACT --\u003e\n\n## Contact\n\nMuhammad Abdullah - [@ranahaani](https://twitter.com/ranahaani) - ranahaani@gmail.com\n\nProject Link: [https://github.com/ranahaani/GNews](https://github.com/ranahaani/GNews)\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/ranahaani)\n\n[contributors-shield]: https://img.shields.io/github/contributors/ranahaani/GNews.svg?style=for-the-badge\n\n[contributors-url]: https://github.com/ranahaani/GNews/graphs/contributors\n\n[forks-shield]: https://img.shields.io/github/forks/ranahaani/GNews.svg?style=for-the-badge\n\n[forks-url]: https://github.com/ranahaani/GNews/network/members\n\n[stars-shield]: https://img.shields.io/github/stars/ranahaani/GNews.svg?style=for-the-badge\n\n[stars-url]: https://github.com/ranahaani/GNews/stargazers\n\n[issues-shield]: https://img.shields.io/github/issues/ranahaani/GNews.svg?style=for-the-badge\n\n[issues-url]: https://github.com/ranahaani/GNews/issues\n\n[license-shield]: https://img.shields.io/github/license/ranahaani/GNews.svg?style=for-the-badge\n\n[license-url]: https://github.com/ranahaani/GNews/blob/master/LICENSE.txt\n\n[download-sheild]: https://img.shields.io/pypi/dm/GNews.svg?style=for-the-badge\n\n[download-url]: https://pypistats.org/packages/gnews\n\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\u0026colorB=555\n\n[linkedin-url]: https://linkedin.com/in/ranahaani\n\n[demo-gif]: https://github.com/ranahaani/GNews/raw/master/imgs/gnews.gif\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Franahaani%2FGNews","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Franahaani%2FGNews","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Franahaani%2FGNews/lists"}