[LIB-8] URL and HTML tag processing, new entities fields
authorgotty <gotty@fb0bcced-7025-49ed-a12f-f98bce993226>
Thu, 7 Nov 2019 00:43:23 +0000 (00:43 +0000)
committergotty <gotty@fb0bcced-7025-49ed-a12f-f98bce993226>
Thu, 7 Nov 2019 00:43:23 +0000 (00:43 +0000)
git-svn-id: https://svn.hedgecode.org/lib/snooker-score-api/trunk@174 fb0bcced-7025-49ed-a12f-f98bce993226

31 files changed:
src/main/java/org/hedgecode/snooker/SnookerScoreApp.java
src/main/java/org/hedgecode/snooker/SnookerURLUtils.java [new file with mode: 0644]
src/main/java/org/hedgecode/snooker/annotation/IsURL.java [new file with mode: 0644]
src/main/java/org/hedgecode/snooker/annotation/WithHTMLTags.java [new file with mode: 0644]
src/main/java/org/hedgecode/snooker/api/Event.java
src/main/java/org/hedgecode/snooker/api/IdEntity.java
src/main/java/org/hedgecode/snooker/api/Match.java
src/main/java/org/hedgecode/snooker/api/Player.java
src/main/java/org/hedgecode/snooker/api/PlayerImage.java [new file with mode: 0644]
src/main/java/org/hedgecode/snooker/api/RankingType.java
src/main/java/org/hedgecode/snooker/api/SnookerURL.java [new file with mode: 0644]
src/main/java/org/hedgecode/snooker/api/URLEntity.java [new file with mode: 0644]
src/main/java/org/hedgecode/snooker/cache/assign/EventAssigner.java
src/main/java/org/hedgecode/snooker/json/JsonEvent.java
src/main/java/org/hedgecode/snooker/json/JsonIdEntity.java
src/main/java/org/hedgecode/snooker/json/JsonMatch.java
src/main/java/org/hedgecode/snooker/json/JsonPlayer.java
src/main/java/org/hedgecode/snooker/json/JsonRound.java
src/main/java/org/hedgecode/snooker/json/JsonURLEntity.java [new file with mode: 0644]
src/test/resources/org/hedgecode/snooker/json/JsonEventTest.ser
src/test/resources/org/hedgecode/snooker/json/JsonEventsTest.ser
src/test/resources/org/hedgecode/snooker/json/JsonMatchTest.ser
src/test/resources/org/hedgecode/snooker/json/JsonMatchesTest.ser
src/test/resources/org/hedgecode/snooker/json/JsonOngoingMatchTest.ser
src/test/resources/org/hedgecode/snooker/json/JsonOngoingMatchesTest.ser
src/test/resources/org/hedgecode/snooker/json/JsonPlayerTest.json
src/test/resources/org/hedgecode/snooker/json/JsonPlayerTest.ser
src/test/resources/org/hedgecode/snooker/json/JsonPlayersTest.json
src/test/resources/org/hedgecode/snooker/json/JsonPlayersTest.ser
src/test/resources/org/hedgecode/snooker/json/JsonRankingTest.ser
src/test/resources/org/hedgecode/snooker/json/JsonRankingsTest.ser

index dbd2b9a..c597807 100644 (file)
@@ -199,13 +199,12 @@ public final class SnookerScoreApp {
         );
     }
 
