{"action":"created","comment":{"url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/pulls/comments/221757402","pull_request_review_id":160486387,"id":221757402,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyMTc1NzQwMg==","diff_hunk":"@@ -14,173 +14,197 @@\n \n public class MakeAllCardsList {\n \n-\t//This code is meant to be run using some kind of scheduler.\n-\n-\tpublic static void main(String[] args) throws Exception{\n-\n-\t\tfinal int TIMES_CHECKED = 168; //Hours in a week\n-\t\t//final int TIMES_CHECKED = 1; //For testing\n-\n-\t\t//Create a list of set abbreviations from the provided file, and check how many times the program has been run so far.\n-\t\tList<String> setAbbr; \n-\n-\t\tif (!new File(\"MTGO_Set_Abbreviations\").exists())\n-\t\t{\n-\t\t\tsetAbbr = FileConverter.readToList(MakeAllCardsList.class.getClassLoader().getResource(\"MTGO_Set_Abbreviations\"));\n-\t\t}\n-\t\telse {\n-\t\t\tsetAbbr = FileConverter.readToList(\"MTGO_Set_Abbreviations\");\t\t\t\n-\t\t}\n-\t\tif (!new File(\"Count.txt\").exists())\n-\t\t{\n-\t\t\tFileConverter.writeFile(0, \"Count.txt\");\n-\t\t}\n-\t\tint count = FileConverter.readToInt(\"Count.txt\");\n-\n-\t\t//Increase the count of how many times this program has been run, and update the text file to reflect that.\n-\t\tcount++;\n-\n-\t\tif (count < TIMES_CHECKED){\n-\t\t\t//In each valid run, get a snapshot of all legal cards and put it in a file\n-\t\t\tFileConverter.writeFile(getLegalSnapshot(setAbbr), \"Run_\"+String.format(\"%03d\", count)+\".txt\");\n-\t\t} else if (count == TIMES_CHECKED) { //On the last run only, after all lists have been created:\n-\n-\t\t\tFileConverter.writeFile(getLegalSnapshot(setAbbr), \"Run_\" + String.format(\"%03d\", count) + \".txt\");\n-\n-\t\t\t//Makes a map of \"card names -> # of times it was at 0.01 tix\"\n-\t\t\tMap<String, Integer> timesLegalMap = new HashMap<>();\n-\n-\t\t\t//Updates the map with each file that was previously written.\n-\t\t\tfor (int c = 1; c <= TIMES_CHECKED; c++) {\n-\t\t\t\tupdateMap(FileConverter.readToList(\"Run_\" + String.format(\"%03d\", c) + \".txt\"), timesLegalMap);\n-\t\t\t}\n-\n-\t\t\t//Add all cards that were 0.01 tix 50% or more of the time to an array\n-\t\t\tList<String> legalCards = new ArrayList<>();\n-\t\t\tfor (String card : timesLegalMap.keySet()) {\n-\t\t\t\tif (timesLegalMap.get(card) >= TIMES_CHECKED / 2)\n-\t\t\t\t\tlegalCards.add(card);\n-\t\t\t}\n-\n-\t\t\t//Print the arrays out as usable, readable files\n-\t\t\tFileConverter.writeFile(legalCards, \"legal_cards.txt\");\n-\t\t\tSystem.out.println(\"File written!\");\n-\t\t\tSystem.out.println(\"Starting Analysis...\");\n-\t\t\tChangeAnalyzer.main(new String[0]);\n-\t\t\t\n-\t\t}\n-\t\tFileConverter.writeFile(count, \"Count.txt\");\n-\t}\n-\n-\t//Updates the map with the snapshot passed to it.\n-\tprivate static void updateMap(List<String> snapshot, Map<String, Integer> map){\n-\t\tfor (String card : snapshot){\n-\t\t\tmap.merge(card, 1, (val, one) -> val + one);\n-\t\t}\n-\t}\n-\n-\tprivate static Set<String> getLegalSnapshot(List<String> setCodes) throws Exception{\n-\t\t//Create an array to hold and eventually return all the cards found to be at 0.01 tix\n-\t\tSet<String> legalCards = new HashSet<>();\n-\n-\t\t//Cycle through the \"set pages\" for every set available on MTGO\n-\t\tfor (String str : setCodes){\n-\t\t\tURL thisUrl = new URL(\"https://www.mtggoldfish.com/index/\"+str+\"#online\");\n-\n-\t\t\t//Reads the webpage into an array of strings.\n-\t\t\tList<String> webpage = FileConverter.readToList(thisUrl);\n-\n-\t\t\tMap<String, Double> cards = getCardNamesAndPrices(webpage);\n-\n-\t\t\tcards.entrySet().stream() //\n-\t\t\t\t.filter(e -> e.getValue() == 0.01) //\n-\t\t\t\t.map(Map.Entry::getKey) //\n-\t\t\t\t.forEach(legalCards::add);\t\n-\t\t\t\n-\t\t\tSystem.out.println(\"Legal cards from \"+str+\" found!\");\n-\t\t}\n-\n-\t\t//Add the land-station basics\n-\t\tlegalCards.add(\"Plains\");\n-\t\tlegalCards.add(\"Island\");\n-\t\tlegalCards.add(\"Swamp\");\n-\t\tlegalCards.add(\"Mountain\");\n-\t\tlegalCards.add(\"Forest\");\n-\n-\t\tSystem.out.println(\"Snapshot complete!\");\n-\t\treturn legalCards;\n-\t}\n-\n-\tprivate static Map<String, Double> getCardNamesAndPrices(List<String> html)  {\n-\t\tMap<String, Double> cards = new HashMap<>();\n-\t\tint linesSinceMarker = -1;\n-\t\tString lastCardFound = null;\n-\n-\t\tfor (String str : html){\n-\n-\t\t\tlinesSinceMarker++;\n-\n-\t\t\tif (str.length() > 17 && str.substring(0, 17).equals(\"<td class='card'>\") && str.indexOf(\"#online\\\">\") > -1){ //Looks for a marker line\n-\n-\t\t\t\t//Get the locations of the second \">\" and the third \"<\", the card's name is located between them\n-\t\t\t\tint secondClose = str.indexOf('>',str.indexOf('>')+1);\n-\t\t\t\tint thirdOpen = str.indexOf('<',str.indexOf('<',str.indexOf('<')+1)+1);\n-\t\t\t\tString thisCard = str.substring(secondClose+1,thirdOpen);\n-\n-\t\t\t\t//Lots of complicated formatting stuff. Don't worry about it.\n-\t\t\t\tString cardname = formatEnglishName(thisCard).replace(\"&#39;\", \"'\").replace(\"Lim-Dul\",\"Lim-Dûl\").replace(\"Jotun\",\"Jötun\");\n-\n-\t\t\t\t//MTGGoldfish doesn't include the accent, but it should, so I add it.\n-\t\t\t\tswitch (cardname){\n-\t\t\t\tcase \"Seance\": cardname = \"Séance\";\n-\t\t\t\tbreak;\n-\t\t\t\tcase \"Dandan\": cardname = \"Dandân\";\n-\t\t\t\tbreak;\n-\t\t\t\tcase \"Khabal Ghoul\": cardname = \"Khabál Ghoul\";\n-\t\t\t\tbreak;\n-\t\t\t\tcase \"Junun Efreet\": cardname = \"Junún Efreet\";\n-\t\t\t\tbreak;\n-\t\t\t\tcase \"Ghazban Ogre\": cardname = \"Ghazbán Ogre\";\n-\t\t\t\tbreak;\n-\t\t\t\tcase \"Ifh-Biff Efreet\": cardname = \"Ifh-Bíff Efreet\";\n-\t\t\t\tbreak;\n-\t\t\t\tcase \"Ring of Ma'ruf\": cardname = \"Ring of Ma'rûf\";\n-\t\t\t\tbreak;\n-\t\t\t\t}\n-\n-\t\t\t\t// Retain knowledge of the last card we found\n-\t\t\t\tlastCardFound = cardname;\n-\n-\t\t\t\t// Then start counting lines until we hit the proper one.\n-\t\t\t\tlinesSinceMarker = 0;\n-\t\t\t}\n-\n-\t\t\t// If we've found a card, then the third line after the marker has the card price\n-\t\t\tif (lastCardFound != null && linesSinceMarker == 4){\n-\t\t\t\tcards.put(lastCardFound, Double.parseDouble(str));\n-\t\t\t\t\n-\t\t\t\tlastCardFound = null;\n-\t\t\t\tlinesSinceMarker = -1;\n-\t\t\t}\n-\t\t}\n-\n-\t\treturn cards;\n-\t}\n-\n-\tprivate static String formatEnglishName(String name){\n-\t\tString formatted = \"\";\n-\t\tfor (int c = 0; c < name.length(); c++){\n-\t\t\tchar letter = name.charAt(c);\n-\n-\t\t\t//Some cards with multiple promo printings have (second promo) or something in parens, this gets rid of that so we don't get duplicates\n-\t\t\tif(letter == '('){\n-\t\t\t\tformatted = formatted.trim();\n-\t\t\t\tbreak;\n-\t\t\t}\n-\t\t\telse\n-\t\t\t\tformatted += letter;\n-\t\t}\n-\t\treturn formatted;\n-\t}\n+    //This code is meant to be run using some kind of scheduler.\n+    private static boolean test = false;\n+\n+    public static void main(String[] args) throws Exception{\n+\n+        final int TIMES_CHECKED = (test ? 1 : 168); // 168 hours per week\n+\n+        //Create a list of set abbreviations from the provided file, and check how many times the program has been run so far.\n+        List<String> setAbbr;\n+\n+        if (test) {\n+            if (!new File(\"MTGO_Set_Abbreviations_test\").exists()) {\n+                setAbbr = FileConverter.readToList(MakeAllCardsList.class.getClassLoader().getResource(\"MTGO_Set_Abbreviations_test\"));\n+            }\n+            else {\n+                setAbbr = FileConverter.readToList(\"MTGO_Set_Abbreviations_test\");\n+            }\n+        } else {\n+            if (!new File(\"MTGO_Set_Abbreviations\").exists()) {\n+                setAbbr = FileConverter.readToList(MakeAllCardsList.class.getClassLoader().getResource(\"MTGO_Set_Abbreviations\"));\n+            }\n+            else {\n+                setAbbr = FileConverter.readToList(\"MTGO_Set_Abbreviations\");\n+            }\n+        }\n+        if (!new File(\"Count.txt\").exists()) {\n+            FileConverter.writeFile(0, \"Count.txt\");\n+        }\n+        int count = FileConverter.readToInt(\"Count.txt\");\n+\n+        //Increase the count of how many times this program has been run, and update the text file to reflect that.\n+        count++;\n+\n+        if (count <= TIMES_CHECKED) {\n+            //In each valid run, get a snapshot of all legal cards and put it in a file\n+            FileConverter.writeFile(getLegalSnapshot(setAbbr), \"Run_\" + String.format(\"%03d\", count) + \".txt\");\n+        }\n+        if (count == TIMES_CHECKED) { //On the last run only, after all lists have been created:\n+\n+            //Makes a map of \"card names -> # of times it was at 0.01 tix\"\n+            Map<String, Integer> timesLegalMap = new HashMap<>();\n+\n+            //Updates the map with each file that was previously written.\n+            for (int c = 1; c <= TIMES_CHECKED; c++) {\n+                updateMap(FileConverter.readToList(\"Run_\" + String.format(\"%03d\", c) + \".txt\"), timesLegalMap);\n+            }\n+\n+            //Add to an array all cards that were 0.01 tix 50% or more of the time\n+            List<String> legalCards = new ArrayList<>();\n+            for (String card : timesLegalMap.keySet()) {\n+                if (timesLegalMap.get(card) >= TIMES_CHECKED / 2)\n+                    legalCards.add(card);\n+            }\n+\n+            //Add to an array all cards that were equal or below $1 50% or more of the time\n+            List<String> dollarLegalCards = new ArrayList<>();\n+            for (String card : timesLegalMap.keySet()) {\n+                if (timesLegalMap.get(card) >= TIMES_CHECKED / 2)\n+                    dollarLegalCards.add(card);\n+            }\n+\n+            //Print the arrays out as usable, readable files\n+            legalCards.retainAll(dollarLegalCards);\n+            FileConverter.writeFile(legalCards, \"legal_cards.txt\");\n+            System.out.println(\"File written!\");\n+            System.out.println(\"Starting Analysis...\");\n+            ChangeAnalyzer.main(new String[0]);\n+\n+        }\n+        FileConverter.writeFile(count, \"Count.txt\");\n+    }\n+\n+    //Updates the map with the snapshot passed to it.\n+    private static void updateMap(List<String> snapshot, Map<String, Integer> map){\n+        for (String card : snapshot){\n+            map.merge(card, 1, (val, one) -> val + one);\n+        }\n+    }\n+\n+    private static Set<String> getLegalSnapshot(List<String> setCodes) throws Exception{\n+        //Create an array to hold and eventually return all the cards found to be at 0.01 tix\n+        Set<String> legalCards = new HashSet<>();\n+\n+        //Cycle through the \"set pages\" for every set available on MTGO\n+        for (String str : setCodes){\n+            URL mtgoUrl = new URL(\"https://www.mtggoldfish.com/index/\" + str + \"#online\");\n+            URL paperUrl = new URL(\"https://www.mtggoldfish.com/index/\" + str + \"#paper\");\n+\n+            //Reads the webpage into an array of strings.\n+            List<String> mtgoWebpage = FileConverter.readToList(mtgoUrl);\n+            List<String> paperWebpage = FileConverter.readToList(paperUrl);\n+\n+            Map<String, Double> mtgoCards = getCardNamesAndPrices(mtgoWebpage);\n+            Map<String, Double> paperCards = getCardNamesAndPrices(paperWebpage);\n+\n+            mtgoCards.entrySet().stream() //\n+                .filter(e -> e.getValue() == 0.01) //\n+                .map(Map.Entry::getKey) //\n+                .forEach(legalCards::add);\n+\n+            Set<String> paperLegalCards = new HashSet<>();\n+            paperCards.entrySet().stream() //\n+                .filter(e -> e.getValue() <= 1) //\n+                .map(Map.Entry::getKey) //\n+                .forEach(paperLegalCards::add);\n+            legalCards.retainAll(paperLegalCards);\n+\n+            System.out.println(\"Legal cards from \" + str + \" found!\");\n+        }\n+\n+        //Add the land-station basics\n+        legalCards.add(\"Plains\");\n+        legalCards.add(\"Island\");\n+        legalCards.add(\"Swamp\");\n+        legalCards.add(\"Mountain\");\n+        legalCards.add(\"Forest\");\n+\n+        System.out.println(\"Snapshot complete!\");\n+        return legalCards;\n+    }\n+\n+    private static Map<String, Double> getCardNamesAndPrices(List<String> html)  {\n+        Map<String, Double> cards = new HashMap<>();\n+        int linesSinceMarker = -1;\n+        String lastCardFound = null;\n+\n+        for (String str : html){\n+\n+            linesSinceMarker++;\n+\n+            if (str.length() > 17 && str.substring(0, 17).equals(\"<td class='card'>\") && (str.indexOf(\"#online\\\">\") > -1) || (str.indexOf(\"#paper\\\">\") > -1)) { //Looks for a marker line\n+\n+                //Get the locations of the second \">\" and the third \"<\", the card's name is located between them\n+                int secondClose = str.indexOf('>',str.indexOf('>')+1);\n+                int thirdOpen = str.indexOf('<',str.indexOf('<',str.indexOf('<')+1)+1);\n+                String thisCard = str.substring(secondClose+1,thirdOpen);\n+\n+                //Lots of complicated formatting stuff. Don't worry about it.\n+                String cardname = formatEnglishName(thisCard).replace(\"&#39;\", \"'\").replace(\"Lim-Dul\",\"Lim-Dûl\").replace(\"Jotun\",\"Jötun\");\n+\n+                //MTGGoldfish doesn't include the accent, but it should, so I add it.\n+                switch (cardname){\n+                case \"Seance\": cardname = \"Séance\";\n+                break;\n+                case \"Dandan\": cardname = \"Dandân\";\n+                break;\n+                case \"Khabal Ghoul\": cardname = \"Khabál Ghoul\";\n+                break;\n+                case \"Junun Efreet\": cardname = \"Junún Efreet\";\n+                break;\n+                case \"Ghazban Ogre\": cardname = \"Ghazbán Ogre\";\n+                break;\n+                case \"Ifh-Biff Efreet\": cardname = \"Ifh-Bíff Efreet\";\n+                break;\n+                case \"Ring of Ma'ruf\": cardname = \"Ring of Ma'rûf\";\n+                break;\n+                }\n+\n+                // Retain knowledge of the last card we found\n+                lastCardFound = cardname;\n+\n+                // Then start counting lines until we hit the proper one.\n+                linesSinceMarker = 0;\n+            }\n+\n+            // If we've found a card, then the third line after the marker has the card price\n+            if (lastCardFound != null && linesSinceMarker == 4){\n+                cards.put(lastCardFound, Double.parseDouble(str));\n+\n+                lastCardFound = null;\n+                linesSinceMarker = -1;\n+            }\n+        }\n+\n+        return cards;\n+    }\n+\n+    private static String formatEnglishName(String name){\n+        String formatted = \"\";\n+        for (int c = 0; c < name.length(); c++){\n+            char letter = name.charAt(c);\n+\n+            //Some cards with multiple promo printings have (second promo) or something in parens, this gets rid of that so we don't get duplicates\n+            if(letter == '('){\n+                formatted = formatted.trim();\n+                break;\n+            }\n+            else\n+                formatted += letter;\n+        }\n+        return formatted;\n+    }","path":"src/main/java/setup/cardlists/MakeAllCardsList.java","position":363,"original_position":363,"commit_id":"a1cbc3ecba03869053a6ad05e917597ae8b1fd34","original_commit_id":"e4ef416faa883a862a7484b88228eb152737aa47","user":{"login":"arturojosejr","id":9386350,"node_id":"MDQ6VXNlcjkzODYzNTA=","avatar_url":"https://avatars0.githubusercontent.com/u/9386350?v=4","gravatar_id":"","url":"https://api.github.com/users/arturojosejr","html_url":"https://github.com/arturojosejr","followers_url":"https://api.github.com/users/arturojosejr/followers","following_url":"https://api.github.com/users/arturojosejr/following{/other_user}","gists_url":"https://api.github.com/users/arturojosejr/gists{/gist_id}","starred_url":"https://api.github.com/users/arturojosejr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arturojosejr/subscriptions","organizations_url":"https://api.github.com/users/arturojosejr/orgs","repos_url":"https://api.github.com/users/arturojosejr/repos","events_url":"https://api.github.com/users/arturojosejr/events{/privacy}","received_events_url":"https://api.github.com/users/arturojosejr/received_events","type":"User","site_admin":false},"body":"ok","created_at":"2018-10-01T21:08:38Z","updated_at":"2018-10-01T21:08:39Z","html_url":"https://github.com/PennyDreadfulMTG/LegalityListCreator/pull/13#discussion_r221757402","pull_request_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/pulls/13","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/pulls/comments/221757402"},"html":{"href":"https://github.com/PennyDreadfulMTG/LegalityListCreator/pull/13#discussion_r221757402"},"pull_request":{"href":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/pulls/13"}},"in_reply_to_id":221754791},"pull_request":{"url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/pulls/13","id":217310108,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE3MzEwMTA4","html_url":"https://github.com/PennyDreadfulMTG/LegalityListCreator/pull/13","diff_url":"https://github.com/PennyDreadfulMTG/LegalityListCreator/pull/13.diff","patch_url":"https://github.com/PennyDreadfulMTG/LegalityListCreator/pull/13.patch","issue_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/issues/13","number":13,"state":"open","locked":false,"title":"Added one dollar price limit","user":{"login":"arturojosejr","id":9386350,"node_id":"MDQ6VXNlcjkzODYzNTA=","avatar_url":"https://avatars0.githubusercontent.com/u/9386350?v=4","gravatar_id":"","url":"https://api.github.com/users/arturojosejr","html_url":"https://github.com/arturojosejr","followers_url":"https://api.github.com/users/arturojosejr/followers","following_url":"https://api.github.com/users/arturojosejr/following{/other_user}","gists_url":"https://api.github.com/users/arturojosejr/gists{/gist_id}","starred_url":"https://api.github.com/users/arturojosejr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arturojosejr/subscriptions","organizations_url":"https://api.github.com/users/arturojosejr/orgs","repos_url":"https://api.github.com/users/arturojosejr/repos","events_url":"https://api.github.com/users/arturojosejr/events{/privacy}","received_events_url":"https://api.github.com/users/arturojosejr/received_events","type":"User","site_admin":false},"body":"Now you could say in the web page something about how the decks are $60 top in paper magic like:\r\n\r\n> \r\nPlaying this format instead of standard, modern, etc. contributes to a greater growth of the community since the game is accessible to players who do not want to spend more than 60 dollars in their first deck but who would like to play at FNM. So the best thing you can do for the community is to play this format until it is recognized as an official format that is played at FNM.","created_at":"2018-09-21T14:53:23Z","updated_at":"2018-10-01T21:08:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1a4b7a918cf1b21ae8c615709b9245a686098a92","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/pulls/13/commits","review_comments_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/pulls/13/comments","review_comment_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/pulls/comments{/number}","comments_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/issues/13/comments","statuses_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/statuses/a1cbc3ecba03869053a6ad05e917597ae8b1fd34","head":{"label":"arturojosejr:master","ref":"master","sha":"a1cbc3ecba03869053a6ad05e917597ae8b1fd34","user":{"login":"arturojosejr","id":9386350,"node_id":"MDQ6VXNlcjkzODYzNTA=","avatar_url":"https://avatars0.githubusercontent.com/u/9386350?v=4","gravatar_id":"","url":"https://api.github.com/users/arturojosejr","html_url":"https://github.com/arturojosejr","followers_url":"https://api.github.com/users/arturojosejr/followers","following_url":"https://api.github.com/users/arturojosejr/following{/other_user}","gists_url":"https://api.github.com/users/arturojosejr/gists{/gist_id}","starred_url":"https://api.github.com/users/arturojosejr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arturojosejr/subscriptions","organizations_url":"https://api.github.com/users/arturojosejr/orgs","repos_url":"https://api.github.com/users/arturojosejr/repos","events_url":"https://api.github.com/users/arturojosejr/events{/privacy}","received_events_url":"https://api.github.com/users/arturojosejr/received_events","type":"User","site_admin":false},"repo":{"id":149774486,"node_id":"MDEwOlJlcG9zaXRvcnkxNDk3NzQ0ODY=","name":"LegalityListCreator","full_name":"arturojosejr/LegalityListCreator","private":false,"owner":{"login":"arturojosejr","id":9386350,"node_id":"MDQ6VXNlcjkzODYzNTA=","avatar_url":"https://avatars0.githubusercontent.com/u/9386350?v=4","gravatar_id":"","url":"https://api.github.com/users/arturojosejr","html_url":"https://github.com/arturojosejr","followers_url":"https://api.github.com/users/arturojosejr/followers","following_url":"https://api.github.com/users/arturojosejr/following{/other_user}","gists_url":"https://api.github.com/users/arturojosejr/gists{/gist_id}","starred_url":"https://api.github.com/users/arturojosejr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arturojosejr/subscriptions","organizations_url":"https://api.github.com/users/arturojosejr/orgs","repos_url":"https://api.github.com/users/arturojosejr/repos","events_url":"https://api.github.com/users/arturojosejr/events{/privacy}","received_events_url":"https://api.github.com/users/arturojosejr/received_events","type":"User","site_admin":false},"html_url":"https://github.com/arturojosejr/LegalityListCreator","description":"The code used to create the list of cards legal in Penny Dreadful.","fork":true,"url":"https://api.github.com/repos/arturojosejr/LegalityListCreator","forks_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/forks","keys_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/keys{/key_id}","collaborators_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/teams","hooks_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/hooks","issue_events_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/issues/events{/number}","events_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/events","assignees_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/assignees{/user}","branches_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/branches{/branch}","tags_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/tags","blobs_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/git/refs{/sha}","trees_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/git/trees{/sha}","statuses_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/statuses/{sha}","languages_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/languages","stargazers_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/stargazers","contributors_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/contributors","subscribers_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/subscribers","subscription_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/subscription","commits_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/commits{/sha}","git_commits_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/git/commits{/sha}","comments_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/comments{/number}","issue_comment_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/issues/comments{/number}","contents_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/contents/{+path}","compare_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/compare/{base}...{head}","merges_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/merges","archive_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/downloads","issues_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/issues{/number}","pulls_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/pulls{/number}","milestones_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/milestones{/number}","notifications_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/labels{/name}","releases_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/releases{/id}","deployments_url":"https://api.github.com/repos/arturojosejr/LegalityListCreator/deployments","created_at":"2018-09-21T14:26:42Z","updated_at":"2018-09-21T14:35:59Z","pushed_at":"2018-09-21T14:35:58Z","git_url":"git://github.com/arturojosejr/LegalityListCreator.git","ssh_url":"git@github.com:arturojosejr/LegalityListCreator.git","clone_url":"https://github.com/arturojosejr/LegalityListCreator.git","svn_url":"https://github.com/arturojosejr/LegalityListCreator","homepage":null,"size":99,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"PennyDreadfulMTG:master","ref":"master","sha":"eaa39edff3e9493376b575e2f1add57037de97b4","user":{"login":"PennyDreadfulMTG","id":22494209,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyNDk0MjA5","avatar_url":"https://avatars1.githubusercontent.com/u/22494209?v=4","gravatar_id":"","url":"https://api.github.com/users/PennyDreadfulMTG","html_url":"https://github.com/PennyDreadfulMTG","followers_url":"https://api.github.com/users/PennyDreadfulMTG/followers","following_url":"https://api.github.com/users/PennyDreadfulMTG/following{/other_user}","gists_url":"https://api.github.com/users/PennyDreadfulMTG/gists{/gist_id}","starred_url":"https://api.github.com/users/PennyDreadfulMTG/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PennyDreadfulMTG/subscriptions","organizations_url":"https://api.github.com/users/PennyDreadfulMTG/orgs","repos_url":"https://api.github.com/users/PennyDreadfulMTG/repos","events_url":"https://api.github.com/users/PennyDreadfulMTG/events{/privacy}","received_events_url":"https://api.github.com/users/PennyDreadfulMTG/received_events","type":"Organization","site_admin":false},"repo":{"id":67841716,"node_id":"MDEwOlJlcG9zaXRvcnk2Nzg0MTcxNg==","name":"LegalityListCreator","full_name":"PennyDreadfulMTG/LegalityListCreator","private":false,"owner":{"login":"PennyDreadfulMTG","id":22494209,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyNDk0MjA5","avatar_url":"https://avatars1.githubusercontent.com/u/22494209?v=4","gravatar_id":"","url":"https://api.github.com/users/PennyDreadfulMTG","html_url":"https://github.com/PennyDreadfulMTG","followers_url":"https://api.github.com/users/PennyDreadfulMTG/followers","following_url":"https://api.github.com/users/PennyDreadfulMTG/following{/other_user}","gists_url":"https://api.github.com/users/PennyDreadfulMTG/gists{/gist_id}","starred_url":"https://api.github.com/users/PennyDreadfulMTG/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PennyDreadfulMTG/subscriptions","organizations_url":"https://api.github.com/users/PennyDreadfulMTG/orgs","repos_url":"https://api.github.com/users/PennyDreadfulMTG/repos","events_url":"https://api.github.com/users/PennyDreadfulMTG/events{/privacy}","received_events_url":"https://api.github.com/users/PennyDreadfulMTG/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/PennyDreadfulMTG/LegalityListCreator","description":"The code used to create the list of cards legal in Penny Dreadful.","fork":false,"url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator","forks_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/forks","keys_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/teams","hooks_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/hooks","issue_events_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/issues/events{/number}","events_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/events","assignees_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/assignees{/user}","branches_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/branches{/branch}","tags_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/tags","blobs_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/git/refs{/sha}","trees_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/statuses/{sha}","languages_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/languages","stargazers_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/stargazers","contributors_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/contributors","subscribers_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/subscribers","subscription_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/subscription","commits_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/commits{/sha}","git_commits_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/git/commits{/sha}","comments_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/comments{/number}","issue_comment_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/issues/comments{/number}","contents_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/contents/{+path}","compare_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/merges","archive_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/downloads","issues_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/issues{/number}","pulls_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/pulls{/number}","milestones_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/milestones{/number}","notifications_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/labels{/name}","releases_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/releases{/id}","deployments_url":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/deployments","created_at":"2016-09-10T00:40:25Z","updated_at":"2018-04-17T15:04:18Z","pushed_at":"2018-09-21T14:53:24Z","git_url":"git://github.com/PennyDreadfulMTG/LegalityListCreator.git","ssh_url":"git@github.com:PennyDreadfulMTG/LegalityListCreator.git","clone_url":"https://github.com/PennyDreadfulMTG/LegalityListCreator.git","svn_url":"https://github.com/PennyDreadfulMTG/LegalityListCreator","homepage":null,"size":98,"stargazers_count":7,"watchers_count":7,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"archived":false,"open_issues_count":5,"license":null,"forks":5,"open_issues":5,"watchers":7,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/pulls/13"},"html":{"href":"https://github.com/PennyDreadfulMTG/LegalityListCreator/pull/13"},"issue":{"href":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/issues/13"},"comments":{"href":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/issues/13/comments"},"review_comments":{"href":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/pulls/13/comments"},"review_comment":{"href":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/pulls/13/commits"},"statuses":{"href":"https://api.github.com/repos/PennyDreadfulMTG/LegalityListCreator/statuses/a1cbc3ecba03869053a6ad05e917597ae8b1fd34"}},"author_association":"NONE"}}
{"actor":{"display_login":"arturojosejr"}}