<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dhruv Panchal</title>
    <description>The latest articles on DEV Community by Dhruv Panchal (@dhhruv).</description>
    <link>https://dev.to/dhhruv</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F555868%2F2558571f-1557-4b86-8f43-f7a39d0f5319.png</url>
      <title>DEV Community: Dhruv Panchal</title>
      <link>https://dev.to/dhhruv</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dhhruv"/>
    <language>en</language>
    <item>
      <title>ISSUE-LABELER: Automated Issue Labeling for GitHub</title>
      <dc:creator>Dhruv Panchal</dc:creator>
      <pubDate>Thu, 18 May 2023 23:03:36 +0000</pubDate>
      <link>https://dev.to/dhhruv/issue-labeler-1epe</link>
      <guid>https://dev.to/dhhruv/issue-labeler-1epe</guid>
      <description>&lt;p&gt;A project submitted for the GitHub + DEV 2023 Hackathon. This tool assists maintainers by extracting labels from the bodies of GitHub issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  Category Submission
&lt;/h2&gt;

&lt;p&gt;Maintainer Must-Haves&lt;/p&gt;

&lt;h2&gt;
  
  
  App Link
&lt;/h2&gt;

&lt;p&gt;You can find Issue Labeler &lt;a href="https://github.com/dhhruv/ISSUE-LABELER"&gt;here&lt;/a&gt;. Want to learn more about how to use Issue Labeler? Check out our &lt;a href="https://github.com/dhhruv/ISSUE-LABELER/blob/master/USAGE.md"&gt;Usage Guide&lt;/a&gt;.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/ISSUE-LABELER"&gt;
        ISSUE-LABELER
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      This tool is an aid for open-source maintainers. It is designed to automatically extract labels from GitHub issue descriptions and add them to the issue. This means maintainers do not have to manually label issues, reducing their workload and ensuring that issues are labeled accurately and consistently.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/72680045/239402555-9748a7a5-4458-4470-9e58-08a0c33898b1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K49CWh0j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/72680045/239402555-9748a7a5-4458-4470-9e58-08a0c33898b1.png"&gt;&lt;/a&gt;
  &lt;/p&gt;
&lt;h2&gt;
ISSUE-LABELER: Automated Issue Labeling for GitHub&lt;/h2&gt;
  &lt;p&gt;
    &lt;a href="https://github.com/dhhruv/ISSUE-LABELER/blob/master/LICENSE"&gt;
      &lt;img src="https://camo.githubusercontent.com/b0ae38dceb7087a93c566bcf5fd05b0e511edd3d523a290e0a9fe465b4c97df0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d696e666f726d6174696f6e616c"&gt;
    &lt;/a&gt;
    &lt;a href="https://nodejs.org/" rel="nofollow"&gt;
        &lt;img src="https://camo.githubusercontent.com/a3e97d9cd25f555f08d52a1564694a74c21a80802b9f2333b66af13f6d75299e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e6f64652e6a732d7631342d696e666f726d6174696f6e616c"&gt;
    &lt;/a&gt;
    &lt;a href="https://github.com/dhhruv/ISSUE-LABELER#"&gt;
      &lt;img src="https://camo.githubusercontent.com/086aa69151b08949221ff640dd975bf715596b2ea16de199dcf6d43c1c0eb642/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4a6176615363726970742d4553362d677265656e"&gt;
    &lt;/a&gt;
    &lt;a href="https://github.com/dhhruv/ISSUE-LABELER#"&gt;
      &lt;img src="https://camo.githubusercontent.com/b7dbb1af38fc2ed343d7ffd8c170f20294822ba00954b51b8297a9ccfdade802/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f476974487562253230416374696f6e732d43492f43442d626c7565"&gt;
    &lt;/a&gt;
  &lt;/p&gt;
&lt;p&gt;
    &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7dd59506447a5060c5df4ab9da2c7a3fefcb0e1cd86ba40d31a45666bc98e6e0/687474703a2f2f466f7254686542616467652e636f6d2f696d616765732f6261646765732f6275696c742d776974682d6c6f76652e737667"&gt;&lt;img src="https://camo.githubusercontent.com/7dd59506447a5060c5df4ab9da2c7a3fefcb0e1cd86ba40d31a45666bc98e6e0/687474703a2f2f466f7254686542616467652e636f6d2f696d616765732f6261646765732f6275696c742d776974682d6c6f76652e737667"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://dev.to/dhhruv/issue-labeler-1epe" rel="nofollow"&gt;
        &lt;img src="https://camo.githubusercontent.com/a9a2d68ad493ff831774f24528ff151a3fd455c80122dcaa44af2475300b51b5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6465762e746f2d3041304130413f7374796c653d666f722d7468652d6261646765266c6f676f3d6465762e746f266c6f676f436f6c6f723d7768697465"&gt;
    &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;A project submitted for the GitHub + DEV 2023 Hackathon. This tool assists maintainers by extracting labels from the bodies of GitHub issues.&lt;/p&gt;

&lt;h2&gt;
Category Submission&lt;/h2&gt;
&lt;p&gt;Maintainer Must-Haves&lt;/p&gt;
&lt;h2&gt;
App Link&lt;/h2&gt;
&lt;p&gt;You can find Issue Labeler &lt;a href="https://github.com/dhhruv/ISSUE-LABELER"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Description&lt;/h2&gt;
&lt;p&gt;This tool is an aid for open-source maintainers. It is designed to automatically extract labels from GitHub issue descriptions and add them to the issue. This means maintainers do not have to manually label issues, reducing their workload and ensuring that issues are labeled accurately and consistently.&lt;/p&gt;
&lt;h2&gt;
Screenshots&lt;/h2&gt;
&lt;p&gt;These screenshots demonstrate the Issue Labeler in action on five different issues. Once each issue is created, the GitHub Actions workflow triggers and the tool starts its work.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;First Issue:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/dhhruv/ISSUE-LABELER/blob/master/.images/issue-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w-dfQrxg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/dhhruv/ISSUE-LABELER/raw/master/.images/issue-1.png" alt="First issue labels"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Second Issue:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/dhhruv/ISSUE-LABELER/blob/master/.images/issue-2.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fiGIlyqL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/dhhruv/ISSUE-LABELER/raw/master/.images/issue-2.png" alt="Second issue labels"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Third Issue:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/dhhruv/ISSUE-LABELER/blob/master/.images/issue-3.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v8np5WBA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/dhhruv/ISSUE-LABELER/raw/master/.images/issue-3.png" alt="Third issue labels"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fourth Issue:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/dhhruv/ISSUE-LABELER/blob/master/.images/issue-4.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TOPqiNdb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/dhhruv/ISSUE-LABELER/raw/master/.images/issue-4.png" alt="Fourth issue labels"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fifth Issue:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/dhhruv/ISSUE-LABELER/blob/master/.images/issue-5.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MiP0Jsze--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/dhhruv/ISSUE-LABELER/raw/master/.images/issue-5.png" alt="Fifth issue labels"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
Link to Source Code&lt;/h2&gt;
&lt;p&gt;You can see how we built Issue Labeler by checking out the &lt;a href="https://github.com/dhhruv/ISSUE-LABELER"&gt;source code&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Background&lt;/h2&gt;
&lt;p&gt;This project was…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/dhhruv/ISSUE-LABELER"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;
  
  
  Description
&lt;/h2&gt;

&lt;p&gt;This tool is an aid for open-source maintainers. It is designed to automatically extract labels from GitHub issue descriptions and add them to the issue. This means maintainers do not have to manually label issues, reducing their workload and ensuring that issues are labeled accurately and consistently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Screenshots
&lt;/h2&gt;

&lt;p&gt;These screenshots demonstrate the Issue Labeler in action on five different issues. Once each issue is created, the GitHub Actions workflow triggers and the tool starts its work.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;First Issue:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Xcy8pJV4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ghui75lm27s8wazw0wdo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xcy8pJV4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ghui75lm27s8wazw0wdo.png" alt="First issue labels" width="800" height="689"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Second Issue:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N9Mfw-aP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yntjq0bt3461whg1gcl6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N9Mfw-aP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yntjq0bt3461whg1gcl6.png" alt="Second issue labels" width="800" height="701"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Third Issue:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Zr7moSRb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/29vmoz71crbtna4ap6jy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zr7moSRb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/29vmoz71crbtna4ap6jy.png" alt="Third issue labels" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fourth Issue:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ru5Yfd8s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3g2von83ctdlre5edtl5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ru5Yfd8s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3g2von83ctdlre5edtl5.png" alt="Fourth issue labels" width="800" height="824"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fifth Issue:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Tx57lo5B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/knbz6x0fc8tp75ibaq70.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Tx57lo5B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/knbz6x0fc8tp75ibaq70.png" alt="Fifth issue labels" width="800" height="717"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Link to Source Code
&lt;/h2&gt;

&lt;p&gt;You can see how we built Issue Labeler by checking out the &lt;a href="https://github.com/dhhruv/ISSUE-LABELER"&gt;source code&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/ISSUE-LABELER"&gt;
        ISSUE-LABELER
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      This tool is an aid for open-source maintainers. It is designed to automatically extract labels from GitHub issue descriptions and add them to the issue. This means maintainers do not have to manually label issues, reducing their workload and ensuring that issues are labeled accurately and consistently.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/72680045/239402555-9748a7a5-4458-4470-9e58-08a0c33898b1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K49CWh0j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/72680045/239402555-9748a7a5-4458-4470-9e58-08a0c33898b1.png"&gt;&lt;/a&gt;
  &lt;/p&gt;