-    private static void printPlayer(Player player) {
+    private static void printPlayer(Player player) throws APIException {
         SnookerScoreConsole.console(
                 String.format(
-                        "%s%s %s [%s] (%s)",
+                        "%s%s [%s] (%s)",
                         INDENT,
-                        player.surnameFirst() ? player.lastName() : player.firstName(),
-                        player.surnameFirst() ? player.firstName() : player.lastName(),
+                        player.fullName(),
                         SnookerDateUtils.formatDate(player.born()),
                         player.nationality()
                 )
@@ -218,17 +217,15 @@ public final class SnookerScoreApp {
         Player player2 = api.getPlayer(match.player2Id());
         SnookerScoreConsole.console(
                 String.format(
-                        "%s[%s %s - %s] %s %s %s-%s %s %s",
+                        "%s[%s %s - %s] %s %s-%s %s",
                         INDENT,
                         SnookerDateUtils.formatDate(match.startDate()),
                         SnookerDateUtils.formatTime(match.startDate()),
                         SnookerDateUtils.formatTime(match.endDate()),
-                        player1.surnameFirst() ? player1.lastName() : player1.firstName(),
-                        player1.surnameFirst() ? player1.firstName() : player1.lastName(),
+                        player1.fullName(),
                         match.score1(),
                         match.score2(),
-                        player2.surnameFirst() ? player2.lastName() : player2.firstName(),
-                        player2.surnameFirst() ? player2.firstName() : player2.lastName()
+                        player2.fullName()
                 )
         );
     }
@@ -302,11 +299,10 @@ public final class SnookerScoreApp {
         Player player = api.getPlayer(seeding.playerId());
         SnookerScoreConsole.console(
                 String.format(
-                        "%s%s. %s %s",
+                        "%s%s. %s",
                         indent,
                         seeding.seeding(),
-                        player.surnameFirst() ? player.lastName() : player.firstName(),
-                        player.surnameFirst() ? player.firstName() : player.lastName()
+                        player.fullName()
                 )
         );
     }
diff --git a/src/main/java/org/hedgecode/snooker/SnookerURLUtils.java b/src/main/java/org/hedgecode/snooker/SnookerURLUtils.java
new file mode 100644 (file)
index 0000000..c345d78
--- /dev/null
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2017-2019. Developed by Hedgecode.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hedgecode.snooker;
+
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.imageio.ImageIO;
+
+import org.hedgecode.snooker.api.APIException;
+import org.hedgecode.snooker.api.SnookerURL;
+
+/**
+ * Utils for working with URLs.
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public final class SnookerURLUtils {
+
+    private static final String CRLF = System.lineSeparator();
+
+    private static final String HTTP_REGEX = "(http[s]?://.+)";
+    private static final String ANCHOR_REGEX = "<a href=\"([^\"]+)\"[^>]*>([^<]+)</a>";
+
+    private static final Pattern HTTP_PATTERN = Pattern.compile(HTTP_REGEX);
+    private static final Pattern ANCHOR_PATTERN = Pattern.compile(ANCHOR_REGEX);
+
+    private static final String BR_REGEX = "<[Bb][Rr][ /]*>";
+    private static final String TAG_REGEX = "<[^>]+>";
+
+    private static final String TWITTER_URL = "https://twitter.com/";
+    private static final String TWITTER_HASHTAG = "hashtag/";
+
+    public static List<SnookerURL> parseUrls(Map<String, String> htmlStrings) throws APIException {
+        List<SnookerURL> result = new ArrayList<>();
+        htmlStrings.forEach( (name, htmlString) -> {
+            Matcher matcher = ANCHOR_PATTERN.matcher(htmlString);
+            while (matcher.find()) {
+                try {
+                    URL url = new URL(matcher.group(1));
+                    String text = matcher.group(2);
+                    result.add(
+                            new SnookerURL(text, url)
+                    );
+                } catch (IOException ignored) {
+                }
+            }
+        });
+        return result;
+    }
+
+    public static List<SnookerURL> assignUrls(Map<String, String> urlStrings) throws APIException {
+        List<SnookerURL> result = new ArrayList<>();
+        urlStrings.forEach( (name, urlString) -> {
+            Matcher matcher = HTTP_PATTERN.matcher(urlString);
+            if (matcher.find()) {
+                try {
+                    URL url = new URL(matcher.group(1));
+                    result.add(
+                            new SnookerURL(name, url)
+                    );
+                } catch (IOException ignored) {
+                }
+            }
+        });
+        return result;
+    }
+
+    public static SnookerURL assignUrl(String name, String urlString) throws APIException {
+        SnookerURL result = null;
+        URL url = assignUrl(urlString);
+        if (url != null) {
+            result = new SnookerURL(name, url);
+        }
+        return result;
+    }
+
+    public static URL assignUrl(String urlString) throws APIException {
+        URL result = null;
+        if (urlString != null && !urlString.isEmpty()) {
+            Matcher matcher = HTTP_PATTERN.matcher(urlString);
+            if (matcher.find()) {
+                try {
+                    result = new URL(matcher.group(1));
+                } catch (IOException e) {
+                    throw new APIException(
+                            APIException.Type.INFO, "Failed to recognize URL: " + e.getMessage()
+                    );
+                }
+            }
+        }
+        return result;
+    }
+
+    public static String cutTags(String htmlString) {
+        if (htmlString != null && !htmlString.isEmpty()) {
+            return htmlString.replaceAll(
+                    BR_REGEX, CRLF
+            ).replaceAll(
+                    TAG_REGEX, ""
+            );
+        }
+        return htmlString;
+    }
+
+    public static BufferedImage loadImage(URL imageUrl) throws APIException {
+        BufferedImage result;
+        try {
+            result = ImageIO.read(imageUrl);
+        } catch (IOException e) {
+            throw new APIException(
+                    APIException.Type.INFO, "Failed to load image at the address: " + imageUrl
+            );
+        }
+        return result;
+    }
+
+    public static String twitterUrl(String twitterName) {
+        return twitterName != null && !twitterName.isEmpty()
+                ? TWITTER_URL.concat(twitterName)
+                : null;
+    }
+
+    public static String hashtagUrl(String twitterHashtag) {
+        return twitterHashtag != null && !twitterHashtag.isEmpty()
+                ? TWITTER_URL.concat(TWITTER_HASHTAG).concat(twitterHashtag)
+                : null;
+    }
+
+}
diff --git a/src/main/java/org/hedgecode/snooker/annotation/IsURL.java b/src/main/java/org/hedgecode/snooker/annotation/IsURL.java
new file mode 100644 (file)
index 0000000..47566fc
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2017. Developed by Hedgecode.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hedgecode.snooker.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation Type indicates the fields and methods that are html urls.
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.FIELD, ElementType.METHOD})
+public @interface IsURL {
+}
diff --git a/src/main/java/org/hedgecode/snooker/annotation/WithHTMLTags.java b/src/main/java/org/hedgecode/snooker/annotation/WithHTMLTags.java
new file mode 100644 (file)
index 0000000..5a4b0cf
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2017. Developed by Hedgecode.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hedgecode.snooker.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation Type indicates the fields that may contain html anchor links.
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.FIELD})
+public @interface WithHTMLTags {
+}
index b3fdb68..2410aae 100644 (file)
@@ -81,8 +81,12 @@ public interface Event extends IdEntity {
 
     String twitter();
 
+    String twitterUrl();
+
     String hashTag();
 
+    String hashTagUrl();
+
     float conversionRate();
 
     boolean allRoundsAdded();
@@ -101,8 +105,12 @@ public interface Event extends IdEntity {
 
     String commonNote();
 
-    int defendingChampion();
+    int defendingChampionId();
+
+    Player defendingChampion();
+
+    int previousEditionId();
 
-    int previousEdition();
+    Event previousEdition();
 
 }
index 699ea8f..c1ed21d 100644 (file)
@@ -21,7 +21,7 @@ package org.hedgecode.snooker.api;
  *
  * @author Dmitry Samoshin aka gotty
  */
-public interface IdEntity {
+public interface IdEntity extends URLEntity {
 
     int getId();
 
index b006c32..3a6d947 100644 (file)
@@ -75,7 +75,7 @@ public interface Match extends IdEntity {
 
     int tableNo();
 
-    String videoURL();
+    String videoUrl();
 
     Date initDate();
 
index 9c6c7ea..49a3e7a 100644 (file)
@@ -43,6 +43,8 @@ public interface Player extends IdEntity {
 
     String shortName();
 
+    String fullName();
+
     String nationality();
 
     String sex();
@@ -53,6 +55,8 @@ public interface Player extends IdEntity {
 
     String twitter();
 
+    String twitterUrl();
+
     boolean surnameFirst();
 
     String license();
@@ -63,6 +67,14 @@ public interface Player extends IdEntity {
 
     String photo();
 
+    PlayerImage image() throws APIException;
+
+    String photoSource();
+
+    int firstSeasonAsPro();
+
+    int lastSeasonAsPro();
+
     String info();
 
 }
diff --git a/src/main/java/org/hedgecode/snooker/api/PlayerImage.java b/src/main/java/org/hedgecode/snooker/api/PlayerImage.java
new file mode 100644 (file)
index 0000000..963d2d2
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2017. Developed by Hedgecode.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hedgecode.snooker.api;
+
+import java.awt.image.BufferedImage;
+import java.io.Serializable;
+import java.net.URL;
+
+import org.hedgecode.snooker.SnookerURLUtils;
+
+/**
+ * Player Image Storage Entity.
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public class PlayerImage implements Serializable {
+
+    private URL url;
+    private BufferedImage image;
+
+    public PlayerImage(URL imageUrl) {
+        url = imageUrl;
+    }
+
+    public PlayerImage(URL imageUrl, boolean autoload) throws APIException {
+        url = imageUrl;
+        if (autoload) loadImage();
+    }
+
+    public URL url() {
+        return url;
+    }
+
+    public String urlString() {
+        return url.toString();
+    }
+
+    public BufferedImage image() {
+        return image;
+    }
+
+    public BufferedImage loadImage() throws APIException {
+        image = SnookerURLUtils.loadImage(url);
+        return image;
+    }
+
+    @Override
+    public String toString() {
+        return urlString();
+    }
+
+}
index 9e308b6..5d7e7aa 100644 (file)
@@ -32,6 +32,8 @@ public enum RankingType {
     ProvOneYearMoneyRankings (2013, Season.CURRENT_YEAR),
     ProjectedEndOfSeasonMoneySeedings (2014, Season.CURRENT_YEAR),
     ProjectedGrandPrixMoneyRankings (2014, Season.CURRENT_YEAR),
+    ProjectedPCMoneyRankings (2016, Season.CURRENT_YEAR),
+    ProjectedWCMoneySeedings (2017, Season.CURRENT_YEAR),
 
     PrevMoneyRankings (Season.CURRENT_YEAR - 1, Season.CURRENT_YEAR),
     PrevMoneySeedings (Season.CURRENT_YEAR - 1, Season.CURRENT_YEAR),
@@ -40,6 +42,11 @@ public enum RankingType {
 
     WorldGrandPrix2015Rankings (2014, 2014),
     WorldGrandPrix2016Rankings (2015, 2015),
+    WorldGrandPrix2017Rankings (2017, 2018),
+    WorldGrandPrix2018Rankings (2018, 2018),
+
+    PC2017Rankings (2017, 2017),
+    PC2018Rankings (2018, 2018),
 
     CombinedOrderofMerit2013 (2013, 2013),
     CombinedOrderOfMerit2014 (2014, 2014),
@@ -82,6 +89,25 @@ public enum RankingType {
     SeedingsAfterGerman2016 (2015, 2015),
     SeedingsAfterChina2016 (2015, 2015),
     SeedingsAfterWorld2016 (2015, 2015),
+    SeedingsAfterWorldOpen2016 (2016, 2016),
+    SeedingsAfterPHC2016 (2016, 2016),
+    SeedingsAfterShanghai2016 (2016, 2016),
+    SeedingsAfterInternational2016 (2016, 2016),
+    SeedingsAfterUK2016 (2016, 2016),
+    SeedingsAfterScottish2016 (2016, 2016),
+    SeedingsAfterGerman2017 (2016, 2016),
+    SeedingsAfterChina2017 (2016, 2016),
+    SeedingsAfterWorld2017 (2017, 2017),
+    SeedingsAfterRiga2017 (2017, 2017),
+    SeedingsAfterIndian2017 (2017, 2017),
+    SeedingsAfterWorldOpen2017 (2017, 2017),
+    SeedingsAfterEuropean2017 (2017, 2017),
+    SeedingsAfterInternational2017 (2017, 2017),
+    SeedingsAfterNIO2017 (2017, 2017),
+    SeedingsAfterUK2017 (2017, 2017),
+    SeedingsAfterScottish2017 (2017, 2017),
+    SeedingsAfterGerman2018 (2017, 2017),
+    SeedingsAfterShootOut2018 (2017, 2017),
 
     OrderOfMeritAfterPTC4 (2011, 2011),
     OrderOfMeritAfterPTC8 (2011, 2011),
diff --git a/src/main/java/org/hedgecode/snooker/api/SnookerURL.java b/src/main/java/org/hedgecode/snooker/api/SnookerURL.java
new file mode 100644 (file)
index 0000000..6a976aa
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2017. Developed by Hedgecode.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hedgecode.snooker.api;
+
+import java.io.Serializable;
+import java.net.URL;
+
+/**
+ * Snooker URL Entity.
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public class SnookerURL implements Serializable {
+
+    private String name;
+    private URL url;
+
+    public SnookerURL(String name, URL url) {
+        this.name = name;
+        this.url = url;
+    }
+
+    public String name() {
+        return name;
+    }
+
+    public URL url() {
+        return url;
+    }
+
+}
diff --git a/src/main/java/org/hedgecode/snooker/api/URLEntity.java b/src/main/java/org/hedgecode/snooker/api/URLEntity.java
new file mode 100644 (file)
index 0000000..0b9f914
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017. Developed by Hedgecode.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hedgecode.snooker.api;
+
+import java.util.List;
+
+/**
+ * Abstract URL Entity API Interface.
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public interface URLEntity {
+
+    List<SnookerURL> getLinks() throws APIException;
+
+    List<SnookerURL> getURLs() throws APIException;
+
+    SnookerURL getURL(String name) throws APIException;
+
+    String withoutTags(String name) throws APIException;
+
+}
index 8c2cc8b..8ea144b 100644 (file)
@@ -18,6 +18,7 @@ package org.hedgecode.snooker.cache.assign;
 
 import org.hedgecode.snooker.api.APIException;
 import org.hedgecode.snooker.api.Event;
+import org.hedgecode.snooker.api.Player;
 import org.hedgecode.snooker.json.JsonEvent;
 
 /**
@@ -40,14 +41,28 @@ public class EventAssigner extends CacheIdAssigner<Event> {
 
     @Override
     public void assign(Event event) throws APIException {
+        JsonEvent jsonEvent = (JsonEvent) event;
         if (event.mainEventId() != event.eventId() && event.mainEventId() > 0) {
-            JsonEvent jsonEvent = (JsonEvent) event;
             jsonEvent.setMainEvent(
                     cacheScore.getCachedEvent(
                             event.mainEventId()
                     )
             );
         }
+        if (event.previousEditionId() > 0) {
+            jsonEvent.setPreviousEdition(
+                    cacheScore.getCachedEvent(
+                            event.previousEditionId()
+                    )
+            );
+        }
+        if (event.defendingChampionId() > 0) {
+            jsonEvent.setDefendingChampion(
+                    cacheScore.getCachedPlayer(
+                            event.defendingChampionId()
+                    )
+            );
+        }
     }
 
 }
index 0ba62ab..e7a256d 100644 (file)
@@ -21,8 +21,12 @@ import java.util.Date;
 import com.google.gson.annotations.Expose;
 import com.google.gson.annotations.SerializedName;
 
+import org.hedgecode.snooker.SnookerURLUtils;
+import org.hedgecode.snooker.annotation.IsURL;
+import org.hedgecode.snooker.annotation.WithHTMLTags;
 import org.hedgecode.snooker.api.Event;
 import org.hedgecode.snooker.api.EventFormat;
+import org.hedgecode.snooker.api.Player;
 import org.hedgecode.snooker.api.Season;
 
 /**
@@ -66,6 +70,7 @@ public class JsonEvent extends JsonIdEntity implements Event {
     private String sex;
     @SerializedName("AgeGroup")
     private String ageGroup;
+    @IsURL
     @SerializedName("Url")
     private String url;
     @SerializedName("Related")
@@ -96,6 +101,7 @@ public class JsonEvent extends JsonIdEntity implements Event {
     private float conversionRate;
     @SerializedName("AllRoundsAdded")
     private boolean allRoundsAdded;
+    @IsURL
     @SerializedName("PhotoURLs")
     private String photoUrls;
     @SerializedName("NumCompetitors")
@@ -106,14 +112,20 @@ public class JsonEvent extends JsonIdEntity implements Event {
     private int numActive;
     @SerializedName("NumResults")
     private int numResults;
+    @WithHTMLTags
     @SerializedName("Note")
     private String note;
+    @WithHTMLTags
     @SerializedName("CommonNote")
     private String commonNote;
     @SerializedName("DefendingChampion")
-    private int defendingChampion;
+    private int defendingChampionId;
+    @Expose
+    private Player defendingChampion;
     @SerializedName("PreviousEdition")
-    private int previousEdition;
+    private int previousEditionId;
+    @Expose
+    private Event previousEdition;
 
     protected JsonEvent() {
     }
@@ -191,14 +203,16 @@ public class JsonEvent extends JsonIdEntity implements Event {
 
     @Override
     public Event mainEvent() {
-        if (mainEvent == null && mainEventId == eventId)
+        if (mainEvent == null && mainEventId == eventId) {
             mainEvent = this;
+        }
         return mainEvent;
     }
 
     public void setMainEvent(Event event) {
-        if (event != null && eventId == event.eventId())
+        if (event != null && eventId == event.eventId()) {
             mainEvent = event;
+        }
     }
 
     @Override
@@ -273,11 +287,23 @@ public class JsonEvent extends JsonIdEntity implements Event {
         return twitter;
     }
 
+    @IsURL
+    @Override
+    public String twitterUrl() {
+        return SnookerURLUtils.twitterUrl(twitter);
+    }
+
     @Override
     public String hashTag() {
         return hashTag;
     }
 
+    @IsURL
+    @Override
+    public String hashTagUrl() {
+        return SnookerURLUtils.hashtagUrl(hashTag);
+    }
+
     @Override
     public float conversionRate() {
         return conversionRate;
@@ -324,15 +350,37 @@ public class JsonEvent extends JsonIdEntity implements Event {
     }
 
     @Override
-    public int defendingChampion() {
+    public int defendingChampionId() {
+        return defendingChampionId;
+    }
+
+    @Override
+    public Player defendingChampion() {
         return defendingChampion;
     }
 
+    public void setDefendingChampion(Player champion) {
+        if (champion != null && defendingChampionId == champion.playerId()) {
+            defendingChampion = champion;
+        }
+    }
+
     @Override
-    public int previousEdition() {
+    public int previousEditionId() {
+        return previousEditionId;
+    }
+
+    @Override
+    public Event previousEdition() {
         return previousEdition;
     }
 
+    public void setPreviousEdition(Event event) {
+        if (event != null && previousEditionId == event.eventId()) {
+            previousEdition = event;
+        }
+    }
+
     @Override
     public int getId() {
         return eventId;
index 25207b4..eb6491e 100644 (file)
@@ -21,12 +21,14 @@ import java.io.Serializable;
 import org.hedgecode.snooker.api.IdEntity;
 
 /**
- * Abstract Entity to JSON deserialize.
+ * Abstract ID Entity to JSON deserialize.
  *
  * @author Dmitry Samoshin aka gotty
  */
-public abstract class JsonIdEntity implements IdEntity, Serializable {
-
+public abstract class JsonIdEntity
+        extends JsonURLEntity
+        implements IdEntity, Serializable
+{
     @Override
     public boolean equals(Object obj) {
         if (this == obj)
index 22248dd..cda1b86 100644 (file)
@@ -21,6 +21,8 @@ import java.util.Date;
 import com.google.gson.annotations.Expose;
 import com.google.gson.annotations.SerializedName;
 
+import org.hedgecode.snooker.annotation.IsURL;
+import org.hedgecode.snooker.annotation.WithHTMLTags;
 import org.hedgecode.snooker.api.Event;
 import org.hedgecode.snooker.api.Match;
 import org.hedgecode.snooker.api.Player;
@@ -68,8 +70,10 @@ public class JsonMatch extends JsonIdEntity implements Match {
     private boolean onBreak;
     @SerializedName("WorldSnookerID")
     private int worldSnookerId;
+    @IsURL
     @SerializedName("LiveUrl")
     private String liveUrl;
+    @IsURL
     @SerializedName("DetailsUrl")
     private String detailsUrl;
     @SerializedName("PointsDropped")
@@ -82,8 +86,9 @@ public class JsonMatch extends JsonIdEntity implements Match {
     private int type;
     @SerializedName("TableNo")
     private int tableNo;
+    @IsURL
     @SerializedName("VideoURL")
-    private String videoURL;
+    private String videoUrl;
     @SerializedName("InitDate")
     private Date initDate;
     @SerializedName("ModDate")
@@ -94,14 +99,18 @@ public class JsonMatch extends JsonIdEntity implements Match {
     private Date endDate;
     @SerializedName("ScheduledDate")
     private Date scheduledDate;
+    @WithHTMLTags
     @SerializedName("FrameScores")
     private String frameScores;
+    @WithHTMLTags
     @SerializedName("Sessions")
     private String sessions;
+    @WithHTMLTags
     @SerializedName("Note")
-    private String  note;
+    private String note;
+    @WithHTMLTags
     @SerializedName("ExtendedNote")
-    private String  extendedNote;
+    private String extendedNote;
 
     protected JsonMatch() {
     }
@@ -252,8 +261,8 @@ public class JsonMatch extends JsonIdEntity implements Match {
     }
 
     @Override
-    public String videoURL() {
-        return videoURL;
+    public String videoUrl() {
+        return videoUrl;
     }
 
     @Override
index 04ac5da..aa481ed 100644 (file)
 
 package org.hedgecode.snooker.json;
 
+import java.net.URL;
 import java.util.Date;
 
+import com.google.gson.annotations.Expose;
 import com.google.gson.annotations.SerializedName;
 
+import org.hedgecode.snooker.SnookerURLUtils;
+import org.hedgecode.snooker.annotation.IsURL;
+import org.hedgecode.snooker.api.APIException;
 import org.hedgecode.snooker.api.Player;
+import org.hedgecode.snooker.api.PlayerImage;
 
 /**
  * Player Entity to JSON deserialize.
@@ -47,10 +53,13 @@ public class JsonPlayer extends JsonIdEntity implements Player {
     private int teamSeason;
     @SerializedName("ShortName")
     private String shortName;
+    @Expose
+    private String fullName;
     @SerializedName("Nationality")
     private String nationality;
     @SerializedName("Sex")
     private String sex;
+    @IsURL
     @SerializedName("BioPage")
     private String bioPage;
     @SerializedName("Born")
@@ -63,10 +72,21 @@ public class JsonPlayer extends JsonIdEntity implements Player {
     private String license;
     @SerializedName("Club")
     private String club;
+    @IsURL
     @SerializedName("URL")
     private String url;
+    @IsURL
     @SerializedName("Photo")
     private String photo;
+    @Expose
+    private PlayerImage image;
+    @IsURL
+    @SerializedName("PhotoSource")
+    private String photoSource;
+    @SerializedName("FirstSeasonAsPro")
+    private int firstSeasonAsPro;
+    @SerializedName("LastSeasonAsPro")
+    private int lastSeasonAsPro;
     @SerializedName("Info")
     private String info;
 
@@ -119,6 +139,19 @@ public class JsonPlayer extends JsonIdEntity implements Player {
     }
 
     @Override
+    public String fullName() {
+        if (fullName == null) {
+            fullName = String.format(
+                    "%s %s %s",
+                    surnameFirst ? lastName : firstName,
+                    middleName,
+                    surnameFirst ? firstName : lastName
+            ).replaceAll("\\s+", " ").trim();
+        }
+        return fullName;
+    }
+
+    @Override
     public String nationality() {
         return nationality;
     }
@@ -145,6 +178,12 @@ public class JsonPlayer extends JsonIdEntity implements Player {
         return twitter;
     }
 
+    @IsURL
+    @Override
+    public String twitterUrl() {
+        return SnookerURLUtils.twitterUrl(twitter);
+    }
+
     @Override
     public boolean surnameFirst() {
         return surnameFirst;
@@ -171,6 +210,32 @@ public class JsonPlayer extends JsonIdEntity implements Player {
     }
 
     @Override
+    public PlayerImage image() throws APIException {
+        if (image == null) {
+            URL imageUrl = SnookerURLUtils.assignUrl(photo);
+            if (imageUrl != null) {
+                image = new PlayerImage(imageUrl, false);
+            }
+        }
+        return image;
+    }
+
+    @Override
+    public String photoSource() {
+        return photoSource;
+    }
+
+    @Override
+    public int firstSeasonAsPro() {
+        return firstSeasonAsPro;
+    }
+
+    @Override
+    public int lastSeasonAsPro() {
+        return lastSeasonAsPro;
+    }
+
+    @Override
     public String info() {
         return info;
     }
index 7dbb3b1..78995ff 100644 (file)
@@ -19,6 +19,7 @@ package org.hedgecode.snooker.json;
 import com.google.gson.annotations.Expose;
 import com.google.gson.annotations.SerializedName;
 
+import org.hedgecode.snooker.annotation.WithHTMLTags;
 import org.hedgecode.snooker.api.Event;
 import org.hedgecode.snooker.api.Round;
 
@@ -47,6 +48,7 @@ public class JsonRound extends JsonIdEntity implements Round {
     private int numLeft;
     @SerializedName("NumMatches")
     private int numMatches;
+    @WithHTMLTags
     @SerializedName("Note")
     private String note;
     @SerializedName("ValueType")
diff --git a/src/main/java/org/hedgecode/snooker/json/JsonURLEntity.java b/src/main/java/org/hedgecode/snooker/json/JsonURLEntity.java
new file mode 100644 (file)
index 0000000..b625f52
--- /dev/null
@@ -0,0 +1,168 @@
+/*
+ * Copyright (c) 2017. Developed by Hedgecode.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hedgecode.snooker.json;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.hedgecode.snooker.SnookerURLUtils;
+import org.hedgecode.snooker.annotation.IsURL;
+import org.hedgecode.snooker.annotation.WithHTMLTags;
+import org.hedgecode.snooker.api.APIException;
+import org.hedgecode.snooker.api.SnookerURL;
+import org.hedgecode.snooker.api.URLEntity;
+
+/**
+ * Abstract URL Entity.
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public abstract class JsonURLEntity implements URLEntity {
+
+    @Override
+    public List<SnookerURL> getLinks() throws APIException {
+        List<SnookerURL> links = null;
+        Map<String, String> htmlStrings = getAnnotatedStrings(WithHTMLTags.class);
+        if (!htmlStrings.isEmpty()) {
+            links = SnookerURLUtils.parseUrls(htmlStrings);
+        }
+        return links;
+    }
+
+    @Override
+    public List<SnookerURL> getURLs() throws APIException {
+        List<SnookerURL> urls = null;
+        Map<String, String> urlStrings = getAnnotatedStrings(IsURL.class);
+        urlStrings.putAll(getAnnotatedMethodStrings(IsURL.class));
+        if (!urlStrings.isEmpty()) {
+            urls = SnookerURLUtils.assignUrls(urlStrings);
+        }
+        return urls;
+    }
+
+    @Override
+    public SnookerURL getURL(String name) throws APIException {
+        String urlString = getAnnotatedString(IsURL.class, name);
+        if (urlString == null) {
+            urlString = getAnnotatedMethodString(IsURL.class, name);
+        }
+        if (urlString != null && !urlString.isEmpty()) {
+            return SnookerURLUtils.assignUrl(name, urlString);
+        }
+        return null;
+    }
+
+    @Override
+    public String withoutTags(String name) throws APIException {
+        String tagString = getAnnotatedString(WithHTMLTags.class, name);
+        if (tagString != null && !tagString.isEmpty()) {
+            return SnookerURLUtils.cutTags(tagString);
+        }
+        return null;
+    }
+
+    private Map<String, String> getAnnotatedStrings(
+            Class<? extends Annotation> annotationClass
+    ) {
+        Map<String, String> result = new HashMap<>();
+        Class<?> clazz = getClass();
+        for (Field field : clazz.getDeclaredFields()) {
+            if (field.isAnnotationPresent(annotationClass)
+                    && field.getType().equals(String.class))
+            {
+                field.setAccessible(true);
+                try {
+                    result.put(
+                            field.getName(),
+                            (String) field.get(this)
+                    );
+                } catch (Exception ignored) {
+                }
+            }
+        }
+        return result;
+    }
+
+    private String getAnnotatedString(
+            Class<? extends Annotation> annotationClass,
+            String fieldName
+    ) {
+        String result = null;
+        Class<?> clazz = getClass();
+        for (Field field : clazz.getDeclaredFields()) {
+            if (field.isAnnotationPresent(annotationClass)
+                    && field.getName().equals(fieldName)
+                    && field.getType().equals(String.class))
+            {
+                field.setAccessible(true);
+                try {
+                    result = (String) field.get(this);
+                } catch (Exception ignored) {
+                }
+            }
+        }
+        return result;
+    }
+
+    private Map<String, String> getAnnotatedMethodStrings(
+            Class<? extends Annotation> annotationClass
+    ) {
+        Map<String, String> result = new HashMap<>();
+        Class<?> clazz = getClass();
+        for (Method method : clazz.getMethods()) {
+            if (method.isAnnotationPresent(annotationClass)
+                    && method.getReturnType().equals(String.class)
+                    && method.getParameterCount() == 0)
+            {
+                try {
+                    result.put(
+                            method.getName(),
+                            (String) method.invoke(this)
+                    );
+                } catch (Exception ignored) {
+                }
+            }
+        }
+        return result;
+    }
+
+    private String getAnnotatedMethodString(
+            Class<? extends Annotation> annotationClass,
+            String methodName
+    ) {
+        String result = null;
+        Class<?> clazz = getClass();
+        for (Method method : clazz.getMethods()) {
+            if (method.isAnnotationPresent(annotationClass)
+                    && method.getName().equals(methodName)
+                    && method.getReturnType().equals(String.class)
+                    && method.getParameterCount() == 0)
+            {
+                try {
+                    result = (String) method.invoke(this);
+                } catch (Exception ignored) {
+                }
+            }
+        }
+        return result;
+    }
+
+}
index 356fb15..51976bd 100644 (file)
Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonEventTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonEventTest.ser differ
index 3d5f9b4..46c3604 100644 (file)
Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonEventsTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonEventsTest.ser differ
index 23c7493..b27434c 100644 (file)
Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonMatchTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonMatchTest.ser differ
index aa94b37..02d6906 100644 (file)
Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonMatchesTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonMatchesTest.ser differ
index 65acd8d..71ee53e 100644 (file)
Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonOngoingMatchTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonOngoingMatchTest.ser differ
index a94696a..6094761 100644 (file)
Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonOngoingMatchesTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonOngoingMatchesTest.ser differ
index fe2481a..b11ae61 100644 (file)
@@ -1 +1 @@
-[{"ID": 1,"Type": 1,"FirstName": "Mark","MiddleName": "J","LastName": "Williams","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "M J Williams","Nationality": "Wales","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fmwilliams.shtml","Born": "1975-03-21","Twitter": "markwil147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMarkWilliams.png","Info": ""}]
\ No newline at end of file
+[{"ID": 1,"Type": 1,"FirstName": "Mark","MiddleName": "J","LastName": "Williams","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "M J Williams","Nationality": "Wales","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fmwilliams.shtml","Born": "1975-03-21","Twitter": "markwil147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMarkWilliams.png","PhotoSource": "","FirstSeasonAsPro": 1992,"LastSeasonAsPro": 0,"Info": ""}]
\ No newline at end of file
index e95ccd5..55712f3 100644 (file)
Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonPlayerTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonPlayerTest.ser differ
index fc6fb5c..95e1abc 100644 (file)
@@ -1 +1 @@
-[{"ID": 1,"Type": 1,"FirstName": "Mark","MiddleName": "J","LastName": "Williams","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "M J Williams","Nationality": "Wales","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fmwilliams.shtml","Born": "1975-03-21","Twitter": "markwil147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMarkWilliams.png","Info": ""},{"ID": 2,"Type": 1,"FirstName": "Stephen","MiddleName": "","LastName": "Maguire","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1981-03-13","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "stephenmaguire147.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMaguire.png","Info": ""},{"ID": 3,"Type": 1,"FirstName": "Jamie","MiddleName": "","LastName": "Cope","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1985-09-12","Twitter": "JamieCope147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FJamieCope.png","Info": ""},{"ID": 4,"Type": 1,"FirstName": "Marco","MiddleName": "","LastName": "Fu","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Hong Kong","Sex": "M","BioPage": "","Born": "1978-01-08","Twitter": "Marcofu18","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fmfu.jpg","Info": ""},{"ID": 5,"Type": 1,"FirstName": "Ronnie","MiddleName": "","LastName": "O'Sullivan","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "R O'Sullivan","Nationality": "England","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Frosullivan.shtml","Born": "1975-12-05","Twitter": "ronnieo147","SurnameFirst": false,"License": "","Club": "","URL": "ronnieosullivan.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Frosullivan.jpg","Info": ""},{"ID": 8,"Type": 1,"FirstName": "Tom","MiddleName": "","LastName": "Ford","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1983-08-17","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FTomFord.png","Info": ""},{"ID": 9,"Type": 1,"FirstName": "Matthew","MiddleName": "","LastName": "Stevens","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "M Stevens","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1977-09-11","Twitter": "MattStevens147","SurnameFirst": false,"License": "","Club": "","URL": "matthew-stevens.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FStevens.png","Info": ""},{"ID": 10,"Type": 1,"FirstName": "Jamie","MiddleName": "","LastName": "Jones","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Jamie Jones","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1988-02-14","Twitter": "TheJonesKid147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FJamie Jones.png","Info": ""},{"ID": 12,"Type": 1,"FirstName": "Judd","MiddleName": "","LastName": "Trump","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1989-08-20","Twitter": "judd147t","SurnameFirst": false,"License": "","Club": "","URL": "facebook.com\u002Fjuddtrump147","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fjtrump.jpg","Info": ""},{"ID": 14,"Type": 1,"FirstName": "Nigel","MiddleName": "","LastName": "Bond","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "N Bond","Nationality": "England","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fnbond.shtml","Born": "1965-11-15","Twitter": "NigelBond00","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FBond.png","Info": ""},{"ID": 15,"Type": 1,"FirstName": "Mark","MiddleName": "","LastName": "Davis","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Mark Davis","Nationality": "England","Sex": "M","BioPage": "","Born": "1972-08-12","Twitter": "markdavis2108","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMarkDavis.png","Info": ""},{"ID": 16,"Type": 1,"FirstName": "Barry","MiddleName": "","LastName": "Hawkins","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1979-04-23","Twitter": "TheHawk147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fbhawkins.jpg","Info": ""},{"ID": 17,"Type": 1,"FirstName": "Mark","MiddleName": "","LastName": "Selby","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1983-06-19","Twitter": "markjesterselby","SurnameFirst": false,"License": "","Club": "","URL": "markselby.info","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fmselby.jpg","Info": ""},{"ID": 18,"Type": 1,"FirstName": "Igor","MiddleName": "","LastName": "Figueiredo","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Brazil","Sex": "M","BioPage": "","Born": "1977-10-11","Twitter": "igorsnooker","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FIgor.png","Info": ""},{"ID": 19,"Type": 1,"FirstName": "Ben","MiddleName": "","LastName": "Woollaston","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1987-05-14","Twitter": "ben_Woollaston","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FWoollaston.png","Info": ""},{"ID": 20,"Type": 1,"FirstName": "Jimmy","MiddleName": "","LastName": "White","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "J White","Nationality": "England","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fjwhite.shtml","Born": "1962-05-02","Twitter": "jimmywhite147","SurnameFirst": false,"License": "","Club": "","URL": "jimmywhirlwindwhite.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FJimmy White.png","Info": ""},{"ID": 21,"Type": 1,"FirstName": "Alfie","MiddleName": "","LastName": "Burden","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1976-12-14","Twitter": "ABOFLONDON","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FBurden.png","Info": ""},{"ID": 22,"Type": 1,"FirstName": "Anthony","MiddleName": "","LastName": "McGill","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1991-02-05","Twitter": "antsmcgill","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMcGill.png","Info": ""},{"ID": 23,"Type": 1,"FirstName": "Paul","MiddleName": "S","LastName": "Davison","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "P S Davison","Nationality": "England","Sex": "M","BioPage": "","Born": "1971-10-01","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 24,"Type": 1,"FirstName": "Guodong","MiddleName": "","LastName": "Xiao","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Xiao Guodong","Nationality": "China","Sex": "M","BioPage": "","Born": "1989-02-10","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FXiao.png","Info": ""},{"ID": 25,"Type": 1,"FirstName": "Andrew","MiddleName": "","LastName": "Higginson","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1977-12-13","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FHigginson.png","Info": ""},{"ID": 26,"Type": 1,"FirstName": "Allan","MiddleName": "","LastName": "Taylor","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "A Taylor","Nationality": "England","Sex": "M","BioPage": "","Born": "1984-11-28","Twitter": "AllanTaylor147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FAllan Taylor.png","Info": ""},{"ID": 27,"Type": 1,"FirstName": "Martin","MiddleName": "","LastName": "Gould","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1981-09-14","Twitter": "GouldyBalls147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FGould.png","Info": ""},{"ID": 28,"Type": 1,"FirstName": "Mark","MiddleName": "","LastName": "King","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "M King","Nationality": "England","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fmking.shtml","Born": "1974-03-28","Twitter": "markking147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FKing.png","Info": ""},{"ID": 30,"Type": 1,"FirstName": "Stuart","MiddleName": "","LastName": "Bingham","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1976-05-21","Twitter": "Stuart__Bingham  ","SurnameFirst": false,"License": "","Club": "","URL": "stuartbingham.uk.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FBingham.png","Info": ""},{"ID": 32,"Type": 1,"FirstName": "Daniel","MiddleName": "","LastName": "Wells","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1988-07-31","Twitter": "danielwells147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FWells.png","Info": ""},{"ID": 33,"Type": 1,"FirstName": "Dominic","MiddleName": "","LastName": "Dale","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1971-12-29","Twitter": "spaceman147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fdale.png","Info": ""},{"ID": 35,"Type": 1,"FirstName": "Joe","MiddleName": "","LastName": "Swail","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Northern Ireland","Sex": "M","BioPage": "","Born": "1969-08-29","Twitter": "joeswail","SurnameFirst": false,"License": "","Club": "","URL": "joeswail.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FSwail.png","Info": ""},{"ID": 39,"Type": 1,"FirstName": "Kyren","MiddleName": "","LastName": "Wilson","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "K Wilson","Nationality": "England","Sex": "M","BioPage": "","Born": "1991-12-23","Twitter": "KyrenWilson","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FKyren Wilson.png","Info": ""},{"ID": 42,"Type": 1,"FirstName": "Peter","MiddleName": "","LastName": "Ebdon","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fpebdon.shtml","Born": "1970-08-27","Twitter": "pdebdon","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FEbdon.png","Info": ""},{"ID": 44,"Type": 1,"FirstName": "Alan","MiddleName": "","LastName": "McManus","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Famcmanus.shtml","Born": "1971-01-21","Twitter": "alan_mcmanus","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMcManus.png","Info": ""},{"ID": 45,"Type": 1,"FirstName": "Liam","MiddleName": "","LastName": "Highfield","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1990-01-01","Twitter": "liamhighfield","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 47,"Type": 1,"FirstName": "Matthew","MiddleName": "","LastName": "Selt","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1985-03-07","Twitter": "MattSelt","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FSelt.png","Info": ""},{"ID": 48,"Type": 1,"FirstName": "Mark","MiddleName": "","LastName": "Joyce","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1983-08-11","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FJoyce.png","Info": ""},{"ID": 49,"Type": 1,"FirstName": "Mitchell","MiddleName": "","LastName": "Mann","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1991-12-26","Twitter": "MitchellSnooker","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMann.png","Info": ""},{"ID": 50,"Type": 1,"FirstName": "Rory","MiddleName": "","LastName": "McLeod","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1971-03-26","Twitter": "Rory_McLeod147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMcLeod.png","Info": ""},{"ID": 52,"Type": 1,"FirstName": "Graeme","MiddleName": "","LastName": "Dott","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1977-05-12","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "graemedottcoaching.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FDott.png","Info": ""},{"ID": 53,"Type": 1,"FirstName": "Jamie","MiddleName": "","LastName": "Burnett","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1975-09-16","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 54,"Type": 1,"FirstName": "Mike","MiddleName": "","LastName": "Dunn","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1971-11-20","Twitter": "mikedunn147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FDunn.png","Info": ""},{"ID": 61,"Type": 1,"FirstName": "Kurt","MiddleName": "","LastName": "Maflin","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "K Maflin","Nationality": "Norway","Sex": "M","BioPage": "","Born": "1983-08-08","Twitter": "KurtMaflin147","SurnameFirst": false,"License": "","Club": "","URL": "kurtmaflin.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMaflin.png","Info": ""},{"ID": 62,"Type": 1,"FirstName": "Ricky","MiddleName": "","LastName": "Walden","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1982-11-11","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "rickywalden.co.uk","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FWalden.png","Info": ""},{"ID": 63,"Type": 1,"FirstName": "Fergal","MiddleName": "","LastName": "O'Brien","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "F O'Brien","Nationality": "Ireland","Sex": "M","BioPage": "","Born": "1972-03-08","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "fergalobrien.ie","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FOBrien.png","Info": ""},{"ID": 67,"Type": 1,"FirstName": "David","MiddleName": "","LastName": "Grace","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1985-05-05","Twitter": "daveg147","SurnameFirst": false,"License": "","Club": "","URL": "davidgracesnooker.co.uk","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FGrace.png","Info": ""},{"ID": 68,"Type": 1,"FirstName": "Ryan","MiddleName": "","LastName": "Day","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "R Day","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1980-03-23","Twitter": "ryan23day","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FRyan Day.png","Info": ""},{"ID": 74,"Type": 1,"FirstName": "Adam","MiddleName": "","LastName": "Duffy","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "A Duffy","Nationality": "England","Sex": "M","BioPage": "","Born": "1989-03-30","Twitter": "A147D","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 76,"Type": 1,"FirstName": "Sam","MiddleName": "","LastName": "Baird","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1988-06-17","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "www.sambaird147.co.uk","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FBaird.png","Info": ""},{"ID": 81,"Type": 1,"FirstName": "Anda","MiddleName": "","LastName": "Zhang","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Zhang Anda","Nationality": "China","Sex": "M","BioPage": "","Born": "1991-12-25","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FAnda.png","Info": ""},{"ID": 85,"Type": 1,"FirstName": "Jack","MiddleName": "","LastName": "Lisowski","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1991-06-25","Twitter": "JackLisowski","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FLisowski.png","Info": ""},{"ID": 87,"Type": 1,"FirstName": "Ian","MiddleName": "","LastName": "Burns","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1985-03-11","Twitter": "BurnsyIB","SurnameFirst": false,"License": "","Club": "","URL": "http:\u002F\u002Fwww.ianburnssnooker.com\u002F","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FBurns.png","Info": ""},{"ID": 90,"Type": 1,"FirstName": "Jak","MiddleName": "","LastName": "Jones","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Jak Jones","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1993-06-29","Twitter": "JakJones_","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 92,"Type": 1,"FirstName": "Robert","MiddleName": "","LastName": "Milkins","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1976-03-06","Twitter": "RobertMilkins","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMilkins.png","Info": ""},{"ID": 93,"Type": 1,"FirstName": "Jimmy","MiddleName": "","LastName": "Robertson","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "J Robertson","Nationality": "England","Sex": "M","BioPage": "","Born": "1986-05-03","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FJimmy Robertson.png","Info": ""},{"ID": 96,"Type": 1,"FirstName": "Robbie","MiddleName": "","LastName": "Williams","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "R Williams","Nationality": "England","Sex": "M","BioPage": "","Born": "1986-12-28","Twitter": "RLW147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FRobbie Williams.png","Info": ""},{"ID": 97,"Type": 1,"FirstName": "Shaun","MiddleName": "","LastName": "Murphy","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "S Murphy","Nationality": "England","Sex": "M","BioPage": "","Born": "1982-08-10","Twitter": "Magician147","SurnameFirst": false,"License": "","Club": "","URL": "shaunmurphy.net","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMurphy.png","Info": ""},{"ID": 101,"Type": 1,"FirstName": "Luca","MiddleName": "","LastName": "Brecel","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Belgium","Sex": "M","BioPage": "","Born": "1995-03-08","Twitter": "LucaLoy_Brecel","SurnameFirst": false,"License": "","Club": "","URL": "brecelluca.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FBrecel.png","Info": ""},{"ID": 108,"Type": 1,"FirstName": "Aditya","MiddleName": "","LastName": "Mehta","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "India","Sex": "M","BioPage": "","Born": "1985-10-31","Twitter": "snookered_adi","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMehta.png","Info": ""},{"ID": 109,"Type": 1,"FirstName": "Sam","MiddleName": "","LastName": "Craigie","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Sam Craigie","Nationality": "England","Sex": "M","BioPage": "","Born": "1993-12-29","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 115,"Type": 1,"FirstName": "Anthony","MiddleName": "","LastName": "Hamilton","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fahamilton.shtml","Born": "1971-06-29","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FHamilton.PNG","Info": ""},{"ID": 118,"Type": 1,"FirstName": "David","MiddleName": "B","LastName": "Gilbert","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "D B Gilbert","Nationality": "England","Sex": "M","BioPage": "","Born": "1981-06-12","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FGilbert.png","Info": ""},{"ID": 120,"Type": 1,"FirstName": "Martin","MiddleName": "","LastName": "O'Donnell","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1986-06-04","Twitter": "TheMOD147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMartin O.PNG","Info": ""},{"ID": 124,"Type": 1,"FirstName": "Michael","MiddleName": "","LastName": "Wild","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1981-03-27","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 125,"Type": 1,"FirstName": "Michael","MiddleName": "","LastName": "Holt","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1978-08-07","Twitter": "HitmanHolt","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FHolt.png","Info": ""},{"ID": 128,"Type": 1,"FirstName": "Stuart","MiddleName": "","LastName": "Carrington","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1990-05-14","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FCarrington.png","Info": ""},{"ID": 131,"Type": 1,"FirstName": "Craig","MiddleName": "","LastName": "Steadman","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1984-07-14","Twitter": "stedz1","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FSteadman.png","Info": ""},{"ID": 133,"Type": 1,"FirstName": "Zhe","MiddleName": "","LastName": "Chen","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Chen Zhe","Nationality": "China","Sex": "M","BioPage": "","Born": "1993-02-28","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 151,"Type": 1,"FirstName": "James","MiddleName": "","LastName": "Cahill","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1995-12-27","Twitter": "JamesCahill147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 154,"Type": 1,"FirstName": "Neil","MiddleName": "","LastName": "Robertson","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "N Robertson","Nationality": "Australia","Sex": "M","BioPage": "","Born": "1982-02-11","Twitter": "nr147","SurnameFirst": false,"License": "","Club": "","URL": "neilrobertson.net","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FNRobertson.png","Info": ""},{"ID": 158,"Type": 1,"FirstName": "Allister","MiddleName": "","LastName": "Carter","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1979-07-25","Twitter": "TheCaptain147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fcarter.png","Info": ""},{"ID": 165,"Type": 1,"FirstName": "Jamie","MiddleName": "","LastName": "Barrett","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1984-04-19","Twitter": "Jazz6039","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 168,"Type": 1,"FirstName": "Joe","MiddleName": "","LastName": "Perry","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1974-08-13","Twitter": "joegentlemanjoe","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FPerry.png","Info": ""},{"ID": 170,"Type": 1,"FirstName": "Ken","MiddleName": "","LastName": "Doherty","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "K Doherty","Nationality": "Ireland","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fkdoherty.shtml","Born": "1969-09-17","Twitter": "kendoherty1997","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FDoherty.png","Info": ""},{"ID": 171,"Type": 1,"FirstName": "Michael","MiddleName": "","LastName": "White","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Michael White","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1991-07-05","Twitter": "michaelwhite147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMWhite.png","Info": ""},{"ID": 177,"Type": 1,"FirstName": "Rod","MiddleName": "","LastName": "Lawler","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1971-07-12","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FLawler.png","Info": ""},{"ID": 184,"Type": 1,"FirstName": "Delu","MiddleName": "","LastName": "Yu","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Yu Delu","Nationality": "China","Sex": "M","BioPage": "","Born": "1987-10-11","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FDelu.png","Info": ""},{"ID": 193,"Type": 1,"FirstName": "James","MiddleName": "","LastName": "Wattana","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Thailand","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fjwattana.shtml","Born": "1970-01-17","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": "Also known as Ratchapol Pu-ob-orm."},{"ID": 200,"Type": 1,"FirstName": "Wenbo","MiddleName": "","LastName": "Liang","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Liang Wenbo","Nationality": "China","Sex": "M","BioPage": "","Born": "1987-03-05","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FWenbo.png","Info": ""},{"ID": 202,"Type": 1,"FirstName": "Mark","MiddleName": "","LastName": "Allen","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "M Allen","Nationality": "Northern Ireland","Sex": "M","BioPage": "","Born": "1986-02-22","Twitter": "pistol147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMarkAllen.png","Info": ""},{"ID": 208,"Type": 1,"FirstName": "Noppon","MiddleName": "","LastName": "Saengkham","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Thailand","Sex": "M","BioPage": "","Born": "1992-07-15","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 217,"Type": 1,"FirstName": "Thepchaiya","MiddleName": "","LastName": "Un-Nooh","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Thailand","Sex": "M","BioPage": "","Born": "1985-07-18","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FUn-Nooh.png","Info": ""},{"ID": 218,"Type": 1,"FirstName": "Pengfei","MiddleName": "","LastName": "Tian","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Tian Pengfei","Nationality": "China","Sex": "M","BioPage": "","Born": "1987-08-16","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FPengfei.png","Info": ""},{"ID": 224,"Type": 1,"FirstName": "Junhui","MiddleName": "","LastName": "Ding","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Ding Junhui","Nationality": "China","Sex": "M","BioPage": "","Born": "1987-04-01","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FDingjunhui.jpg","Info": ""},{"ID": 237,"Type": 1,"FirstName": "John","MiddleName": "","LastName": "Higgins","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "J Higgins","Nationality": "Scotland","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fjhiggins.shtml","Born": "1975-05-18","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fjhiggins.jpg","Info": ""},{"ID": 269,"Type": 1,"FirstName": "Gareth","MiddleName": "","LastName": "Allen","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "G Allen","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1988-09-09","Twitter": "gaz_147","SurnameFirst": false,"License": "","Club": "","URL": "http:\u002F\u002Fwww.garethallen.weebly.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FGAllen.png","Info": ""},{"ID": 295,"Type": 1,"FirstName": "Hang","MiddleName": "","LastName": "Li","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Li Hang","Nationality": "China","Sex": "M","BioPage": "","Born": "1990-10-04","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FHang.png","Info": ""},{"ID": 306,"Type": 1,"FirstName": "Xiwen","MiddleName": "","LastName": "Mei","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Mei Xiwen","Nationality": "China","Sex": "M","BioPage": "","Born": "1982-10-08","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 339,"Type": 1,"FirstName": "Rouzi","MiddleName": "","LastName": "Maimaiti","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "China","Sex": "M","BioPage": "","Born": "1983-07-04","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 416,"Type": 1,"FirstName": "Christopher","MiddleName": "","LastName": "Keogan","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1992-08-01","Twitter": "ChrisKeogan123","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 422,"Type": 1,"FirstName": "Leo","MiddleName": "","LastName": "Fernandez","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Ireland","Sex": "M","BioPage": "","Born": "1976-07-05","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 448,"Type": 1,"FirstName": "Duane","MiddleName": "","LastName": "Jones","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "D Jones","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1993-04-30","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 475,"Type": 1,"FirstName": "Ian","MiddleName": "","LastName": "Preece","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1982-06-23","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 497,"Type": 1,"FirstName": "Michael","MiddleName": "","LastName": "Georgiou","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Cyprus","Sex": "M","BioPage": "","Born": "1988-01-18","Twitter": "mikegeorgiou147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMichaelG.png","Info": "Represented England prior to the 2016 Q School"},{"ID": 507,"Type": 1,"FirstName": "Yupeng","MiddleName": "","LastName": "Cao","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Cao Yupeng","Nationality": "China","Sex": "M","BioPage": "","Born": "1990-10-27","Twitter": "ECaoyupeng","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FYupeng.png","Info": ""},{"ID": 515,"Type": 1,"FirstName": "Alex","MiddleName": "","LastName": "Borg","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Malta","Sex": "M","BioPage": "","Born": "1969-06-05","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FBorg.png","Info": ""},{"ID": 520,"Type": 1,"FirstName": "Lee","MiddleName": "","LastName": "Walker","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "L Walker","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1976-02-11","Twitter": "leewalker147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FLee Walker.png","Info": ""},{"ID": 523,"Type": 1,"FirstName": "Sydney","MiddleName": "","LastName": "Wilson","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "S Wilson","Nationality": "England","Sex": "M","BioPage": "","Born": "1990-04-06","Twitter": "squidski","SurnameFirst": false,"License": "","Club": "","URL": "sydneywilsonjr.com","Photo": "","Info": ""},{"ID": 526,"Type": 1,"FirstName": "John","MiddleName": "","LastName": "Astley","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "John Astley","Nationality": "England","Sex": "M","BioPage": "","Born": "1989-01-13","Twitter": "JohnAstley147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 534,"Type": 1,"FirstName": "Fraser","MiddleName": "","LastName": "Patrick","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1985-11-08","Twitter": "fraserp147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FPatrick.png","Info": ""},{"ID": 546,"Type": 1,"FirstName": "Gary","MiddleName": "","LastName": "Wilson","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "G Wilson","Nationality": "England","Sex": "M","BioPage": "","Born": "1985-08-11","Twitter": "Gary_Wilson11","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FGary Wilson.png","Info": ""},{"ID": 549,"Type": 1,"FirstName": "Robin","MiddleName": "","LastName": "Hull","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Finland","Sex": "M","BioPage": "","Born": "1974-08-16","Twitter": "robhull_","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fhull.png","Info": ""},{"ID": 552,"Type": 1,"FirstName": "Sean","MiddleName": "","LastName": "O'Sullivan","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Sean O'Sullivan","Nationality": "England","Sex": "M","BioPage": "","Born": "1994-04-29","Twitter": "SeanTheStorm147","SurnameFirst": false,"License": "","Club": "","URL": "sean-osullivan.net","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FSean OSullivan.png","Info": ""},{"ID": 582,"Type": 1,"FirstName": "Dechawat","MiddleName": "","LastName": "Poomjaeng","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "D Poomjaeng","Nationality": "Thailand","Sex": "M","BioPage": "","Born": "1978-07-11","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FDechawat.png","Info": ""},{"ID": 583,"Type": 1,"FirstName": "Itaro","MiddleName": "","LastName": "Santos","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Brazil","Sex": "M","BioPage": "","Born": "1985-07-28","Twitter": "ItaroSantos","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 592,"Type": 1,"FirstName": "Oliver","MiddleName": "","LastName": "Lines","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "O Lines","Nationality": "England","Sex": "M","BioPage": "","Born": "1995-06-16","Twitter": "oliverlines147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FOLines.png","Info": ""},{"ID": 593,"Type": 1,"FirstName": "Hammad","MiddleName": "","LastName": "Miah","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Hammad Miah","Nationality": "England","Sex": "M","BioPage": "","Born": "1993-07-06","Twitter": "HammadMiah147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 608,"Type": 1,"FirstName": "Elliot","MiddleName": "","LastName": "Slessor","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1994-08-04","Twitter": "sless147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 620,"Type": 1,"FirstName": "Eden","MiddleName": "","LastName": "Sharav","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1990-04-30","Twitter": "147Eden","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 621,"Type": 1,"FirstName": "Sanderson","MiddleName": "","LastName": "Lam","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "S Lam","Nationality": "England","Sex": "M","BioPage": "","Born": "1994-01-28","Twitter": "sandi147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 666,"Type": 1,"FirstName": "Hossein","MiddleName": "","LastName": "Vafaei Ayouri","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Iran","Sex": "M","BioPage": "","Born": "1994-09-14","Twitter": "hosseinvafae","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FHossein.png","Info": ""},{"ID": 762,"Type": 1,"FirstName": "Josh","MiddleName": "","LastName": "Boileau","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Ireland","Sex": "M","BioPage": "","Born": "1995-07-02","Twitter": "Boileau147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fjosh Boileau.png","Info": ""},{"ID": 892,"Type": 1,"FirstName": "Darryl","MiddleName": "","LastName": "Hill","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Isle of Man","Sex": "M","BioPage": "","Born": "1996-04-30","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 894,"Type": 1,"FirstName": "Scott","MiddleName": "","LastName": "Donaldson","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1994-03-19","Twitter": "ThePPM","SurnameFirst": false,"License": "","Club": "","URL": "scottdonaldson.pro","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FDonaldson.png","Info": ""},{"ID": 898,"Type": 1,"FirstName": "Ross","MiddleName": "","LastName": "Muir","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1995-10-06","Twitter": "rossmuir147","SurnameFirst": false,"License": "","Club": "","URL": "https:\u002F\u002Fwww.facebook.com\u002FRossMuirSnooker\u002F","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMuir.png","Info": ""},{"ID": 906,"Type": 1,"FirstName": "Yuelong","MiddleName": "","LastName": "Zhou","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Zhou Yuelong","Nationality": "China","Sex": "M","BioPage": "","Born": "1998-01-24","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FYuelong.png","Info": ""},{"ID": 917,"Type": 1,"FirstName": "Rhys","MiddleName": "","LastName": "Clark","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Rhys Clark","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1994-08-17","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FClark.png","Info": ""},{"ID": 946,"Type": 1,"FirstName": "Xintong","MiddleName": "","LastName": "Zhao","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Zhao Xintong","Nationality": "China","Sex": "M","BioPage": "","Born": "1997-04-03","Twitter": "wwwXintongzhao","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 947,"Type": 1,"FirstName": "Yong","MiddleName": "","LastName": "Zhang","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Zhang Yong","Nationality": "China","Sex": "M","BioPage": "","Born": "1995-07-21","Twitter": "XGKysHncGoEu1WG","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 954,"Type": 1,"FirstName": "Yuchen","MiddleName": "","LastName": "Wang","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Wang Yuchen","Nationality": "China","Sex": "M","BioPage": "","Born": "1997-08-05","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 1044,"Type": 1,"FirstName": "Chris","MiddleName": "","LastName": "Wakelin","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1992-03-16","Twitter": "chris147ace","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FWakelin.png","Info": ""},{"ID": 1114,"Type": 1,"FirstName": "Xiongman","MiddleName": "","LastName": "Fang","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Fang Xiongman","Nationality": "China","Sex": "M","BioPage": "","Born": "1993-04-09","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 1260,"Type": 1,"FirstName": "Bingtao","MiddleName": "","LastName": "Yan","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Yan Bingtao","Nationality": "China","Sex": "M","BioPage": "","Born": "2000-02-16","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 1505,"Type": 1,"FirstName": "Jason","MiddleName": "","LastName": "Weston","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1971-01-12","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 1509,"Type": 1,"FirstName": "Thor","MiddleName": "","LastName": "Chuan Leong","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Malaysia","Sex": "M","BioPage": "","Born": "1988-03-24","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FLeong.png","Info": ""},{"ID": 1577,"Type": 1,"FirstName": "Kritsanut","MiddleName": "","LastName": "Lertsattayatthorn","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Thailand","Sex": "M","BioPage": "","Born": "1988-12-16","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 1578,"Type": 1,"FirstName": "Boonyarit","MiddleName": "","LastName": "Kaettikun","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Thailand","Sex": "M","BioPage": "","Born": "1995-10-05","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 1737,"Type": 1,"FirstName": "David","MiddleName": "","LastName": "John","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "D John","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1984-11-24","Twitter": "daijohn147147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 1762,"Type": 1,"FirstName": "Hamza","MiddleName": "","LastName": "Akbar","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Pakistan","Sex": "M","BioPage": "","Born": "1993-11-12","Twitter": "Hamza_Akbar1","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 1763,"Type": 1,"FirstName": "Akani","MiddleName": "","LastName": "Songsermsawad","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Thailand","Sex": "M","BioPage": "","Born": "1995-09-10","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 1764,"Type": 1,"FirstName": "Hatem","MiddleName": "","LastName": "Yassin","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Egypt","Sex": "M","BioPage": "","Born": "1986-08-21","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""},{"ID": 2064,"Type": 1,"FirstName": "Kurt","MiddleName": "","LastName": "Dunham","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Australia","Sex": "M","BioPage": "","Born": "1991-12-06","Twitter": "KurtDunham","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","Info": ""}]
\ No newline at end of file
+[{"ID": 1,"Type": 1,"FirstName": "Mark","MiddleName": "J","LastName": "Williams","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "M J Williams","Nationality": "Wales","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fmwilliams.shtml","Born": "1975-03-21","Twitter": "markwil147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMarkWilliams.png","PhotoSource": "","FirstSeasonAsPro": 1992,"LastSeasonAsPro": 0,"Info": ""},{"ID": 2,"Type": 1,"FirstName": "Stephen","MiddleName": "","LastName": "Maguire","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1981-03-13","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "stephenmaguire147.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMaguire.png","PhotoSource": "","FirstSeasonAsPro": 1998,"LastSeasonAsPro": 0,"Info": ""},{"ID": 3,"Type": 1,"FirstName": "Jamie","MiddleName": "","LastName": "Cope","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1985-09-12","Twitter": "JamieCope147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FJamieCope.png","PhotoSource": "","FirstSeasonAsPro": 2002,"LastSeasonAsPro": 2016,"Info": ""},{"ID": 4,"Type": 1,"FirstName": "Marco","MiddleName": "","LastName": "Fu","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Hong Kong","Sex": "M","BioPage": "","Born": "1978-01-08","Twitter": "Marcofu18","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fmfu.jpg","PhotoSource": "","FirstSeasonAsPro": 1998,"LastSeasonAsPro": 0,"Info": ""},{"ID": 6,"Type": 1,"FirstName": "Barry","MiddleName": "","LastName": "Pinches","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "B Pinches","Nationality": "England","Sex": "M","BioPage": "","Born": "1970-07-13","Twitter": "barrypinches","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FBarry P.png","PhotoSource": "","FirstSeasonAsPro": 1989,"LastSeasonAsPro": 2015,"Info": ""},{"ID": 8,"Type": 1,"FirstName": "Tom","MiddleName": "","LastName": "Ford","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1983-08-17","Twitter": "tomford147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FTomFord.png","PhotoSource": "","FirstSeasonAsPro": 2001,"LastSeasonAsPro": 0,"Info": ""},{"ID": 9,"Type": 1,"FirstName": "Matthew","MiddleName": "","LastName": "Stevens","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "M Stevens","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1977-09-11","Twitter": "MattStevens147","SurnameFirst": false,"License": "","Club": "","URL": "matthew-stevens.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FStevens.png","PhotoSource": "","FirstSeasonAsPro": 1994,"LastSeasonAsPro": 0,"Info": ""},{"ID": 10,"Type": 1,"FirstName": "Jamie","MiddleName": "","LastName": "Jones","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Jamie Jones","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1988-02-14","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "facebook.com\u002Fthejoneskid147","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FJamie Jones.png","PhotoSource": "","FirstSeasonAsPro": 2006,"LastSeasonAsPro": 2018,"Info": ""},{"ID": 12,"Type": 1,"FirstName": "Judd","MiddleName": "","LastName": "Trump","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Judd Trump","Nationality": "England","Sex": "M","BioPage": "","Born": "1989-08-20","Twitter": "judd147t","SurnameFirst": false,"License": "","Club": "","URL": "facebook.com\u002Fjuddtrump147","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fjtrump.jpg","PhotoSource": "","FirstSeasonAsPro": 2005,"LastSeasonAsPro": 0,"Info": ""},{"ID": 14,"Type": 1,"FirstName": "Nigel","MiddleName": "","LastName": "Bond","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "N Bond","Nationality": "England","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fnbond.shtml","Born": "1965-11-15","Twitter": "NigelBond00","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FBond.png","PhotoSource": "","FirstSeasonAsPro": 1989,"LastSeasonAsPro": 0,"Info": ""},{"ID": 15,"Type": 1,"FirstName": "Mark","MiddleName": "","LastName": "Davis","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Mark Davis","Nationality": "England","Sex": "M","BioPage": "","Born": "1972-08-12","Twitter": "markdavis2108","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMarkDavis.png","PhotoSource": "","FirstSeasonAsPro": 1991,"LastSeasonAsPro": 0,"Info": ""},{"ID": 16,"Type": 1,"FirstName": "Barry","MiddleName": "","LastName": "Hawkins","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1979-04-23","Twitter": "TheHawk147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fbhawkins.jpg","PhotoSource": "","FirstSeasonAsPro": 1996,"LastSeasonAsPro": 0,"Info": ""},{"ID": 17,"Type": 1,"FirstName": "Mark","MiddleName": "","LastName": "Selby","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1983-06-19","Twitter": "markjesterselby","SurnameFirst": false,"License": "","Club": "","URL": "markselby.info","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fmselby.jpg","PhotoSource": "","FirstSeasonAsPro": 1999,"LastSeasonAsPro": 0,"Info": ""},{"ID": 19,"Type": 1,"FirstName": "Ben","MiddleName": "","LastName": "Woollaston","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1987-05-14","Twitter": "ben_Woollaston","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FWoollaston.png","PhotoSource": "","FirstSeasonAsPro": 2003,"LastSeasonAsPro": 0,"Info": ""},{"ID": 20,"Type": 1,"FirstName": "Jimmy","MiddleName": "","LastName": "White","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "J White","Nationality": "England","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fjwhite.shtml","Born": "1962-05-02","Twitter": "jimmywhite147","SurnameFirst": false,"License": "","Club": "","URL": "jimmywhirlwindwhite.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FJimmy White.png","PhotoSource": "","FirstSeasonAsPro": 1980,"LastSeasonAsPro": 0,"Info": ""},{"ID": 21,"Type": 1,"FirstName": "Alfie","MiddleName": "","LastName": "Burden","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1976-12-14","Twitter": "ABOFLONDON","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FBurden.png","PhotoSource": "","FirstSeasonAsPro": 1994,"LastSeasonAsPro": 0,"Info": ""},{"ID": 22,"Type": 1,"FirstName": "Anthony","MiddleName": "","LastName": "McGill","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1991-02-05","Twitter": "antsmcgill","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMcGill.png","PhotoSource": "","FirstSeasonAsPro": 2010,"LastSeasonAsPro": 0,"Info": ""},{"ID": 23,"Type": 1,"FirstName": "Paul","MiddleName": "S","LastName": "Davison","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "P S Davison","Nationality": "England","Sex": "M","BioPage": "","Born": "1971-10-01","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 1992,"LastSeasonAsPro": 2018,"Info": ""},{"ID": 24,"Type": 1,"FirstName": "Guodong","MiddleName": "","LastName": "Xiao","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Xiao Guodong","Nationality": "China","Sex": "M","BioPage": "","Born": "1989-02-10","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FXiao.png","PhotoSource": "","FirstSeasonAsPro": 2007,"LastSeasonAsPro": 0,"Info": ""},{"ID": 25,"Type": 1,"FirstName": "Andrew","MiddleName": "","LastName": "Higginson","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1977-12-13","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FHigginson.png","PhotoSource": "","FirstSeasonAsPro": 1996,"LastSeasonAsPro": 0,"Info": ""},{"ID": 26,"Type": 1,"FirstName": "Allan","MiddleName": "","LastName": "Taylor","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "A Taylor","Nationality": "England","Sex": "M","BioPage": "","Born": "1984-11-28","Twitter": "AllanTaylor147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FAllan Taylor.png","PhotoSource": "","FirstSeasonAsPro": 2013,"LastSeasonAsPro": 2018,"Info": ""},{"ID": 27,"Type": 1,"FirstName": "Martin","MiddleName": "","LastName": "Gould","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1981-09-14","Twitter": "GouldyBalls147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FGould.png","PhotoSource": "","FirstSeasonAsPro": 2003,"LastSeasonAsPro": 0,"Info": ""},{"ID": 28,"Type": 1,"FirstName": "Mark","MiddleName": "","LastName": "King","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "M King","Nationality": "England","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fmking.shtml","Born": "1974-03-28","Twitter": "markking147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FKing.png","PhotoSource": "","FirstSeasonAsPro": 1991,"LastSeasonAsPro": 0,"Info": ""},{"ID": 30,"Type": 1,"FirstName": "Stuart","MiddleName": "","LastName": "Bingham","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1976-05-21","Twitter": "Stuart__Bingham  ","SurnameFirst": false,"License": "","Club": "","URL": "stuartbingham.uk.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FBingham.png","PhotoSource": "","FirstSeasonAsPro": 1995,"LastSeasonAsPro": 0,"Info": ""},{"ID": 32,"Type": 1,"FirstName": "Daniel","MiddleName": "","LastName": "Wells","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1988-07-31","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FWells.png","PhotoSource": "","FirstSeasonAsPro": 2008,"LastSeasonAsPro": 0,"Info": ""},{"ID": 33,"Type": 1,"FirstName": "Dominic","MiddleName": "","LastName": "Dale","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1971-12-29","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fdale.png","PhotoSource": "","FirstSeasonAsPro": 1992,"LastSeasonAsPro": 0,"Info": ""},{"ID": 34,"Type": 1,"FirstName": "Michael","MiddleName": "","LastName": "Wasley","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1990-02-23","Twitter": "MichaelWasley","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FWasley.png","PhotoSource": "","FirstSeasonAsPro": 2012,"LastSeasonAsPro": 2015,"Info": ""},{"ID": 35,"Type": 1,"FirstName": "Joe","MiddleName": "","LastName": "Swail","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Northern Ireland","Sex": "M","BioPage": "","Born": "1969-08-29","Twitter": "joeswail","SurnameFirst": false,"License": "","Club": "","URL": "joeswail.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FSwail.png","PhotoSource": "","FirstSeasonAsPro": 1991,"LastSeasonAsPro": 2018,"Info": ""},{"ID": 37,"Type": 1,"FirstName": "Peter","MiddleName": "","LastName": "Lines","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "P Lines","Nationality": "England","Sex": "M","BioPage": "","Born": "1969-12-11","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FPeter Lines.png","PhotoSource": "","FirstSeasonAsPro": 1991,"LastSeasonAsPro": 0,"Info": ""},{"ID": 38,"Type": 1,"FirstName": "Gerard","MiddleName": "","LastName": "Greene","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Gerard Greene","Nationality": "Northern Ireland","Sex": "M","BioPage": "","Born": "1973-11-12","Twitter": "ggreene910","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FGreene.png","PhotoSource": "","FirstSeasonAsPro": 1993,"LastSeasonAsPro": 0,"Info": ""},{"ID": 39,"Type": 1,"FirstName": "Kyren","MiddleName": "","LastName": "Wilson","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "K Wilson","Nationality": "England","Sex": "M","BioPage": "","Born": "1991-12-23","Twitter": "KyrenWilson","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FKyren Wilson.png","PhotoSource": "","FirstSeasonAsPro": 2010,"LastSeasonAsPro": 0,"Info": ""},{"ID": 41,"Type": 1,"FirstName": "Tony","MiddleName": "","LastName": "Drago","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Malta","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Ftdrago.shtml","Born": "1965-09-22","Twitter": "Tornadodrago","SurnameFirst": false,"License": "","Club": "","URL": "tonytornadodrago.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FDrago.png","PhotoSource": "","FirstSeasonAsPro": 1985,"LastSeasonAsPro": 2015,"Info": ""},{"ID": 42,"Type": 1,"FirstName": "Peter","MiddleName": "","LastName": "Ebdon","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fpebdon.shtml","Born": "1970-08-27","Twitter": "pdebdon","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FEbdon.png","PhotoSource": "","FirstSeasonAsPro": 1991,"LastSeasonAsPro": 0,"Info": ""},{"ID": 44,"Type": 1,"FirstName": "Alan","MiddleName": "","LastName": "McManus","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Famcmanus.shtml","Born": "1971-01-21","Twitter": "alan_mcmanus","SurnameFirst": false,"License": "","Club": "","URL": "alanangles19.wordpress.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMcManus.png","PhotoSource": "","FirstSeasonAsPro": 1990,"LastSeasonAsPro": 0,"Info": ""},{"ID": 45,"Type": 1,"FirstName": "Liam","MiddleName": "","LastName": "Highfield","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1990-01-01","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2010,"LastSeasonAsPro": 0,"Info": ""},{"ID": 47,"Type": 1,"FirstName": "Matthew","MiddleName": "","LastName": "Selt","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1985-03-07","Twitter": "MattSelt","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FSelt.png","PhotoSource": "","FirstSeasonAsPro": 2002,"LastSeasonAsPro": 0,"Info": ""},{"ID": 48,"Type": 1,"FirstName": "Mark","MiddleName": "","LastName": "Joyce","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1983-08-11","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FJoyce.png","PhotoSource": "","FirstSeasonAsPro": 2006,"LastSeasonAsPro": 0,"Info": ""},{"ID": 49,"Type": 1,"FirstName": "Mitchell","MiddleName": "","LastName": "Mann","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "M Mann","Nationality": "England","Sex": "M","BioPage": "","Born": "1991-12-26","Twitter": "MitchellSnooker","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMann.png","PhotoSource": "","FirstSeasonAsPro": 2014,"LastSeasonAsPro": 2017,"Info": ""},{"ID": 50,"Type": 1,"FirstName": "Rory","MiddleName": "","LastName": "McLeod","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "R McLeod","Nationality": "England","Sex": "M","BioPage": "","Born": "1971-03-26","Twitter": "Rory_McLeod147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMcLeod.png","PhotoSource": "","FirstSeasonAsPro": 2001,"LastSeasonAsPro": 2018,"Info": ""},{"ID": 51,"Type": 1,"FirstName": "Andy","MiddleName": "","LastName": "Hicks","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1973-08-10","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 1991,"LastSeasonAsPro": 2012,"Info": ""},{"ID": 52,"Type": 1,"FirstName": "Graeme","MiddleName": "","LastName": "Dott","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1977-05-12","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "graemedottcoaching.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FDott.png","PhotoSource": "","FirstSeasonAsPro": 1994,"LastSeasonAsPro": 0,"Info": ""},{"ID": 53,"Type": 1,"FirstName": "Jamie","MiddleName": "","LastName": "Burnett","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1975-09-16","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 1992,"LastSeasonAsPro": 2016,"Info": ""},{"ID": 54,"Type": 1,"FirstName": "Mike","MiddleName": "","LastName": "Dunn","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1971-11-20","Twitter": "mikedunn147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FDunn.png","PhotoSource": "","FirstSeasonAsPro": 1991,"LastSeasonAsPro": 0,"Info": ""},{"ID": 58,"Type": 1,"FirstName": "Jordan","MiddleName": "","LastName": "Brown","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "J Brown","Nationality": "Northern Ireland","Sex": "M","BioPage": "","Born": "1987-10-09","Twitter": "jordyb147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2009,"LastSeasonAsPro": 0,"Info": ""},{"ID": 61,"Type": 1,"FirstName": "Kurt","MiddleName": "","LastName": "Maflin","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "K Maflin","Nationality": "Norway","Sex": "M","BioPage": "","Born": "1983-08-08","Twitter": "KurtMaflin147","SurnameFirst": false,"License": "","Club": "","URL": "kurtmaflin.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMaflin.png","PhotoSource": "","FirstSeasonAsPro": 2000,"LastSeasonAsPro": 0,"Info": ""},{"ID": 62,"Type": 1,"FirstName": "Ricky","MiddleName": "","LastName": "Walden","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1982-11-11","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "rickywalden.co.uk","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FWalden.png","PhotoSource": "","FirstSeasonAsPro": 2000,"LastSeasonAsPro": 0,"Info": ""},{"ID": 63,"Type": 1,"FirstName": "Fergal","MiddleName": "","LastName": "O'Brien","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "F O'Brien","Nationality": "Ireland","Sex": "M","BioPage": "","Born": "1972-03-08","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "fergalobrien.ie","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FOBrien.png","PhotoSource": "","FirstSeasonAsPro": 1991,"LastSeasonAsPro": 0,"Info": ""},{"ID": 67,"Type": 1,"FirstName": "David","MiddleName": "","LastName": "Grace","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1985-05-05","Twitter": "daveg147","SurnameFirst": false,"License": "","Club": "","URL": "davidgracesnooker.co.uk","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FGrace.png","PhotoSource": "","FirstSeasonAsPro": 2008,"LastSeasonAsPro": 2017,"Info": ""},{"ID": 68,"Type": 1,"FirstName": "Ryan","MiddleName": "","LastName": "Day","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "R Day","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1980-03-23","Twitter": "ryan23day","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FRyan Day.png","PhotoSource": "","FirstSeasonAsPro": 1998,"LastSeasonAsPro": 0,"Info": ""},{"ID": 74,"Type": 1,"FirstName": "Adam","MiddleName": "","LastName": "Duffy","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "A Duffy","Nationality": "England","Sex": "M","BioPage": "","Born": "1989-03-30","Twitter": "A147D","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2011,"LastSeasonAsPro": 2017,"Info": ""},{"ID": 76,"Type": 1,"FirstName": "Sam","MiddleName": "","LastName": "Baird","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1988-06-17","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "www.sambairdsnooker.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FBaird.png","PhotoSource": "","FirstSeasonAsPro": 2009,"LastSeasonAsPro": 0,"Info": ""},{"ID": 81,"Type": 1,"FirstName": "Anda","MiddleName": "","LastName": "Zhang","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Zhang Anda","Nationality": "China","Sex": "M","BioPage": "","Born": "1991-12-25","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FAnda.png","PhotoSource": "","FirstSeasonAsPro": 2009,"LastSeasonAsPro": 0,"Info": ""},{"ID": 82,"Type": 1,"FirstName": "Ian","MiddleName": "","LastName": "Glover","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1978-11-08","Twitter": "spearlordglover","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FGlover.png","PhotoSource": "","FirstSeasonAsPro": 1995,"LastSeasonAsPro": 2015,"Info": ""},{"ID": 85,"Type": 1,"FirstName": "Jack","MiddleName": "","LastName": "Lisowski","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1991-06-25","Twitter": "JackLisowski","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FLisowski.png","PhotoSource": "","FirstSeasonAsPro": 2010,"LastSeasonAsPro": 0,"Info": ""},{"ID": 87,"Type": 1,"FirstName": "Ian","MiddleName": "","LastName": "Burns","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "I Burns","Nationality": "England","Sex": "M","BioPage": "","Born": "1985-03-11","Twitter": "BurnsyIB","SurnameFirst": false,"License": "","Club": "","URL": "http:\u002F\u002Fwww.ianburnssnooker.com\u002F","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FBurns.png","PhotoSource": "","FirstSeasonAsPro": 2012,"LastSeasonAsPro": 0,"Info": ""},{"ID": 89,"Type": 1,"FirstName": "Zak","MiddleName": "","LastName": "Surety","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1991-10-04","Twitter": "ZakSurety","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FZak.png","PhotoSource": "","FirstSeasonAsPro": 2014,"LastSeasonAsPro": 2015,"Info": ""},{"ID": 92,"Type": 1,"FirstName": "Robert","MiddleName": "","LastName": "Milkins","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1976-03-06","Twitter": "robmilkins147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMilkins.png","PhotoSource": "","FirstSeasonAsPro": 1995,"LastSeasonAsPro": 0,"Info": ""},{"ID": 93,"Type": 1,"FirstName": "Jimmy","MiddleName": "","LastName": "Robertson","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "J Robertson","Nationality": "England","Sex": "M","BioPage": "","Born": "1986-05-03","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FJimmy Robertson.png","PhotoSource": "","FirstSeasonAsPro": 2002,"LastSeasonAsPro": 0,"Info": ""},{"ID": 96,"Type": 1,"FirstName": "Robbie","MiddleName": "","LastName": "Williams","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "R Williams","Nationality": "England","Sex": "M","BioPage": "","Born": "1986-12-28","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FRobbie Williams.png","PhotoSource": "","FirstSeasonAsPro": 2012,"LastSeasonAsPro": 0,"Info": ""},{"ID": 97,"Type": 1,"FirstName": "Shaun","MiddleName": "","LastName": "Murphy","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "S Murphy","Nationality": "England","Sex": "M","BioPage": "","Born": "1982-08-10","Twitter": "Magician147","SurnameFirst": false,"License": "","Club": "","URL": "shaunmurphy.net","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMurphy.png","PhotoSource": "","FirstSeasonAsPro": 1998,"LastSeasonAsPro": 0,"Info": ""},{"ID": 101,"Type": 1,"FirstName": "Luca","MiddleName": "","LastName": "Brecel","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Belgium","Sex": "M","BioPage": "","Born": "1995-03-08","Twitter": "LucaLoy_Brecel","SurnameFirst": false,"License": "","Club": "","URL": "brecelluca.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FBrecel.png","PhotoSource": "","FirstSeasonAsPro": 2011,"LastSeasonAsPro": 0,"Info": ""},{"ID": 102,"Type": 1,"FirstName": "Kuldesh","MiddleName": "","LastName": "Johal","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1980-09-25","Twitter": "KuldeshJohal","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2008,"LastSeasonAsPro": 2010,"Info": ""},{"ID": 108,"Type": 1,"FirstName": "Aditya","MiddleName": "","LastName": "Mehta","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Aditya Mehta","Nationality": "India","Sex": "M","BioPage": "","Born": "1985-10-31","Twitter": "snookered_adi","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMehta.png","PhotoSource": "","FirstSeasonAsPro": 2008,"LastSeasonAsPro": 2017,"Info": ""},{"ID": 115,"Type": 1,"FirstName": "Anthony","MiddleName": "","LastName": "Hamilton","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fahamilton.shtml","Born": "1971-06-29","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FHamilton.PNG","PhotoSource": "","FirstSeasonAsPro": 1991,"LastSeasonAsPro": 0,"Info": ""},{"ID": 118,"Type": 1,"FirstName": "David","MiddleName": "B","LastName": "Gilbert","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "D B Gilbert","Nationality": "England","Sex": "M","BioPage": "","Born": "1981-06-12","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FGilbert.png","PhotoSource": "","FirstSeasonAsPro": 2002,"LastSeasonAsPro": 0,"Info": ""},{"ID": 120,"Type": 1,"FirstName": "Martin","MiddleName": "","LastName": "O'Donnell","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1986-06-04","Twitter": "TheMOD147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMartin O.PNG","PhotoSource": "","FirstSeasonAsPro": 2012,"LastSeasonAsPro": 0,"Info": ""},{"ID": 124,"Type": 1,"FirstName": "Michael","MiddleName": "","LastName": "Wild","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1981-03-27","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2003,"LastSeasonAsPro": 2016,"Info": ""},{"ID": 125,"Type": 1,"FirstName": "Michael","MiddleName": "","LastName": "Holt","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1978-08-07","Twitter": "HitmanHolt","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FHolt.png","PhotoSource": "","FirstSeasonAsPro": 1996,"LastSeasonAsPro": 0,"Info": ""},{"ID": 128,"Type": 1,"FirstName": "Stuart","MiddleName": "","LastName": "Carrington","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1990-05-14","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FCarrington.png","PhotoSource": "","FirstSeasonAsPro": 2011,"LastSeasonAsPro": 0,"Info": ""},{"ID": 131,"Type": 1,"FirstName": "Craig","MiddleName": "","LastName": "Steadman","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1982-07-14","Twitter": "stedz1","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FSteadman.png","PhotoSource": "","FirstSeasonAsPro": 2009,"LastSeasonAsPro": 0,"Info": ""},{"ID": 138,"Type": 1,"FirstName": "Jake","MiddleName": "","LastName": "Nicholson","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Jake Nicholson","Nationality": "England","Sex": "M","BioPage": "","Born": "1992-08-13","Twitter": "jakeN147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 0,"LastSeasonAsPro": 0,"Info": ""},{"ID": 151,"Type": 1,"FirstName": "James","MiddleName": "","LastName": "Cahill","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1995-12-27","Twitter": "JamesCahill147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2013,"LastSeasonAsPro": 2016,"Info": ""},{"ID": 154,"Type": 1,"FirstName": "Neil","MiddleName": "","LastName": "Robertson","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "N Robertson","Nationality": "Australia","Sex": "M","BioPage": "","Born": "1982-02-11","Twitter": "nr147","SurnameFirst": false,"License": "","Club": "","URL": "neilrobertson.net","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FNRobertson.png","PhotoSource": "","FirstSeasonAsPro": 1998,"LastSeasonAsPro": 0,"Info": ""},{"ID": 156,"Type": 1,"FirstName": "Alex","MiddleName": "","LastName": "Taubman","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1989-02-27","Twitter": "147ABT","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 0,"LastSeasonAsPro": 0,"Info": ""},{"ID": 158,"Type": 1,"FirstName": "Allister","MiddleName": "","LastName": "Carter","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "A Carter","Nationality": "England","Sex": "M","BioPage": "","Born": "1979-07-25","Twitter": "TheCaptain147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fcarter.png","PhotoSource": "","FirstSeasonAsPro": 1996,"LastSeasonAsPro": 0,"Info": ""},{"ID": 168,"Type": 1,"FirstName": "Joe","MiddleName": "","LastName": "Perry","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1974-08-13","Twitter": "joegentlemanjoe","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FPerry.png","PhotoSource": "","FirstSeasonAsPro": 1991,"LastSeasonAsPro": 0,"Info": ""},{"ID": 169,"Type": 1,"FirstName": "Joel","MiddleName": "","LastName": "Walker","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Joel Walker","Nationality": "England","Sex": "M","BioPage": "","Born": "1994-03-16","Twitter": "JoelWalker147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FJoelWalker.png","PhotoSource": "","FirstSeasonAsPro": 2012,"LastSeasonAsPro": 2015,"Info": ""},{"ID": 170,"Type": 1,"FirstName": "Ken","MiddleName": "","LastName": "Doherty","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "K Doherty","Nationality": "Ireland","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fkdoherty.shtml","Born": "1969-09-17","Twitter": "kendoherty1997","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FDoherty.png","PhotoSource": "","FirstSeasonAsPro": 1990,"LastSeasonAsPro": 0,"Info": ""},{"ID": 171,"Type": 1,"FirstName": "Michael","MiddleName": "","LastName": "White","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Michael White","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1991-07-05","Twitter": "michaelwhite147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMWhite.png","PhotoSource": "","FirstSeasonAsPro": 2007,"LastSeasonAsPro": 0,"Info": ""},{"ID": 177,"Type": 1,"FirstName": "Rod","MiddleName": "","LastName": "Lawler","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1971-07-12","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FLawler.png","PhotoSource": "","FirstSeasonAsPro": 1990,"LastSeasonAsPro": 0,"Info": ""},{"ID": 184,"Type": 1,"FirstName": "Delu","MiddleName": "","LastName": "Yu","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Yu Delu","Nationality": "China","Sex": "M","BioPage": "","Born": "1987-10-11","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FDelu.png","PhotoSource": "","FirstSeasonAsPro": 2011,"LastSeasonAsPro": 2017,"Info": ""},{"ID": 190,"Type": 1,"FirstName": "David","MiddleName": "","LastName": "Morris","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Ireland","Sex": "M","BioPage": "","Born": "1988-11-27","Twitter": "davymorris147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMorris.png","PhotoSource": "","FirstSeasonAsPro": 2006,"LastSeasonAsPro": 2015,"Info": ""},{"ID": 193,"Type": 1,"FirstName": "James","MiddleName": "","LastName": "Wattana","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Thailand","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fjwattana.shtml","Born": "1970-01-17","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 1989,"LastSeasonAsPro": 0,"Info": "Also known as Ratchapol Pu-ob-orm."},{"ID": 200,"Type": 1,"FirstName": "Wenbo","MiddleName": "","LastName": "Liang","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Liang Wenbo","Nationality": "China","Sex": "M","BioPage": "","Born": "1987-03-05","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FWenbo.png","PhotoSource": "","FirstSeasonAsPro": 2005,"LastSeasonAsPro": 0,"Info": ""},{"ID": 202,"Type": 1,"FirstName": "Mark","MiddleName": "","LastName": "Allen","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "M Allen","Nationality": "Northern Ireland","Sex": "M","BioPage": "","Born": "1986-02-22","Twitter": "pistol147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMarkAllen.png","PhotoSource": "","FirstSeasonAsPro": 2005,"LastSeasonAsPro": 0,"Info": ""},{"ID": 208,"Type": 1,"FirstName": "Noppon","MiddleName": "","LastName": "Saengkham","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Thailand","Sex": "M","BioPage": "","Born": "1992-07-15","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2010,"LastSeasonAsPro": 0,"Info": ""},{"ID": 216,"Type": 1,"FirstName": "Thanawat","MiddleName": "","LastName": "Tirapongpaiboon","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Thailand","Sex": "M","BioPage": "","Born": "1993-12-14","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2010,"LastSeasonAsPro": 2015,"Info": ""},{"ID": 217,"Type": 1,"FirstName": "Thepchaiya","MiddleName": "","LastName": "Un-Nooh","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Thailand","Sex": "M","BioPage": "","Born": "1985-07-18","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FUn-Nooh.png","PhotoSource": "","FirstSeasonAsPro": 2009,"LastSeasonAsPro": 0,"Info": ""},{"ID": 218,"Type": 1,"FirstName": "Pengfei","MiddleName": "","LastName": "Tian","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Tian Pengfei","Nationality": "China","Sex": "M","BioPage": "","Born": "1987-08-16","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FPengfei.png","PhotoSource": "","FirstSeasonAsPro": 2006,"LastSeasonAsPro": 0,"Info": ""},{"ID": 224,"Type": 1,"FirstName": "Junhui","MiddleName": "","LastName": "Ding","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Ding Junhui","Nationality": "China","Sex": "M","BioPage": "","Born": "1987-04-01","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FDingjunhui.jpg","PhotoSource": "","FirstSeasonAsPro": 2003,"LastSeasonAsPro": 0,"Info": ""},{"ID": 237,"Type": 1,"FirstName": "John","MiddleName": "","LastName": "Higgins","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "J Higgins","Nationality": "Scotland","Sex": "M","BioPage": "http:\u002F\u002Fsnooker.org\u002Fplr\u002Fbio\u002Fjhiggins.shtml","Born": "1975-05-18","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fjhiggins.jpg","PhotoSource": "","FirstSeasonAsPro": 1992,"LastSeasonAsPro": 0,"Info": ""},{"ID": 269,"Type": 1,"FirstName": "Gareth","MiddleName": "","LastName": "Allen","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "G Allen","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1988-09-09","Twitter": "gaz_147","SurnameFirst": false,"License": "","Club": "","URL": "http:\u002F\u002Fwww.garethallen.weebly.com","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FGAllen.png","PhotoSource": "","FirstSeasonAsPro": 2015,"LastSeasonAsPro": 2016,"Info": ""},{"ID": 295,"Type": 1,"FirstName": "Hang","MiddleName": "","LastName": "Li","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Li Hang","Nationality": "China","Sex": "M","BioPage": "","Born": "1990-10-04","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FHang.png","PhotoSource": "","FirstSeasonAsPro": 2008,"LastSeasonAsPro": 0,"Info": ""},{"ID": 422,"Type": 1,"FirstName": "Leo","MiddleName": "","LastName": "Fernandez","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Ireland","Sex": "M","BioPage": "","Born": "1976-07-05","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 1995,"LastSeasonAsPro": 2017,"Info": ""},{"ID": 448,"Type": 1,"FirstName": "Duane","MiddleName": "","LastName": "Jones","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "D Jones","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1993-04-30","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2015,"LastSeasonAsPro": 0,"Info": ""},{"ID": 497,"Type": 1,"FirstName": "Michael","MiddleName": "","LastName": "Georgiou","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Cyprus","Sex": "M","BioPage": "","Born": "1988-01-18","Twitter": "mikegeorgiou147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMichaelG.png","PhotoSource": "","FirstSeasonAsPro": 2008,"LastSeasonAsPro": 0,"Info": "Represented England prior to the 2016 Q School"},{"ID": 507,"Type": 1,"FirstName": "Yupeng","MiddleName": "","LastName": "Cao","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Cao Yupeng","Nationality": "China","Sex": "M","BioPage": "","Born": "1990-10-27","Twitter": "ECaoyupeng","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FYupeng.png","PhotoSource": "","FirstSeasonAsPro": 2011,"LastSeasonAsPro": 2017,"Info": ""},{"ID": 510,"Type": 1,"FirstName": "Chenwei","MiddleName": "","LastName": "Lü","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Lü Chenwei","Nationality": "China","Sex": "M","BioPage": "","Born": "1991-01-16","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FChenwei.png","PhotoSource": "","FirstSeasonAsPro": 2014,"LastSeasonAsPro": 2015,"Info": ""},{"ID": 519,"Type": 1,"FirstName": "Luke","MiddleName": "","LastName": "Simmonds","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1979-12-07","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 0,"LastSeasonAsPro": 0,"Info": ""},{"ID": 520,"Type": 1,"FirstName": "Lee","MiddleName": "","LastName": "Walker","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "L Walker","Nationality": "Wales","Sex": "M","BioPage": "","Born": "1976-02-11","Twitter": "leewalker147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FLee Walker.png","PhotoSource": "","FirstSeasonAsPro": 1994,"LastSeasonAsPro": 0,"Info": ""},{"ID": 521,"Type": 1,"FirstName": "Vinnie","MiddleName": "","LastName": "Calabrese","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Australia","Sex": "M","BioPage": "","Born": "1987-10-07","Twitter": "VinnieCalabrese","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FVinnie.png","PhotoSource": "","FirstSeasonAsPro": 2013,"LastSeasonAsPro": 2015,"Info": ""},{"ID": 523,"Type": 1,"FirstName": "Sydney","MiddleName": "","LastName": "Wilson","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "S Wilson","Nationality": "England","Sex": "M","BioPage": "","Born": "1990-04-06","Twitter": "sydneywilsonjr","SurnameFirst": false,"License": "","Club": "","URL": "sydneywilsonjr.com","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2015,"LastSeasonAsPro": 2016,"Info": ""},{"ID": 528,"Type": 1,"FirstName": "Michael","MiddleName": "","LastName": "Leslie","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1993-01-28","Twitter": "Lightnin147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FLeslie.png","PhotoSource": "","FirstSeasonAsPro": 2012,"LastSeasonAsPro": 2015,"Info": ""},{"ID": 534,"Type": 1,"FirstName": "Fraser","MiddleName": "","LastName": "Patrick","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1985-11-08","Twitter": "fraserp147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FPatrick.png","PhotoSource": "","FirstSeasonAsPro": 2007,"LastSeasonAsPro": 2016,"Info": ""},{"ID": 546,"Type": 1,"FirstName": "Gary","MiddleName": "","LastName": "Wilson","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "G Wilson","Nationality": "England","Sex": "M","BioPage": "","Born": "1985-08-11","Twitter": "Gary_Wilson11","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FGary Wilson.png","PhotoSource": "","FirstSeasonAsPro": 2004,"LastSeasonAsPro": 0,"Info": ""},{"ID": 549,"Type": 1,"FirstName": "Robin","MiddleName": "","LastName": "Hull","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Finland","Sex": "M","BioPage": "","Born": "1974-08-16","Twitter": "robinhull_","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002Fhull.png","PhotoSource": "","FirstSeasonAsPro": 1993,"LastSeasonAsPro": 2018,"Info": ""},{"ID": 552,"Type": 1,"FirstName": "Sean","MiddleName": "","LastName": "O'Sullivan","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Sean O'Sullivan","Nationality": "England","Sex": "M","BioPage": "","Born": "1994-04-29","Twitter": "SeanTheStorm147","SurnameFirst": false,"License": "","Club": "","URL": "sean-osullivan.net","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FSean OSullivan.png","PhotoSource": "","FirstSeasonAsPro": 2012,"LastSeasonAsPro": 2018,"Info": ""},{"ID": 582,"Type": 1,"FirstName": "Dechawat","MiddleName": "","LastName": "Poomjaeng","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "D Poomjaeng","Nationality": "Thailand","Sex": "M","BioPage": "","Born": "1978-07-11","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FDechawat.png","PhotoSource": "","FirstSeasonAsPro": 2011,"LastSeasonAsPro": 2016,"Info": ""},{"ID": 592,"Type": 1,"FirstName": "Oliver","MiddleName": "","LastName": "Lines","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "O Lines","Nationality": "England","Sex": "M","BioPage": "","Born": "1995-06-16","Twitter": "OliverLines","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FOLines.png","PhotoSource": "","FirstSeasonAsPro": 2014,"LastSeasonAsPro": 0,"Info": ""},{"ID": 593,"Type": 1,"FirstName": "Hammad","MiddleName": "","LastName": "Miah","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Hammad Miah","Nationality": "England","Sex": "M","BioPage": "","Born": "1993-07-06","Twitter": "HammadMiah147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2013,"LastSeasonAsPro": 0,"Info": ""},{"ID": 605,"Type": 1,"FirstName": "Steven","MiddleName": "","LastName": "Hallworth","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1995-12-01","Twitter": "stevenhallworth","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FHallworth.png","PhotoSource": "","FirstSeasonAsPro": 2014,"LastSeasonAsPro": 2015,"Info": ""},{"ID": 620,"Type": 1,"FirstName": "Eden","MiddleName": "","LastName": "Sharav","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Israel","Sex": "M","BioPage": "","Born": "1990-04-30","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2015,"LastSeasonAsPro": 0,"Info": ""},{"ID": 621,"Type": 1,"FirstName": "Sanderson","MiddleName": "","LastName": "Lam","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "S Lam","Nationality": "England","Sex": "M","BioPage": "","Born": "1994-01-28","Twitter": "sandi147","SurnameFirst": false,"License": "","Club": "","URL": "facebook.com\u002Fsandi147","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2015,"LastSeasonAsPro": 2018,"Info": ""},{"ID": 666,"Type": 1,"FirstName": "Hossein","MiddleName": "","LastName": "Vafaei","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Iran","Sex": "M","BioPage": "","Born": "1994-09-14","Twitter": "hosseinvafae","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FHossein.png","PhotoSource": "","FirstSeasonAsPro": 2012,"LastSeasonAsPro": 0,"Info": ""},{"ID": 892,"Type": 1,"FirstName": "Darryl","MiddleName": "","LastName": "Hill","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "D Hill","Nationality": "Isle of Man","Sex": "M","BioPage": "","Born": "1996-04-30","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2015,"LastSeasonAsPro": 2016,"Info": ""},{"ID": 894,"Type": 1,"FirstName": "Scott","MiddleName": "","LastName": "Donaldson","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1994-03-19","Twitter": "ThePPM","SurnameFirst": false,"License": "","Club": "","URL": "scottdonaldson.pro","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FDonaldson.png","PhotoSource": "","FirstSeasonAsPro": 2012,"LastSeasonAsPro": 0,"Info": ""},{"ID": 898,"Type": 1,"FirstName": "Ross","MiddleName": "","LastName": "Muir","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1995-10-06","Twitter": "rossmuir147","SurnameFirst": false,"License": "","Club": "","URL": "https:\u002F\u002Fwww.facebook.com\u002FRossMuirSnooker\u002F","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMuir.png","PhotoSource": "","FirstSeasonAsPro": 2013,"LastSeasonAsPro": 2018,"Info": ""},{"ID": 906,"Type": 1,"FirstName": "Yuelong","MiddleName": "","LastName": "Zhou","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Zhou Yuelong","Nationality": "China","Sex": "M","BioPage": "","Born": "1998-01-24","Twitter": "yuelong_zhou","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FYuelong.png","PhotoSource": "","FirstSeasonAsPro": 2014,"LastSeasonAsPro": 0,"Info": ""},{"ID": 908,"Type": 1,"FirstName": "Ning","MiddleName": "","LastName": "Lu","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Lu Ning","Nationality": "China","Sex": "M","BioPage": "","Born": "1994-01-01","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2014,"LastSeasonAsPro": 0,"Info": ""},{"ID": 917,"Type": 1,"FirstName": "Rhys","MiddleName": "","LastName": "Clark","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Rhys Clark","Nationality": "Scotland","Sex": "M","BioPage": "","Born": "1994-08-17","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FClark.png","PhotoSource": "","FirstSeasonAsPro": 2015,"LastSeasonAsPro": 2018,"Info": ""},{"ID": 933,"Type": 1,"FirstName": "Zifan","MiddleName": "","LastName": "Chen","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Chen Zifan","Nationality": "China","Sex": "M","BioPage": "","Born": "1992-09-17","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2017,"LastSeasonAsPro": 0,"Info": ""},{"ID": 941,"Type": 1,"FirstName": "Shuai","MiddleName": "","LastName": "Lin","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Lin Shuai","Nationality": "China","Sex": "M","BioPage": "","Born": "1994-03-04","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 0,"LastSeasonAsPro": 0,"Info": ""},{"ID": 947,"Type": 1,"FirstName": "Yong","MiddleName": "","LastName": "Zhang","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Zhang Yong","Nationality": "China","Sex": "M","BioPage": "","Born": "1995-07-21","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2015,"LastSeasonAsPro": 2018,"Info": ""},{"ID": 954,"Type": 1,"FirstName": "Yuchen","MiddleName": "","LastName": "Wang","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Wang Yuchen","Nationality": "China","Sex": "M","BioPage": "","Born": "1997-08-05","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2016,"LastSeasonAsPro": 2017,"Info": ""},{"ID": 1038,"Type": 1,"FirstName": "Joe","MiddleName": "","LastName": "O'Connor","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "J O'Connor","Nationality": "England","Sex": "M","BioPage": "","Born": "1995-11-08","Twitter": "JoeOc147","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2018,"LastSeasonAsPro": 0,"Info": ""},{"ID": 1044,"Type": 1,"FirstName": "Chris","MiddleName": "","LastName": "Wakelin","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "C Wakelin","Nationality": "England","Sex": "M","BioPage": "","Born": "1992-03-16","Twitter": "chris147ace","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FWakelin.png","PhotoSource": "","FirstSeasonAsPro": 2013,"LastSeasonAsPro": 0,"Info": ""},{"ID": 1101,"Type": 1,"FirstName": "Zhuang","MiddleName": "","LastName": "Niu","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Niu Zhuang","Nationality": "China","Sex": "M","BioPage": "","Born": "1994-06-26","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2017,"LastSeasonAsPro": 2018,"Info": ""},{"ID": 1108,"Type": 1,"FirstName": "Sijun","MiddleName": "","LastName": "Yuan","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Yuan Sijun","Nationality": "China","Sex": "M","BioPage": "","Born": "2000-05-29","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2017,"LastSeasonAsPro": 0,"Info": ""},{"ID": 1114,"Type": 1,"FirstName": "Xiongman","MiddleName": "","LastName": "Fang","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Fang Xiongman","Nationality": "China","Sex": "M","BioPage": "","Born": "1993-04-09","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2016,"LastSeasonAsPro": 2017,"Info": ""},{"ID": 1160,"Type": 1,"FirstName": "Pengcheng","MiddleName": "","LastName": "Yao","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Yao Pengcheng","Nationality": "China","Sex": "M","BioPage": "","Born": "","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 0,"LastSeasonAsPro": 0,"Info": ""},{"ID": 1168,"Type": 1,"FirstName": "Chris","MiddleName": "","LastName": "Melling","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1979-01-27","Twitter": "chrismelling1","SurnameFirst": false,"License": "","Club": "","URL": "chrismelling.co.uk","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FMelling.png","PhotoSource": "","FirstSeasonAsPro": 2000,"LastSeasonAsPro": 2015,"Info": ""},{"ID": 1323,"Type": 1,"FirstName": "Ashley","MiddleName": "","LastName": "Hugill","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "England","Sex": "M","BioPage": "","Born": "1994-09-28","Twitter": "AcHugill","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2017,"LastSeasonAsPro": 2018,"Info": ""},{"ID": 1505,"Type": 1,"FirstName": "Jason","MiddleName": "","LastName": "Weston","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "J Weston","Nationality": "England","Sex": "M","BioPage": "","Born": "1971-01-12","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 1991,"LastSeasonAsPro": 2016,"Info": ""},{"ID": 1509,"Type": 1,"FirstName": "Thor","MiddleName": "","LastName": "Chuan Leong","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Malaysia","Sex": "M","BioPage": "","Born": "1988-03-24","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "http:\u002F\u002Fsnooker.org\u002Fimg\u002Fplayers\u002FLeong.png","PhotoSource": "","FirstSeasonAsPro": 2014,"LastSeasonAsPro": 0,"Info": ""},{"ID": 1762,"Type": 1,"FirstName": "Hamza","MiddleName": "","LastName": "Akbar","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "","Nationality": "Pakistan","Sex": "M","BioPage": "","Born": "1993-11-12","Twitter": "","SurnameFirst": false,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 2015,"LastSeasonAsPro": 2018,"Info": ""},{"ID": 1952,"Type": 1,"FirstName": "Bin","MiddleName": "","LastName": "Han","TeamName": "","TeamNumber": 0,"TeamSeason": 0,"ShortName": "Han Bin","Nationality": "China","Sex": "M","BioPage": "","Born": "","Twitter": "","SurnameFirst": true,"License": "","Club": "","URL": "","Photo": "","PhotoSource": "","FirstSeasonAsPro": 0,"LastSeasonAsPro": 0,"Info": ""}]
\ No newline at end of file
index 9a9046e..a1d09f2 100644 (file)
Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonPlayersTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonPlayersTest.ser differ
index 9a4c4ca..e3ae79b 100644 (file)
Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonRankingTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonRankingTest.ser differ
index 026534c..0417587 100644 (file)
Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonRankingsTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonRankingsTest.ser differ