&lt;h2&gt;
ISSUE-LABELER: Automated Issue Labeling for GitHub&lt;/h2&gt;
  &lt;p&gt;
    &lt;a href="https://github.com/dhhruv/ISSUE-LABELER/blob/master/LICENSE"&gt;
      &lt;img src="https://camo.githubusercontent.com/b0ae38dceb7087a93c566bcf5fd05b0e511edd3d523a290e0a9fe465b4c97df0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d696e666f726d6174696f6e616c"&gt;
    &lt;/a&gt;
    &lt;a href="https://nodejs.org/" rel="nofollow"&gt;
        &lt;img src="https://camo.githubusercontent.com/a3e97d9cd25f555f08d52a1564694a74c21a80802b9f2333b66af13f6d75299e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e6f64652e6a732d7631342d696e666f726d6174696f6e616c"&gt;
    &lt;/a&gt;
    &lt;a href="https://github.com/dhhruv/ISSUE-LABELER#"&gt;
      &lt;img src="https://camo.githubusercontent.com/086aa69151b08949221ff640dd975bf715596b2ea16de199dcf6d43c1c0eb642/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4a6176615363726970742d4553362d677265656e"&gt;
    &lt;/a&gt;
    &lt;a href="https://github.com/dhhruv/ISSUE-LABELER#"&gt;
      &lt;img src="https://camo.githubusercontent.com/b7dbb1af38fc2ed343d7ffd8c170f20294822ba00954b51b8297a9ccfdade802/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f476974487562253230416374696f6e732d43492f43442d626c7565"&gt;
    &lt;/a&gt;
  &lt;/p&gt;
&lt;p&gt;
    &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7dd59506447a5060c5df4ab9da2c7a3fefcb0e1cd86ba40d31a45666bc98e6e0/687474703a2f2f466f7254686542616467652e636f6d2f696d616765732f6261646765732f6275696c742d776974682d6c6f76652e737667"&gt;&lt;img src="https://camo.githubusercontent.com/7dd59506447a5060c5df4ab9da2c7a3fefcb0e1cd86ba40d31a45666bc98e6e0/687474703a2f2f466f7254686542616467652e636f6d2f696d616765732f6261646765732f6275696c742d776974682d6c6f76652e737667"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://dev.to/dhhruv/issue-labeler-1epe" rel="nofollow"&gt;
        &lt;img src="https://camo.githubusercontent.com/a9a2d68ad493ff831774f24528ff151a3fd455c80122dcaa44af2475300b51b5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6465762e746f2d3041304130413f7374796c653d666f722d7468652d6261646765266c6f676f3d6465762e746f266c6f676f436f6c6f723d7768697465"&gt;
    &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;A project submitted for the GitHub + DEV 2023 Hackathon. This tool assists maintainers by extracting labels from the bodies of GitHub issues.&lt;/p&gt;

&lt;h2&gt;
Category Submission&lt;/h2&gt;
&lt;p&gt;Maintainer Must-Haves&lt;/p&gt;
&lt;h2&gt;
App Link&lt;/h2&gt;
&lt;p&gt;You can find Issue Labeler &lt;a href="https://github.com/dhhruv/ISSUE-LABELER"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Description&lt;/h2&gt;
&lt;p&gt;This tool is an aid for open-source maintainers. It is designed to automatically extract labels from GitHub issue descriptions and add them to the issue. This means maintainers do not have to manually label issues, reducing their workload and ensuring that issues are labeled accurately and consistently.&lt;/p&gt;
&lt;h2&gt;
Screenshots&lt;/h2&gt;
&lt;p&gt;These screenshots demonstrate the Issue Labeler in action on five different issues. Once each issue is created, the GitHub Actions workflow triggers and the tool starts its work.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;First Issue:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/dhhruv/ISSUE-LABELER/blob/master/.images/issue-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w-dfQrxg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/dhhruv/ISSUE-LABELER/raw/master/.images/issue-1.png" alt="First issue labels"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Second Issue:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/dhhruv/ISSUE-LABELER/blob/master/.images/issue-2.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fiGIlyqL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/dhhruv/ISSUE-LABELER/raw/master/.images/issue-2.png" alt="Second issue labels"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Third Issue:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/dhhruv/ISSUE-LABELER/blob/master/.images/issue-3.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v8np5WBA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/dhhruv/ISSUE-LABELER/raw/master/.images/issue-3.png" alt="Third issue labels"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fourth Issue:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/dhhruv/ISSUE-LABELER/blob/master/.images/issue-4.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TOPqiNdb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/dhhruv/ISSUE-LABELER/raw/master/.images/issue-4.png" alt="Fourth issue labels"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fifth Issue:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/dhhruv/ISSUE-LABELER/blob/master/.images/issue-5.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MiP0Jsze--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/dhhruv/ISSUE-LABELER/raw/master/.images/issue-5.png" alt="Fifth issue labels"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
Link to Source Code&lt;/h2&gt;
&lt;p&gt;You can see how we built Issue Labeler by checking out the &lt;a href="https://github.com/dhhruv/ISSUE-LABELER"&gt;source code&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Background&lt;/h2&gt;
&lt;p&gt;This project was…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/dhhruv/ISSUE-LABELER"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;This project was inspired by the need to streamline the workflow for open-source maintainers. We observed that labelling issues was a recurring task that could be automated to save maintainers time and effort. We chose to participate in the Maintainer Must-Haves category for the GitHub + DEV 2023 Hackathon, as we believed this was a valuable tool that could assist many maintainers.&lt;/p&gt;

&lt;h2&gt;
  
  
  How We Built It
&lt;/h2&gt;

&lt;p&gt;We utilized GitHub Actions to create a workflow that triggers whenever a new issue is created. This workflow runs a script that analyzes the issue description and extracts labels based on predefined keywords. The script then adds these labels to the issue.&lt;/p&gt;

&lt;p&gt;We also made use of GitHub Codespaces to develop and test our code. This made it easy for our team to collaborate and ensured that we had a consistent development environment.&lt;/p&gt;

&lt;p&gt;During the project, we learned a great deal about GitHub Actions and Codespaces, including how to create custom workflows and how to set up a development environment in Codespaces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Team
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dhruv Panchal&lt;/strong&gt;: &lt;a href="https://github.com/dhhruv"&gt;GitHub&lt;/a&gt; | &lt;a href="https://dev.to/dhhruv"&gt;DEV&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Jayati Thakkar&lt;/strong&gt;: &lt;a href="https://github.com/jayatithakkar"&gt;GitHub&lt;/a&gt; | &lt;a href="https://dev.to/jayatithakkar"&gt;DEV&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Permissive License
&lt;/h2&gt;

&lt;p&gt;This project is licensed under the MIT License - see the &lt;a href="https://github.com/dhhruv/ISSUE-LABELER/blob/master/LICENSE"&gt;LICENSE&lt;/a&gt; file for details.&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Resources/Info
&lt;/h2&gt;

&lt;p&gt;Want to learn more about how to use Issue Labeler? Check out our &lt;a href="https://github.com/dhhruv/ISSUE-LABELER/blob/master/USAGE.md"&gt;Usage Guide&lt;/a&gt;. You can also contribute to this project by submitting a pull request or opening an issue on GitHub.&lt;/p&gt;

</description>
      <category>githubhack23</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Sudoku Solver: The Ultimate Tool for Solving Puzzles with Ease</title>
      <dc:creator>Dhruv Panchal</dc:creator>
      <pubDate>Thu, 30 Mar 2023 00:54:04 +0000</pubDate>
      <link>https://dev.to/dhhruv/sudoku-solver-the-ultimate-tool-for-solving-puzzles-with-ease-522b</link>
      <guid>https://dev.to/dhhruv/sudoku-solver-the-ultimate-tool-for-solving-puzzles-with-ease-522b</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Are you tired of spending hours trying to solve Sudoku puzzles by hand? Look no further than Sudoku Solver, the ultimate tool for solving Sudoku puzzles quickly and easily. With its powerful algorithm and easy-to-use GUI, Sudoku Solver is the perfect solution for anyone looking to improve their logic and reasoning skills while having fun.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sudoku is a popular number-placement puzzle game that requires players to fill a nine-by-nine grid with digits so that each row, column, and 3x3 section contains numbers between 1 and 9, with each number used once and only once in each section. It's a challenging game that helps improve concentration, memory, and cognitive abilities. But solving Sudoku puzzles by hand can be time-consuming and frustrating, especially for beginners.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Sudoku-Solver"&gt;
        Sudoku-Solver
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🎯 This Python-based Sudoku Solver utilizes the PyGame Library and Backtracking Algorithm to visualize and solve Sudoku puzzles efficiently. With its intuitive interface, users can input and interact with the Sudoku board, allowing for a seamless solving experience.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;p&gt;That's where Sudoku Solver comes in. Our script generates a random, solvable Sudoku board every time it's executed, allowing you to solve puzzles quickly and easily. The GUI is intuitive and easy to use, with simple controls for inputting your solutions. Plus, our visualizer feature demonstrates how the backtracking algorithm works, so you can understand the logic behind each solution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sudoku Solver is perfect for anyone who loves Sudoku puzzles, whether you're a beginner or an experienced player. With its powerful algorithm and easy-to-use GUI, you'll be solving puzzles in no time. Plus, Sudoku is a great way to exercise your brain and improve your cognitive abilities, making it a fun and challenging game for people of all ages.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--40eDQSWt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cdf37yv1e3mcn0aat5ip.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--40eDQSWt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cdf37yv1e3mcn0aat5ip.gif" alt="Entering Values" width="696" height="786"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To get started with Sudoku Solver, simply download the repository and run the SudokuGUI.py file. You'll be presented with a random Sudoku board and a GUI for inputting your solutions. Use the left-click to select the box you want to fill, then enter your value and confirm it by pressing the Enter key. If you get stuck on a tricky puzzle, press the Spacebar key to solve the board using the backtracking algorithm. You can also receive hints by pressing the "h" key, which will display a random correct value on the board.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--12TZlEaQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/afttou4aho4ok6s4ftt4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--12TZlEaQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/afttou4aho4ok6s4ftt4.gif" alt="Visualizer" width="696" height="786"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sudoku Solver is a fun and challenging way to exercise your brain while having fun. So what are you waiting for? Download Sudoku Solver today and start solving puzzles with ease!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can get more information about Sudoku Solver on: &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Sudoku-Solver"&gt;
        Sudoku-Solver
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🎯 This Python-based Sudoku Solver utilizes the PyGame Library and Backtracking Algorithm to visualize and solve Sudoku puzzles efficiently. With its intuitive interface, users can input and interact with the Sudoku board, allowing for a seamless solving experience.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>codenewbie</category>
      <category>python</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Book CoWIN Vaccination Slots directly from your Terminal...</title>
      <dc:creator>Dhruv Panchal</dc:creator>
      <pubDate>Sun, 23 May 2021 07:33:32 +0000</pubDate>
      <link>https://dev.to/dhhruv/book-cowin-vaccination-slots-directly-from-your-terminal-7nb</link>
      <guid>https://dev.to/dhhruv/book-cowin-vaccination-slots-directly-from-your-terminal-7nb</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.cowin.gov.in/home" rel="noopener noreferrer"&gt;CoWIN Portal&lt;/a&gt;&lt;/strong&gt; is used to self-register yourself for the &lt;strong&gt;Vaccination&lt;/strong&gt; process in India. Here you can register yourself with your Phone Number and avail a slot from the available slots in various Vaccination Centres around the country.&lt;/p&gt;

&lt;h2&gt;
  
  
  About
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;VacCowin&lt;/strong&gt; is a CLI based Python Script that can be used to perform tasks such as OTP Generation till Vaccination Slot Booking from Co-WIN Platform directly from your Terminal.  This script rechecks after every few seconds and when the slots are available, it &lt;strong&gt;confirms the slot only after you enter the captcha shown on the screen.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Since India has started the Vaccination Drive for those above 18 years of age, there is a very heavy rush and slots get booked soon. This script will come in handy for booking those slots as soon as they open.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IMPORTANT: This is a Proof of Concept (POC) Project. I OR the Team do NOT endorse or condone, in any shape or form, automating any monitoring/booking tasks. It's only made for Educational Purposes. Use this at your own risk.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The data used is retrieved using the open APIs at &lt;a href="https://apisetu.gov.in/public/marketplace/api/cowin" rel="noopener noreferrer"&gt;API Setu&lt;/a&gt;. It works on both Linux and Windows.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Vac-Cowin" rel="noopener noreferrer"&gt;
        Vac-Cowin
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      💉 One Stop Solution for Booking Vaccination Slots available in the CoWIN Portal directly from your Terminal...
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Install Python&lt;/li&gt;
&lt;li&gt;Clone this repository...
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/dhhruv/Vac-Cowin.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;OR&lt;/strong&gt;&lt;br&gt;
Download the Zip and Extract the content.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install, create and activate virtual environment.
For instance we create a virtual environment named 'venv'.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;virtualenv
python &lt;span class="nt"&gt;-m&lt;/span&gt; virtualenv venv
venv&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate.bat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Install dependencies
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;Vac-Cowin
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  How To Use
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Run the Script after performing the Initial Steps of Getting Started:
&lt;code&gt;python VacCowin.py&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Select the Beneficiaries. Read the Important notes. You can select multiple beneficiaries by providing comma-separated index values such as &lt;code&gt;1,2&lt;/code&gt;:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Running VacCowin...
Enter the Registered Mobile Number: ██████████
Successfully Requested OTP for the Mobile Number ██████████ at 2021-05-23 09:28:41.669816..
Enter OTP (If you do not recieve OTP in 2 minutes, Press Enter to Retry): ██████████
Validating OTP. Please Wait...
Token Generated: ██████████████████████████████████████████████████████████████████████

Fetching the Registered Beneficiaries...
+-------+----------------+---------------+-----------+-------+----------------------+
|   idx |        bref_id | name          | vaccine   |   age | status               |
+=======+================+===============+===========+=======+======================+
|     1 | ██████████████ | █████████████ | ███████   |    ██ | ██████████████       |
+-------+----------------+---------------+-----------+-------+----------------------+

    ################# IMPORTANT THINGS TO BE REMEMBERED #################

    # 1. While selecting Beneficiaries, make sure that selected Beneficiaries are all taking the same dose: either their First OR Second.
    #    Please do no try to club together booking for first dose for one Beneficiary and second dose for another Beneficiary. Recommended to do both seperately.

    # 2. While selecting Beneficiaries, also make sure that Beneficiaries selected for second dose are all taking the same vaccine: COVISHIELD OR COVAXIN OR SPUTNIK V.
    #    Please do no try to club together booking for Beneficiary taking COVISHIELD with Beneficiary taking COVAXIN and other possibilities.

    # 3. If you're selecting multiple Beneficiaries, make sure all are of the same Age Group (45+ or 18+) as defined by the Government.
    #    Please do not try to club together booking for Younger and Older Beneficiaries at the same time.

    #####################################################################
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter comma separated index numbers of Beneficiaries to book for : 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Ensure that the Beneficiaries are getting selected:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Selected Beneficiaries are:  
+-------+----------------+---------------+-----------+-------+----------------------+
|   idx |        bref_id | name          | vaccine   |   age | status               |
+=======+================+===============+===========+=======+======================+
|     1 | ██████████████ | █████████████ | ███████   |    ██ | ██████████████       |
+-------+----------------+---------------+-----------+-------+----------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Selecting the State:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-------+-----------------------------+  
| idx   | state                       |  
+=======+=============================+  
| 1     | Andaman and Nicobar Islands |  
+-------+-----------------------------+  
| 2     | Andhra Pradesh              |  
+-------+-----------------------------+
+-------+-----------------------------+
+-------+-----------------------------+  
| 35    | Uttar Pradesh               |  
+-------+-----------------------------+  
| 36    | Uttarakhand                 |  
+-------+-----------------------------+  
| 37    | West Bengal                 |  
+-------+-----------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter State Index from the Table: 12
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Select the Districts you are interested in. Multiple Districts can be selected by providing comma-separated index values...
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-------+-------------------------+
|   idx | district                |
+=======+=========================+
|     1 | Ahmedabad               |
+-------+-------------------------+
|     2 | Ahmedabad Corporation   |
+-------+-------------------------+
|    .. | ......                  |
+-------+-------------------------+
|    41 | Valsad                  |
+-------+-------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter comma separated index numbers of Districts to monitor : 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Ensure that the correct Districts are getting selected...
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Selected Districts are:
+-------+---------------+-----------------------+--------------+
|   idx |   district_id | district_name         |   alert_freq |
+=======+===============+=======================+==============+
|     1 |           770 | Ahmedabad Corporation |          660 |
+-------+---------------+-----------------------+--------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Additional Information regarding Vaccination Availability, Loading Data, Date etc... to be added by the User.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Filter out Centres with Vaccine availability less than ? Minimum 1 :
How often do you want to load Data from the Portal (in Seconds)? Default 15. Minimum 5. :

Search for next seven day starting from when?
Use 1 for Today, 2 for Tomorrow, or provide a date in the format DD-MM-YYYY. Default 2:

Do you have a Preference for Fee Type?
Enter 0 for No Preference, 1 for Free Only, or 2 for Paid Only. Default 0 :
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Program will now start to monitor the slots in these Districts every 15 seconds.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;===================================================================================  
Centres are available in Ahmedabad Corporation from 24-05-2021 as of 2021-05-23 09:29:10: 0
No Options Available right now. Next Update in 15 seconds..
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;If at any stage your Token becomes invalid, then the Program will make a Beep and Prompt for &lt;code&gt;y&lt;/code&gt; or &lt;code&gt;n&lt;/code&gt;. If you would like to continue, provide &lt;code&gt;y&lt;/code&gt; and proceed to allow using same Mobile Number
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Token is INVALID! 
Do you want to try for a new Token? (y/n Default y): y
Enter the Registered Mobile Number: ███████████
Enter OTP: ███████████
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;p&gt;When a Centre with more than minimum number of Slots is available, the Program will make a Beep sound - having different frequency for different districts. It will then display the available options as shown in the &lt;a href="https://github.com/dhhruv/Vac-Cowin/blob/master/assets/ss7.png" rel="noopener noreferrer"&gt;Screenshot&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Before the Next Update, you'll have 10 seconds to provide a choice in the given format &lt;code&gt;centreIndex.slotIndex&lt;/code&gt; eg: The input &lt;code&gt;1.4&lt;/code&gt; will select the First Vaccination Centre and its Fourth Slot.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Working Screenshots:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Generating OTP and Token...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8bpl3hwjdlo97x77ccg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8bpl3hwjdlo97x77ccg.png" alt="SS1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fetching Registered Beneficiaries...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9zqdl969geqgdwxe68i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9zqdl969geqgdwxe68i.png" alt="SS2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Selecting Beneficiaries...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkw8lgpuzf8q4szbyjn71.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkw8lgpuzf8q4szbyjn71.png" alt="SS3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Additional Information to be entered for Slot Booking...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp7tvoiyw1xyqgsmbyvlg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp7tvoiyw1xyqgsmbyvlg.png" alt="SS4"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auto-Booking Function...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2yy215hv0q21qdne6r45.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2yy215hv0q21qdne6r45.png" alt="SS5"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save Information as JSON File...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fynpnjrtz17ajiugoz0v6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fynpnjrtz17ajiugoz0v6.png" alt="SS6"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Displaying Available Vaccination Centres and Booking Slots (Auto-Booking ON)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjczuhr1wdbvbh1bge770.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjczuhr1wdbvbh1bge770.png" alt="SS7"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Vac-Cowin" rel="noopener noreferrer"&gt;
        Vac-Cowin
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      💉 One Stop Solution for Booking Vaccination Slots available in the CoWIN Portal directly from your Terminal...
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;p&gt;Any contributions you make are &lt;strong&gt;greatly appreciated&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fork the Project&lt;/li&gt;
&lt;li&gt;Create your Feature Branch (&lt;code&gt;git checkout -b feature/AmazingFeature&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Commit your Changes (&lt;code&gt;git commit -m 'Add some AmazingFeature'&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Push to the Branch (&lt;code&gt;git push origin feature/AmazingFeature&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Open a Pull Request&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;Distributed under the MIT License. See &lt;code&gt;LICENSE&lt;/code&gt; for more information.&lt;/p&gt;

&lt;h3&gt;
  
  
  Team Members:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt; &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;Dhruv Panchal&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://github.com/urvesh254" rel="noopener noreferrer"&gt;Urveshkumar Patel&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://github.com/nirami98" rel="noopener noreferrer"&gt;Nirja Desai&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Vac-Cowin" rel="noopener noreferrer"&gt;
        Vac-Cowin
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      💉 One Stop Solution for Booking Vaccination Slots available in the CoWIN Portal directly from your Terminal...
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Important:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;This is a Proof of Concept Project. &lt;strong&gt;I OR the Team&lt;/strong&gt; do NOT endorse or condone, in any shape or form, automating any monitoring/booking tasks. &lt;strong&gt;It's only made for Educational Purposes. Use this at your own risk.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;This &lt;strong&gt;Python Script CANNOT book slots automatically&lt;/strong&gt;. It doesn't skip any of the steps that a User would have to take on the official portal. You will still have to enter the OTP and Captcha as you do in the CoWIN Portal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do NOT&lt;/strong&gt; use unless all the beneficiaries selected are supposed to get the same Vaccine and Dose.&lt;/li&gt;
&lt;li&gt;There is &lt;strong&gt;no option&lt;/strong&gt; to Register a new Phone/Mobile or add beneficiaries for now. This can be used only after beneficiary has been added through the official Portal/App.&lt;/li&gt;
&lt;li&gt;Be careful if you're choosing to use the auto-book feature. It will blindly select first available Vaccination &lt;strong&gt;Centre, Date (Both Sorted Ascending) and a RANDOM slot&lt;/strong&gt;. I would not recommend using this feature unless and until it's crucial.&lt;/li&gt;
&lt;li&gt;If you accidentally booked a slot you didn't want to then don’t worry. You can always log in to the CoWIN Portal and cancel/re-schedule that.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API Details (Do read the first paragraph): &lt;a href="https://apisetu.gov.in/public/marketplace/api/cowin/cowin-public-v2" rel="noopener noreferrer"&gt;https://apisetu.gov.in/public/marketplace/api/cowin/cowin-public-v2&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>codenewbie</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>python</category>
    </item>
    <item>
      <title>VacCoWIN - Book CoWIN Slots directly from your Terminal...</title>
      <dc:creator>Dhruv Panchal</dc:creator>
      <pubDate>Thu, 20 May 2021 17:30:08 +0000</pubDate>
      <link>https://dev.to/dhhruv/vaccowin-book-cowin-slots-directly-from-your-terminal-bba</link>
      <guid>https://dev.to/dhhruv/vaccowin-book-cowin-slots-directly-from-your-terminal-bba</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.cowin.gov.in/home" rel="noopener noreferrer"&gt;CoWIN Portal&lt;/a&gt;&lt;/strong&gt; is used to self-register yourself for the &lt;strong&gt;Vaccination&lt;/strong&gt; process in India. Here you can register yourself with your Phone Number and avail a slot from the available slots in various Vaccination Centres around the country.&lt;/p&gt;

&lt;h2&gt;
  
  
  About
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;VacCowin&lt;/strong&gt; is a CLI based Python Script that can be used to perform tasks such as OTP Generation till Vaccination Slot Booking from Co-WIN Platform directly from your Terminal.  This script rechecks after every few seconds and when the slots are available, it &lt;strong&gt;confirms the slot only after you enter the captcha shown on the screen.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Since India has started the Vaccination Drive for those above 18 years of age, there is a very heavy rush and slots get booked soon. This script will come in handy for booking those slots as soon as they open.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IMPORTANT: This is a Proof of Concept (POC) Project. I OR the Team do NOT endorse or condone, in any shape or form, automating any monitoring/booking tasks. It's only made for Educational Purposes. Use this at your own risk.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The data used is retrieved using the open APIs at &lt;a href="https://apisetu.gov.in/public/marketplace/api/cowin" rel="noopener noreferrer"&gt;API Setu&lt;/a&gt;. It works on both Linux and Windows.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Vac-Cowin" rel="noopener noreferrer"&gt;
        Vac-Cowin
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      💉 One Stop Solution for Booking Vaccination Slots available in the CoWIN Portal directly from your Terminal...
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Install Python&lt;/li&gt;
&lt;li&gt;Clone this repository...
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/dhhruv/Vac-Cowin.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;OR&lt;/strong&gt;&lt;br&gt;
Download the Zip and Extract the content.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install, create and activate virtual environment.
For instance we create a virtual environment named 'venv'.
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;virtualenv
python &lt;span class="nt"&gt;-m&lt;/span&gt; virtualenv venv
venv&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate.bat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;Install dependencies
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;Vac-Cowin
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Vac-Cowin" rel="noopener noreferrer"&gt;
        Vac-Cowin
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      💉 One Stop Solution for Booking Vaccination Slots available in the CoWIN Portal directly from your Terminal...
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;Will be Updated after Testing...&lt;/p&gt;

&lt;p&gt;Check out yourself and send me a Screenshot if found useful...&lt;/p&gt;

&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;p&gt;Any contributions you make are &lt;strong&gt;greatly appreciated&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fork the Project&lt;/li&gt;
&lt;li&gt;Create your Feature Branch (&lt;code&gt;git checkout -b feature/AmazingFeature&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Commit your Changes (&lt;code&gt;git commit -m 'Add some AmazingFeature'&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Push to the Branch (&lt;code&gt;git push origin feature/AmazingFeature&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Open a Pull Request&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;Distributed under the MIT License. See &lt;code&gt;LICENSE&lt;/code&gt; for more information.&lt;/p&gt;

&lt;h3&gt;
  
  
  Team Members:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt; &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;Dhruv Panchal&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://github.com/urvesh254" rel="noopener noreferrer"&gt;Urveshkumar Patel&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://github.com/nirami98" rel="noopener noreferrer"&gt;Nirja Desai&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Vac-Cowin" rel="noopener noreferrer"&gt;
        Vac-Cowin
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      💉 One Stop Solution for Booking Vaccination Slots available in the CoWIN Portal directly from your Terminal...
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Important:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;This is a Proof of Concept Project. &lt;strong&gt;I OR the Team&lt;/strong&gt; do NOT endorse or condone, in any shape or form, automating any monitoring/booking tasks. &lt;strong&gt;It's only made for Educational Purposes. Use this at your own risk.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;This &lt;strong&gt;Python Script CANNOT book slots automatically&lt;/strong&gt;. It doesn't skip any of the steps that a User would have to take on the official portal. You will still have to enter the OTP and Captcha as you do in the CoWIN Portal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do NOT&lt;/strong&gt; use unless all the beneficiaries selected are supposed to get the same Vaccine and Dose.&lt;/li&gt;
&lt;li&gt;There is &lt;strong&gt;no option&lt;/strong&gt; to Register a new Phone/Mobile or add beneficiaries for now. This can be used only after beneficiary has been added through the official Portal/App.&lt;/li&gt;
&lt;li&gt;Be careful if you're choosing to use the auto-book feature. It will blindly select first available Vaccination &lt;strong&gt;Centre, Date (Both Sorted Ascending) and a RANDOM slot&lt;/strong&gt;. I would not recommend using this feature unless and until it's crucial.&lt;/li&gt;
&lt;li&gt;If you accidentally booked a slot you didn't want to then don’t worry. You can always log in to the CoWIN Portal and cancel/re-schedule that.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API Details (Do read the first paragraph): &lt;a href="https://apisetu.gov.in/public/marketplace/api/cowin/cowin-public-v2" rel="noopener noreferrer"&gt;https://apisetu.gov.in/public/marketplace/api/cowin/cowin-public-v2&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>codenewbie</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>python</category>
    </item>
    <item>
      <title>💉 VacCoWIN - Check Available Slots for CoWIN Vaccination right from your Terminal!</title>
      <dc:creator>Dhruv Panchal</dc:creator>
      <pubDate>Thu, 13 May 2021 18:27:54 +0000</pubDate>
      <link>https://dev.to/dhhruv/vaccowin-check-available-slots-for-cowin-vaccination-right-from-your-terminal-23f5</link>
      <guid>https://dev.to/dhhruv/vaccowin-check-available-slots-for-cowin-vaccination-right-from-your-terminal-23f5</guid>
      <description>&lt;h2&gt;
  
  
  About:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.cowin.gov.in/home" rel="noopener noreferrer"&gt;CoWIN Portal&lt;/a&gt;&lt;/strong&gt; is used to self-register yourself for the &lt;strong&gt;Vaccination&lt;/strong&gt; process in India. Here you can register yourself with your Phone Number and avail a slot from the available slots in various Vaccination Centres around the country.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;VacCowin&lt;/strong&gt; is a Python Script to find open slots for Vaccination in India based on your &lt;strong&gt;pincode (or multiple pincodes) or State and District&lt;/strong&gt;. This script will recheck after every few minutes and as soon the slots open, inform you via Beeping sound &amp;amp; Desktop notification.&lt;/p&gt;

&lt;p&gt;Since India has started the Vaccination Drive for those above 18 years of age, there is a very heavy rush and slots get booked soon. This script will come in handy for finding those slots as soon as they open.&lt;/p&gt;

&lt;p&gt;The data is retrieved using the open public APIs at &lt;a href="https://apisetu.gov.in/public/marketplace/api/cowin" rel="noopener noreferrer"&gt;API Setu&lt;/a&gt;. It works on both Linux and Windows.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Vac-Cowin" rel="noopener noreferrer"&gt;
        Vac-Cowin
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      💉 One Stop Solution for Booking Vaccination Slots available in the CoWIN Portal directly from your Terminal...
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Setup:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Install Python&lt;/li&gt;
&lt;li&gt;Clone this repository...
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/dhhruv/Vac-Cowin.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;Install, create and activate virtual environment.
For instance we create a virtual environment named 'venv'.
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;virtualenv
python &lt;span class="nt"&gt;-m&lt;/span&gt; virtualenv venv
venv&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate.bat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;Install dependencies
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Input:
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tags&lt;/th&gt;
&lt;th&gt;Actions&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-h, --help&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Show the Help Message and exiting the program.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-p, --pincode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Pincode(s) to look for slots.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-a, --age&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Age of the User(Default = 18).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-d, --date&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Date to check Vaccination(Format = DD-MM-YYYY).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-w, --wizard&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;For a User Friendly Interface.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-i, --interval&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Interval in which to read Data from CoWin Website in Seconds. (Default = 300)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-s, --state&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The State you want to search for.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-t, --district&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The District you want to search for.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1.  Using Pincode(s):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  You can check the available slots by entering Pincode(s) using &lt;code&gt;-p&lt;/code&gt; specified with age using &lt;code&gt;-a&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example: &lt;code&gt;python VacCowin.py -p 382150 -a 47&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiuwfiqhou9d4kjwfxoiz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiuwfiqhou9d4kjwfxoiz.gif" alt="Method 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.  Using State and District:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  You can check the available slots by entering State using &lt;code&gt;-s&lt;/code&gt; and District using&lt;code&gt;-t&lt;/code&gt; specified with age using &lt;code&gt;-a&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example: &lt;code&gt;python VacCowin.py -s Gujarat -t Ahmedabad -a 19&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ef864do4esavrdms55h.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ef864do4esavrdms55h.gif" alt="Method 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.  Using Wizard Mode(For Beginners):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;   If you're a beginner then you can specify &lt;code&gt;-w&lt;/code&gt; in the Terminal or directly run the Script to enter the Wizard Mode for Beginners.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Examples:&lt;br&gt;
&lt;code&gt;python VacCowin.py -w&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;OR&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;code&gt;python VacCowin.py&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Enter the Information asked to check the Available Slots.
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd9hzi4ax15qapgh4qt4i.gif" alt="Method 3"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, stay tuned for further updates on GitHub:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Vac-Cowin" rel="noopener noreferrer"&gt;
        Vac-Cowin
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      💉 One Stop Solution for Booking Vaccination Slots available in the CoWIN Portal directly from your Terminal...
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;b&gt;Note:- Either Proceed through Pincode Method OR (State and District) Method for a reliable response.&lt;/b&gt;&lt;/p&gt; 

</description>
      <category>codenewbie</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>python</category>
    </item>
    <item>
      <title>Contactless Attendance System based on Face Recognition</title>
      <dc:creator>Dhruv Panchal</dc:creator>
      <pubDate>Sun, 02 May 2021 15:14:23 +0000</pubDate>
      <link>https://dev.to/dhhruv/contactless-attendance-system-based-on-face-recognition-hah</link>
      <guid>https://dev.to/dhhruv/contactless-attendance-system-based-on-face-recognition-hah</guid>
      <description>&lt;p&gt;&lt;strong&gt;A Contactless Attendance System where your face is identified for Attendance.&lt;/strong&gt; ✨&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Motivation 😲
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;This Repository was created as a part of MINeD Hackathon, a national level hackathon organized by Centre of Excellence in Data Science at the CSE Department of Nirma University.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We seek to provide a valuable attendance service for employees. Reduce manual process errors by provide automated and a reliable attendance system uses facial recognition technology.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Features 📋
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Check Camera&lt;/li&gt;
&lt;li&gt;Capture Faces&lt;/li&gt;
&lt;li&gt;Train Faces&lt;/li&gt;
&lt;li&gt;Recognize Faces &amp;amp; Attendance&lt;/li&gt;
&lt;li&gt;Automatic Email


&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  For more Updates check the GitHub Repository:
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Contactless-Attendance-System" rel="noopener noreferrer"&gt;
        Contactless-Attendance-System
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ✨ A Contactless Attendance System where your face is identified for Attendance. 
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;




&lt;h2&gt;
  
  
  Screenshots 📷
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. GUI
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ckdgl54fep049z00p21.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ckdgl54fep049z00p21.PNG" alt="GUI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Command Line Interface
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb39w5v9gmngxkm2nvamh.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb39w5v9gmngxkm2nvamh.PNG" alt="Command Line Interface"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Checking Camera
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwnvt5fzwovwo0us1fjz6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwnvt5fzwovwo0us1fjz6.jpg" alt="Checking Camera"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Recognize Image
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh2tjf7bhz0y7ayb3w3f7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh2tjf7bhz0y7ayb3w3f7.jpg" alt="Recognize Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Automail
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuabe7cx3joih0g3e50pe.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuabe7cx3joih0g3e50pe.jpeg" alt="Automail"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Tech Stack Used 💻
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Build With -&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.8&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Modules Used -&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenCV Contrib&lt;/li&gt;
&lt;li&gt;Pillow&lt;/li&gt;
&lt;li&gt;Numpy&lt;/li&gt;
&lt;li&gt;Pandas&lt;/li&gt;
&lt;li&gt;Shutil&lt;/li&gt;
&lt;li&gt;CSV&lt;/li&gt;
&lt;li&gt;yagmail&lt;/li&gt;
&lt;li&gt;Tkinter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Facial Recognition Algorithms -&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Haar Cascade&lt;/li&gt;
&lt;li&gt;LBPH (Local Binary Pattern Histogram)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Softwares Used -&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pycharm 2019.2&lt;/li&gt;
&lt;li&gt;VS CODE &lt;/li&gt;
&lt;li&gt;Jupyter Notebook&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Installation 🔑
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Create Environment
&lt;/h3&gt;

&lt;p&gt;First open the terminal or command line in the IDE and copy the following code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python -m venv venv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Then activate the virtual enviroment using the code below for windows.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.\venv\Scripts\activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;Note: If your pc don't have virtual enviroment or pip install the follow this link. &lt;a href="https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/" rel="noopener noreferrer"&gt;How to create Virtual Enviroment&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Installing the Packages
&lt;/h3&gt;

&lt;p&gt;After creating the enviroment on your project, let's install the necessary packages. &lt;/p&gt;

&lt;p&gt;To install those package open the terminal or command line and paste the code from below:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install -r requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;Note: During the package installation, sometimes it shows errors due to package dependencies and to avoid those error you can install those packages as admin.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Test Run 🚴
&lt;/h2&gt;

&lt;p&gt;After creating the virtual environment and installing the packages, open the IDE terminal to run the program.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To use Command Line Version Use:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;py main.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;To use GUI Version Use:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;py main_gui.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Test Run for CAS as shown below:-&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60m9wd8dj0ggrc998vfc.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60m9wd8dj0ggrc998vfc.gif" alt="Test Run"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  How To Use? 📝
&lt;/h2&gt;

&lt;p&gt;If you want to use it then follow the steps below:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First download or clone the repository.&lt;/li&gt;
&lt;li&gt;Import the project to your preferable IDE.
Recommended : PyCharm&lt;/li&gt;
&lt;li&gt;Create a python virtual environment.&lt;/li&gt;
&lt;li&gt;Install all the packages from &lt;a href="https://github.com/dhhruv/Contactless-Attendance-System/blob/master/requirements.txt" rel="noopener noreferrer"&gt;requirements.txt&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Change the mail information in the &lt;a href="https://github.com/dhhruv/Contactless-Attendance-System/blob/master/Info.py" rel="noopener noreferrer"&gt;Info.py&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Run the project using the Command Prompt or PowerShell or your IDE Terminal Button.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  For more Updates check the GitHub Repository:
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Contactless-Attendance-System" rel="noopener noreferrer"&gt;
        Contactless-Attendance-System
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ✨ A Contactless Attendance System where your face is identified for Attendance. 
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;h2&gt;
  
  
  Team :
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/Neelshah997" rel="noopener noreferrer"&gt;Neel Shah&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;Dhruv Panchal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/urvesh254" rel="noopener noreferrer"&gt;Urvesh Patel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nirami98" rel="noopener noreferrer"&gt;Nirja Desai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/msCurious28" rel="noopener noreferrer"&gt;Payal Devalia&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>codenewbie</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>python</category>
    </item>
    <item>
      <title>Chrome Dino Game using Python...</title>
      <dc:creator>Dhruv Panchal</dc:creator>
      <pubDate>Wed, 21 Apr 2021 09:07:23 +0000</pubDate>
      <link>https://dev.to/dhhruv/chrome-dino-game-using-python-2595</link>
      <guid>https://dev.to/dhhruv/chrome-dino-game-using-python-2595</guid>
      <description>&lt;p&gt;&lt;strong&gt;A Replica of the hidden Dinosaur Game from Chrome Browser Offline mode so you don't have to be offline to play it...😂😂&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  The Dinosaur Game, also known as the &lt;strong&gt;T-Rex Game, Steve the Jumping Dinosaur, or Dino Runner&lt;/strong&gt; and initially codenamed Project Bolan, is a built-in browser game in the &lt;strong&gt;Google Chrome Web Browser&lt;/strong&gt;. The game was created by &lt;strong&gt;Sebastien Gabriel in 2014&lt;/strong&gt;, and can be accessed by hitting the space bar when in offline mode on Google Chrome.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  About:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  The following represents a recreated version of the famous Dinosaur Game from Chrome Browser Offline mode implemented using &lt;strong&gt;Python and PyGame&lt;/strong&gt;. The project file contains &lt;strong&gt;Image Files&lt;/strong&gt; and a python script &lt;strong&gt;(chromedino.py)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;  A simple and easy-to-use GUI is provided for better gameplay. The gameplay design is so simple that the user won’t find it difficult to use and understand. Different images are used in the development of this simple game project, the gaming environment is just like the original Chrome Dino Run game. For demo of the project, have a look at the GIF below.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgmqwaosjf703c2gnrjba.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgmqwaosjf703c2gnrjba.gif" alt="Dino GIF"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  First of all, &lt;strong&gt;clone the repository&lt;/strong&gt; using:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/dhhruv/Chrome-Dino-Runner.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;OR&lt;/strong&gt;&lt;br&gt;
Download the Zip and extract it's contents.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Then download the dependencies in your Command Prompt OR Terminal using:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Usage:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  After installation, just run the &lt;a href="https://github.com/dhhruv/Chrome-Dino-Runner/blob/master/chromedino.py" rel="noopener noreferrer"&gt;&lt;code&gt;chromedino.py&lt;/code&gt;&lt;/a&gt; using
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python chromedino.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Input:
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Keys&lt;/th&gt;
&lt;th&gt;Actions&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Any Key&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Press any key to Start the Game.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;↑&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Press &lt;code&gt;Up Arrow&lt;/code&gt; to jump and avoid cacti.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;↓&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Press &lt;code&gt;Down Arrow&lt;/code&gt; to duck and avoid pterodactyls.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So, stay tuned for further updates on GitHub:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Chrome-Dino-Runner" rel="noopener noreferrer"&gt;
        Chrome-Dino-Runner
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🐱‍🐉 A Replica of the hidden Dinosaur Game from Chrome Browser Offline mode build using Python and PyGame.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;h3&gt;
  
  
  References:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="http://www.pygame.org/docs" rel="noopener noreferrer"&gt;http://www.pygame.org/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://en.wikipedia.org/wiki/Dinosaur_Game" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Dinosaur_Game&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  Various articles and videos.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>codenewbie</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>python</category>
    </item>
    <item>
      <title>Pixxia - Compress your Images in Optimal Quality for FREE</title>
      <dc:creator>Dhruv Panchal</dc:creator>
      <pubDate>Sun, 18 Apr 2021 04:45:06 +0000</pubDate>
      <link>https://dev.to/dhhruv/pixxia-compress-your-images-in-optimal-quality-for-free-8mi</link>
      <guid>https://dev.to/dhhruv/pixxia-compress-your-images-in-optimal-quality-for-free-8mi</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;The above script uses lossy compression methods to reduce the document size of your JPG/PNG files. This is achieved by rounding up the (R,G,B) values from each pixel of it's unit digit in your image, therefore lesser number of bytes are required to store the information. Sometimes, there are major changes in the bytes stored well as sometimes there are minor changes so it depends entirely on the pixels of the image.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Pixxia" rel="noopener noreferrer"&gt;
        Pixxia
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🖼 Pixxia uses lossy compression methods to reduce the document size of your JPG/PNG files.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Image Comparison:
&lt;/h2&gt;


&lt;h4&gt;Image 1:&lt;/h4&gt;
    &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F72680045%2F110210445-c5f1b880-7eb7-11eb-9a11-b1943089cc07.png"&gt;



&lt;h4&gt;Image 2:&lt;/h4&gt;
    &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F72680045%2F110210444-c427f500-7eb7-11eb-8dd7-72f73c58f5fe.png"&gt;


&lt;blockquote&gt;
&lt;p&gt;For Images &amp;gt;= 6 MB you may see a great compression ratio as compared to the images which are smaller than that.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://github.com/dhhruv/Pixxia/releases/download/1.0.0/Pixxia.exe" rel="noopener noreferrer"&gt;Download Pixxia.exe for Windows&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Setup (Windows):
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Install Python&lt;/li&gt;
&lt;li&gt;Clone this repository
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/dhhruv/Pixxia.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;Install, create and activate virtual environment.
For instance we create a virtual environment named 'venv'.
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install virtualenv
python -m virtualenv venv
venv\Scripts\activate.bat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;Install dependencies
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install -r requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;
    &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F72680045%2F110210540-1d902400-7eb8-11eb-85e7-917f006069ec.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F72680045%2F110210540-1d902400-7eb8-11eb-85e7-917f006069ec.PNG"&gt;&lt;/a&gt;
&lt;/p&gt;



&lt;p&gt;&lt;a href="https://github.com/dhhruv/Pixxia/releases/download/1.0.0/Pixxia.exe" rel="noopener noreferrer"&gt;Download Pixxia.exe for Windows&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How To Use !
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Click SELECT INPUT FOLDER Button to select the INPUT FOLDER which contains all the Images to be Compressed/Optimized.&lt;/li&gt;
&lt;li&gt;Click SELECT OUTPUT FOLDER Button to select the OUTPUT FOLDER which will contain all the the Compressed/Optimized Images.&lt;/li&gt;
&lt;li&gt;Hit the COMPRESS Button and the INPUT FOLDER containing Supported Image Formats will be Compressed and saved in the OUTPUT FOLDER.&lt;/li&gt;
&lt;li&gt;Click CLEAR Button to reset the input fields and status bar. (If needed)&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;NOTE: Recommended to keep INPUT and OUTPUT Folder different for your ease to differentiate between Optimized and Unoptimized Images.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Important Note:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;This Script goes through each pixel of every supported image in the INPUT folder so it'll take more time than usual to process the Image.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;This Script is just a Prototype so results may be unexpected.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The Authors will not be responsible for any kind of loss of data so it is essential to have a Backup of Original Data placed in the Input Folder. Read the &lt;a href="https://github.com/dhhruv/Pixxia/blob/master/LICENSE" rel="noopener noreferrer"&gt;LICENSE&lt;/a&gt; for more information.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, stay tuned for further updates on GitHub:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Pixxia" rel="noopener noreferrer"&gt;
        Pixxia
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🖼 Pixxia uses lossy compression methods to reduce the document size of your JPG/PNG files.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://github.com/dhhruv/Pixxia/releases/download/1.0.0/Pixxia.exe" rel="noopener noreferrer"&gt;Download Pixxia.exe for Windows&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Image Credits:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://unsplash.com/" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>codenewbie</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>python</category>
    </item>
    <item>
      <title>Tic-Tac-Toe you can't beat...</title>
      <dc:creator>Dhruv Panchal</dc:creator>
      <pubDate>Sat, 17 Apr 2021 18:13:29 +0000</pubDate>
      <link>https://dev.to/dhhruv/tic-tac-toe-you-can-t-beat-56oo</link>
      <guid>https://dev.to/dhhruv/tic-tac-toe-you-can-t-beat-56oo</guid>
      <description>&lt;p&gt;&lt;strong&gt;In order to make the traditional Tic Tac Toe Game unbeatable, it is necessary to create an algorithm that can calculate all the possible moves available for the Computer and can use that to determine the best possible move.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg11lt9q6iwo921v952uk.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg11lt9q6iwo921v952uk.gif" alt="Tic Tac Toe GUI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;To solve games using AI, we will introduce the concept of a Game Tree followed by Minimax algorithm. This algorithm sees a few steps ahead and puts itself in the shoes of its opponent. It keeps playing ahead until it reaches a terminal arrangement of the board (terminal state) resulting in a tie, a win, or a loss. Once in a terminal state, the AI will assign an arbitrary positive score (+10) for a win, a negative score (-10) for a loss, or a neutral score (0) for a tie.&lt;/p&gt;

&lt;p&gt;At the same time, the algorithm evaluates the moves that lead to a terminal state based on the players’ turn. It will choose the move with maximum score when it is the AI’s turn and choose the move with the minimum score when it is the human player’s turn. Using this strategy, Minimax avoids losing to the human player.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Minimax?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Minimax&lt;/strong&gt; (sometimes MinMax, MM or saddle point) is a decision rule used in artificial intelligence, decision theory, game theory, statistics, and philosophy for minimizing the possible loss for a worst case (maximum loss) scenario. When dealing with gains, it is referred to as &lt;strong&gt;"maximin" - to maximize the minimum gain&lt;/strong&gt;. Originally formulated for n-player zero-sum game theory (one player wins (+10) and other player loses (-10) or both of anyone not to win (0)), covering both the cases where players take alternate moves and those where they make simultaneous moves, it has also been extended to more complex games and to general decision-making in the presence of uncertainty. &lt;/p&gt;

&lt;h2&gt;
  
  
  How does it work?
&lt;/h2&gt;

&lt;p&gt;To check whether or not the current move is better than the best move we take the help of minimax function which will consider all the possible ways the game can go and returns the best value for that move, assuming the opponent also plays optimally until it finds a terminal state (win, draw or lose).&lt;/p&gt;

&lt;h2&gt;
  
  
  Game Tree
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Image:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F72680045%2F109675821-232af880-7b9e-11eb-9062-99cc212692ee.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F72680045%2F109675821-232af880-7b9e-11eb-9062-99cc212692ee.jpg" alt="Game Tree Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Explanation:
&lt;/h3&gt;

&lt;p&gt;This image depicts all the possible paths that the game can take from the root board state. It is often called the Game Tree. &lt;br&gt;
The 3 possible scenarios in the above example are : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Left Move : If X plays [2,0]. Then O will play [2,1] and win the game. The value of this move is -10&lt;/li&gt;
&lt;li&gt;  Middle Move : If X plays [2,1]. Then O will play [2,2] which draws the game. The value of this move is 0&lt;/li&gt;
&lt;li&gt;  Right Move : If X plays [2,2]. Then he will win the game. The value of this move is +10;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Remember, even though X has a possibility of winning if he plays the middle move, O will never let that happen and will choose to draw instead.&lt;/strong&gt;&lt;br&gt;
Therefore the best choice for X, is to play [2,2], which will guarantee a victory for him.&lt;/p&gt;
&lt;h3&gt;
  
  
  GitHub Link for Source Code:
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Tic-Tac-Toe" rel="noopener noreferrer"&gt;
        Tic-Tac-Toe
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🎃 Unbeatable Tic Tac Toe Game using Minimax Algorithm.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  References:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Minimax" rel="noopener noreferrer"&gt;Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/minimax-algorithm-in-game-theory-set-3-tic-tac-toe-ai-finding-optimal-move/" rel="noopener noreferrer"&gt;GeeksforGeeks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>codenewbie</category>
      <category>beginners</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>YouTua - Download any Videos Instantly...</title>
      <dc:creator>Dhruv Panchal</dc:creator>
      <pubDate>Fri, 16 Apr 2021 09:51:36 +0000</pubDate>
      <link>https://dev.to/dhhruv/youtua-download-any-videos-instantly-m3f</link>
      <guid>https://dev.to/dhhruv/youtua-download-any-videos-instantly-m3f</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;Video Streaming Platforms are becoming an integral part of our lives today as now and then you need them to get information as well as for entertainment purposes. But the users agree that offline viewing is much better than streaming directly from the websites or mobile applications due to many reasons such as buffering etc.. Even watching favourite videos is fun but at times you'd like to get these videos downloaded.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So the question arises that can you download them ?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are a lot of softwares that provides you the rich features to download videos from these websites such as but the &lt;strong&gt;Fun Part is many of their functions are paid.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Plus "Video Downloader Not Working" is a problem frequently reported by users in such softwares.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reasons :
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Website has changed its coding and site layout, which prevent you from getting its videos so downloader needs to be updated.&lt;/li&gt;
&lt;li&gt;The URL of the video can't be recognized by the downloader.&lt;/li&gt;
&lt;li&gt;Some videos are not available for download due to the copyright issues.&lt;/li&gt;
&lt;li&gt;Your Windows firewall may disallow the downloader from operating.&lt;/li&gt;
&lt;li&gt;Video tool compatibility.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Problems in Current Downloaders:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You will find these programs or some downloading sites can be buggy or less than perfect. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;After installing the software in your system it takes more than 300-400 MB of space just for it's resources.&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So how to handle this situation and what to use ?&lt;/p&gt;

&lt;p&gt;Coming to Solution part, there comes this &lt;strong&gt;Open Source Video Downloader named &lt;a href="https://github.com/dhhruv/YouTua" rel="noopener noreferrer"&gt;YouTua&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  YouTua 🎬
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Introduction:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/dhhruv/YouTua" rel="noopener noreferrer"&gt;YouTua&lt;/a&gt; is a GUI Program which let's you download videos/playlists from various &lt;a href="https://github.com/dhhruv/YouTua/blob/master/Supported%20Sites.txt" rel="noopener noreferrer"&gt;supported sites&lt;/a&gt; for free. It requires the Python interpreter, version 2.6, 2.7, or 3.2+, and it is not platform specific. It should work on your Unix box, on Windows or on macOS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You don't need to install it as it is a runnable (Click and Run) file so just Open, Download and Close. &lt;/li&gt;
&lt;li&gt;If we talk about size then in Windows it's about 40 MB which is drastically small then the other softwares available. That's it!&lt;/li&gt;
&lt;li&gt;Formats are available for downloading videos such as &lt;strong&gt;(mp4/mkv/webm)&lt;/strong&gt; from quality starting from &lt;strong&gt;144p to 2160p&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/dhhruv/YouTua/releases/download/2.1.0/YouTua.exe" rel="noopener noreferrer"&gt;Download YouTua.exe for Windows&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Screenshots:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F72680045%2F106863834-15916880-66ef-11eb-9178-22f23c2693a4.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F72680045%2F106863834-15916880-66ef-11eb-9178-22f23c2693a4.PNG" alt="YouTua Working Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can get more information about YouTua on: &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/YouTua" rel="noopener noreferrer"&gt;
        YouTua
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🎬 YouTua is a GUI Program to download videos/playlists from various supported sites.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  How To Use !
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Select the OUTPUT Folder by manually adding path or selecting the FOLDER using the SELECT FOLDER Button.
(By Default the OUTPUT FOLDER is set to the current directory.)&lt;/li&gt;
&lt;li&gt;Enter the Link of Video you want to download.&lt;/li&gt;
&lt;li&gt;Select the Format to download the video (mp4/mkv/webm).&lt;/li&gt;
&lt;li&gt;Select the Quality in which you want to download the video (144p to 2160p).
(If your preferred Quality is not available then the lower best quality will be downloaded.) &lt;/li&gt;
&lt;li&gt;To download the available subtitles check the subtitles button.&lt;/li&gt;
&lt;li&gt;Click START DOWNLOAD and enjoy.
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Future Updates:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Currently Working on Script for downloading from the websites in Audio Format.&lt;/li&gt;
&lt;li&gt;Available Audio formats will be &lt;strong&gt;(mp3/m4a/webm)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, stay tuned for further updates on GitHub:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/YouTua" rel="noopener noreferrer"&gt;
        YouTua
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🎬 YouTua is a GUI Program to download videos/playlists from various supported sites.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://github.com/dhhruv/YouTua/releases/download/2.1.0/YouTua.exe" rel="noopener noreferrer"&gt;Download YouTua.exe for Windows&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to contribute in this Software then feel free to contact me on GitHub in the repository and you can ask me anything about it in comments plus suggestions are always welcomed on how to improve this.&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>python</category>
    </item>
    <item>
      <title>Explaining Stack in Detail</title>
      <dc:creator>Dhruv Panchal</dc:creator>
      <pubDate>Fri, 16 Apr 2021 05:06:50 +0000</pubDate>
      <link>https://dev.to/dhhruv/explaining-stack-in-detail-4ohm</link>
      <guid>https://dev.to/dhhruv/explaining-stack-in-detail-4ohm</guid>
      <description>&lt;h1&gt;
  
  
  Stack
&lt;/h1&gt;

&lt;p&gt;Stacks are the result of approaching a &lt;code&gt;LIFO&lt;/code&gt; (Last in, First out) ordering with list node connection behavior. This means that element inside the stack are connected like a list but are added and extracted approaching &lt;code&gt;LIFO&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxs8v9b7ffpp9i2w9z6fd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxs8v9b7ffpp9i2w9z6fd.png" alt="Stack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[1] Lifo stack | &lt;a href="https://commons.wikimedia.org/wiki/File:Lifo_stack.png" rel="noopener noreferrer"&gt;https://commons.wikimedia.org/wiki/File:Lifo_stack.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Based on that, the to methods that a stack should have to be called that way are &lt;code&gt;pop&lt;/code&gt; which remove the top element from the stack and returns it, and &lt;code&gt;push&lt;/code&gt; which adds a new element on top of the stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minimal methods to work with &lt;code&gt;Stacks&lt;/code&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  - &lt;code&gt;Pop&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Java implementation of the &lt;code&gt;pop&lt;/code&gt; method in an array based stack&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;Object&lt;/span&gt; &lt;span class="nf"&gt;pop&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(!&lt;/span&gt;&lt;span class="n"&gt;isEmpty&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="nc"&gt;Object&lt;/span&gt; &lt;span class="n"&gt;object&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="o"&gt;];&lt;/span&gt;
            &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="o"&gt;--]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;object&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you see, after obtaining the element in top of the stack, it is immediately removed from it.&lt;/p&gt;

&lt;h3&gt;
  
  
  - &lt;code&gt;Push&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Java implementation of the &lt;code&gt;push&lt;/code&gt; method in an array based stack&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Object&lt;/span&gt; &lt;span class="n"&gt;object&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;top&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="o"&gt;[++&lt;/span&gt;&lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;object&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Exception&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  - &lt;code&gt;Peek&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;In some circumstances the user may want to check the value stored in the top of the stack without removing it. In this scenarios is where &lt;code&gt;peek&lt;/code&gt; method is useful, since it return the value without removing it from the stack. This way and extra &lt;code&gt;push&lt;/code&gt; is not necessary.&lt;/p&gt;

&lt;p&gt;Java implementation of &lt;code&gt;peek&lt;/code&gt; in a Array based stack&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;Object&lt;/span&gt; &lt;span class="nf"&gt;peek&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;(!&lt;/span&gt;&lt;span class="n"&gt;isEmpty&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Array and List based stacks
&lt;/h2&gt;

&lt;p&gt;Example of an array based stack, of four elements. It will only receive four elements, if it reach it's max length, incoming values were not be added.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkq8z7esgqhkn3ogbvmx9.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkq8z7esgqhkn3ogbvmx9.PNG" alt="Stack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[2] Stack (data structure) LIFO | &lt;a href="https://commons.wikimedia.org/wiki/File:Stack_(data_structure)_LIFO.svg" rel="noopener noreferrer"&gt;https://commons.wikimedia.org/wiki/File:Stack_(data_structure)_LIFO.svg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The mayor difference between an array based stack and one implemented using lists is that the first one is usually implemented with a static size, this means that it will only accept a specific number of element, the other one, will allow the user to add elements until memory  is full.&lt;/p&gt;

&lt;h1&gt;
  
  
  References
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Identifier&lt;/th&gt;
&lt;th&gt;Author&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Maxtremus&lt;/td&gt;
&lt;td&gt;&lt;a href="https://commons.wikimedia.org/wiki/File:Lifo_stack.png" rel="noopener noreferrer"&gt;https://commons.wikimedia.org/wiki/File:Lifo_stack.png&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Original uploader: &lt;code&gt;Fibi&lt;/code&gt;&lt;br&gt;Derivative work: &lt;code&gt;Marek M&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://commons.wikimedia.org/wiki/File:Stack_(data_structure)_LIFO.svg" rel="noopener noreferrer"&gt;https://commons.wikimedia.org/wiki/File:Stack_(data_structure)_LIFO.svg&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>codenewbie</category>
      <category>tutorial</category>
      <category>java</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Sudoku Solver - Solve Any Sudoku Puzzle Instantly</title>
      <dc:creator>Dhruv Panchal</dc:creator>
      <pubDate>Thu, 15 Apr 2021 11:20:56 +0000</pubDate>
      <link>https://dev.to/dhhruv/sudoku-solver-solve-any-sudoku-puzzle-instantly-91h</link>
      <guid>https://dev.to/dhhruv/sudoku-solver-solve-any-sudoku-puzzle-instantly-91h</guid>
      <description>&lt;p&gt;&lt;strong&gt;Why solve Sudoku by hand, when you can write script to solve them for ya ?!&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sudoku is one of the most popular logic-based number-placement puzzle game. The literal meaning of "Su-doku" in Japanese is "the number that is single".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The objective is to fill a nine-by-nine (9x9) grid with digits so that each row, column and 3x3 section contain number between 1 and 9, with each number used once and only once in each section. The Sudoku game players are provided with partially filled grid meant to be solved.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To solve sudoku one doesn't require the knowledge of mathematics but require the logic and reasoning. Solving Sudoku Puzzles daily helps with your brain. It improves the concentration and logical thinking. One can look for sudoku puzzles given in Newspapers or can play them online provided by many websites. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  About:
&lt;/h2&gt;

&lt;p&gt;This Script is a Sudoku Solver that solves almost any Sudoku Puzzle by visualizing through the Backtracking Algorithm which is made using the PyGame Library in Python. Ever tried but stucked on Sudoku Puzzles given in newspapers, magazines and online. You can use this script to get its solution instantly and move further.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Sudoku-Solver" rel="noopener noreferrer"&gt;
        Sudoku-Solver
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🎯 This Python-based Sudoku Solver utilizes the PyGame Library and Backtracking Algorithm to visualize and solve Sudoku puzzles efficiently. With its intuitive interface, users can input and interact with the Sudoku board, allowing for a seamless solving experience.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Working:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Every time this Script is executed, a Random Solvable board is created.&lt;/li&gt;
&lt;li&gt;  Now, the user can first try to attempt solving it by clicking on the cells and entering values manually. Check the Input Section for the same.&lt;/li&gt;
&lt;li&gt;  Once the the user finalizes that the inputted number is the correct entry, pressing the enter key will attempt to input the number onto the board. &lt;/li&gt;
&lt;li&gt;  Correct answers will be permanently displayed while incorrect answers will be removed. &lt;/li&gt;
&lt;li&gt;  Likewise, values can be removed by pressing on the backspace or delete keys.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcdf37yv1e3mcn0aat5ip.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcdf37yv1e3mcn0aat5ip.gif" alt="Entering Values"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  If at any point the player decides to solve the board, the Spacebar key can be pressed.&lt;/li&gt;
&lt;li&gt;  This will commence a visual which will demonstrate how the backtracking algorithm works and how it is being applied in order to solve the board.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafttou4aho4ok6s4ftt4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafttou4aho4ok6s4ftt4.gif" alt="Visualizer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Input:
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Keys&lt;/th&gt;
&lt;th&gt;Actions&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Left Click&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Selects the Box to enter a value into that cell.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Enter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Confirms the Value written on the board.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Backspace/Delete&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deletes the value in that cell.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Space&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Solves the Board using the Algorithm.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;h&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Gives a Hint. Displays a random correct value on the board.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;p&gt;In order to run the Script, the require &lt;strong&gt;Python &amp;amp; PyGame&lt;/strong&gt; and you can install the requirements using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install -r requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Execution:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Clone this repository using
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/dhhruv/Sudoku-Solver.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;OR&lt;/strong&gt;&lt;br&gt;
Zip Download the Repository and Extract it's contents.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Now run the &lt;a href="https://github.com/dhhruv/Sudoku-Solver/blob/master/SudokuGUI.py" rel="noopener noreferrer"&gt;SudokuGUI&lt;/a&gt; file directly in your Terminal using
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python SudokuGUI.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;OR&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python3 SudokuGUI.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You can get more information about Sudoku Solver on: &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhhruv" rel="noopener noreferrer"&gt;
        dhhruv
      &lt;/a&gt; / &lt;a href="https://github.com/dhhruv/Sudoku-Solver" rel="noopener noreferrer"&gt;
        Sudoku-Solver
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🎯 This Python-based Sudoku Solver utilizes the PyGame Library and Backtracking Algorithm to visualize and solve Sudoku puzzles efficiently. With its intuitive interface, users can input and interact with the Sudoku board, allowing for a seamless solving experience.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>codenewbie</category>
      <category>beginners</category>
      <category>python</category>
      <category>git</category>
    </item>
  </channel>
</rss>
