From: gotty Date: Thu, 7 Nov 2019 00:43:23 +0000 (+0000) Subject: [LIB-8] URL and HTML tag processing, new entities fields X-Git-Url: https://git.hedgecode.org/?p=snooker-score-api.git;a=commitdiff_plain;h=a9650805d204dba01a81100f2b9aa5d5f5f1a86e [LIB-8] URL and HTML tag processing, new entities fields git-svn-id: https://svn.hedgecode.org/lib/snooker-score-api/trunk@174 fb0bcced-7025-49ed-a12f-f98bce993226 --- diff --git a/src/main/java/org/hedgecode/snooker/SnookerScoreApp.java b/src/main/java/org/hedgecode/snooker/SnookerScoreApp.java index dbd2b9a..c597807 100644 --- a/src/main/java/org/hedgecode/snooker/SnookerScoreApp.java +++ b/src/main/java/org/hedgecode/snooker/SnookerScoreApp.java @@ -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 index 0000000..c345d78 --- /dev/null +++ b/src/main/java/org/hedgecode/snooker/SnookerURLUtils.java @@ -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 = "]*>([^<]+)"; + + 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 parseUrls(Map htmlStrings) throws APIException { + List 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 assignUrls(Map urlStrings) throws APIException { + List 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 index 0000000..47566fc --- /dev/null +++ b/src/main/java/org/hedgecode/snooker/annotation/IsURL.java @@ -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 index 0000000..5a4b0cf --- /dev/null +++ b/src/main/java/org/hedgecode/snooker/annotation/WithHTMLTags.java @@ -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 { +} diff --git a/src/main/java/org/hedgecode/snooker/api/Event.java b/src/main/java/org/hedgecode/snooker/api/Event.java index b3fdb68..2410aae 100644 --- a/src/main/java/org/hedgecode/snooker/api/Event.java +++ b/src/main/java/org/hedgecode/snooker/api/Event.java @@ -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(); } diff --git a/src/main/java/org/hedgecode/snooker/api/IdEntity.java b/src/main/java/org/hedgecode/snooker/api/IdEntity.java index 699ea8f..c1ed21d 100644 --- a/src/main/java/org/hedgecode/snooker/api/IdEntity.java +++ b/src/main/java/org/hedgecode/snooker/api/IdEntity.java @@ -21,7 +21,7 @@ package org.hedgecode.snooker.api; * * @author Dmitry Samoshin aka gotty */ -public interface IdEntity { +public interface IdEntity extends URLEntity { int getId(); diff --git a/src/main/java/org/hedgecode/snooker/api/Match.java b/src/main/java/org/hedgecode/snooker/api/Match.java index b006c32..3a6d947 100644 --- a/src/main/java/org/hedgecode/snooker/api/Match.java +++ b/src/main/java/org/hedgecode/snooker/api/Match.java @@ -75,7 +75,7 @@ public interface Match extends IdEntity { int tableNo(); - String videoURL(); + String videoUrl(); Date initDate(); diff --git a/src/main/java/org/hedgecode/snooker/api/Player.java b/src/main/java/org/hedgecode/snooker/api/Player.java index 9c6c7ea..49a3e7a 100644 --- a/src/main/java/org/hedgecode/snooker/api/Player.java +++ b/src/main/java/org/hedgecode/snooker/api/Player.java @@ -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 index 0000000..963d2d2 --- /dev/null +++ b/src/main/java/org/hedgecode/snooker/api/PlayerImage.java @@ -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(); + } + +} diff --git a/src/main/java/org/hedgecode/snooker/api/RankingType.java b/src/main/java/org/hedgecode/snooker/api/RankingType.java index 9e308b6..5d7e7aa 100644 --- a/src/main/java/org/hedgecode/snooker/api/RankingType.java +++ b/src/main/java/org/hedgecode/snooker/api/RankingType.java @@ -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 index 0000000..6a976aa --- /dev/null +++ b/src/main/java/org/hedgecode/snooker/api/SnookerURL.java @@ -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 index 0000000..0b9f914 --- /dev/null +++ b/src/main/java/org/hedgecode/snooker/api/URLEntity.java @@ -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 getLinks() throws APIException; + + List getURLs() throws APIException; + + SnookerURL getURL(String name) throws APIException; + + String withoutTags(String name) throws APIException; + +} diff --git a/src/main/java/org/hedgecode/snooker/cache/assign/EventAssigner.java b/src/main/java/org/hedgecode/snooker/cache/assign/EventAssigner.java index 8c2cc8b..8ea144b 100644 --- a/src/main/java/org/hedgecode/snooker/cache/assign/EventAssigner.java +++ b/src/main/java/org/hedgecode/snooker/cache/assign/EventAssigner.java @@ -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 { @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() + ) + ); + } } } diff --git a/src/main/java/org/hedgecode/snooker/json/JsonEvent.java b/src/main/java/org/hedgecode/snooker/json/JsonEvent.java index 0ba62ab..e7a256d 100644 --- a/src/main/java/org/hedgecode/snooker/json/JsonEvent.java +++ b/src/main/java/org/hedgecode/snooker/json/JsonEvent.java @@ -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; diff --git a/src/main/java/org/hedgecode/snooker/json/JsonIdEntity.java b/src/main/java/org/hedgecode/snooker/json/JsonIdEntity.java index 25207b4..eb6491e 100644 --- a/src/main/java/org/hedgecode/snooker/json/JsonIdEntity.java +++ b/src/main/java/org/hedgecode/snooker/json/JsonIdEntity.java @@ -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) diff --git a/src/main/java/org/hedgecode/snooker/json/JsonMatch.java b/src/main/java/org/hedgecode/snooker/json/JsonMatch.java index 22248dd..cda1b86 100644 --- a/src/main/java/org/hedgecode/snooker/json/JsonMatch.java +++ b/src/main/java/org/hedgecode/snooker/json/JsonMatch.java @@ -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 diff --git a/src/main/java/org/hedgecode/snooker/json/JsonPlayer.java b/src/main/java/org/hedgecode/snooker/json/JsonPlayer.java index 04ac5da..aa481ed 100644 --- a/src/main/java/org/hedgecode/snooker/json/JsonPlayer.java +++ b/src/main/java/org/hedgecode/snooker/json/JsonPlayer.java @@ -16,11 +16,17 @@ 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; } diff --git a/src/main/java/org/hedgecode/snooker/json/JsonRound.java b/src/main/java/org/hedgecode/snooker/json/JsonRound.java index 7dbb3b1..78995ff 100644 --- a/src/main/java/org/hedgecode/snooker/json/JsonRound.java +++ b/src/main/java/org/hedgecode/snooker/json/JsonRound.java @@ -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 index 0000000..b625f52 --- /dev/null +++ b/src/main/java/org/hedgecode/snooker/json/JsonURLEntity.java @@ -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 getLinks() throws APIException { + List links = null; + Map htmlStrings = getAnnotatedStrings(WithHTMLTags.class); + if (!htmlStrings.isEmpty()) { + links = SnookerURLUtils.parseUrls(htmlStrings); + } + return links; + } + + @Override + public List getURLs() throws APIException { + List urls = null; + Map 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 getAnnotatedStrings( + Class annotationClass + ) { + Map 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 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 getAnnotatedMethodStrings( + Class annotationClass + ) { + Map 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 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; + } + +} diff --git a/src/test/resources/org/hedgecode/snooker/json/JsonEventTest.ser b/src/test/resources/org/hedgecode/snooker/json/JsonEventTest.ser index 356fb15..51976bd 100644 Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonEventTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonEventTest.ser differ diff --git a/src/test/resources/org/hedgecode/snooker/json/JsonEventsTest.ser b/src/test/resources/org/hedgecode/snooker/json/JsonEventsTest.ser index 3d5f9b4..46c3604 100644 Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonEventsTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonEventsTest.ser differ diff --git a/src/test/resources/org/hedgecode/snooker/json/JsonMatchTest.ser b/src/test/resources/org/hedgecode/snooker/json/JsonMatchTest.ser index 23c7493..b27434c 100644 Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonMatchTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonMatchTest.ser differ diff --git a/src/test/resources/org/hedgecode/snooker/json/JsonMatchesTest.ser b/src/test/resources/org/hedgecode/snooker/json/JsonMatchesTest.ser index aa94b37..02d6906 100644 Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonMatchesTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonMatchesTest.ser differ diff --git a/src/test/resources/org/hedgecode/snooker/json/JsonOngoingMatchTest.ser b/src/test/resources/org/hedgecode/snooker/json/JsonOngoingMatchTest.ser index 65acd8d..71ee53e 100644 Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonOngoingMatchTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonOngoingMatchTest.ser differ diff --git a/src/test/resources/org/hedgecode/snooker/json/JsonOngoingMatchesTest.ser b/src/test/resources/org/hedgecode/snooker/json/JsonOngoingMatchesTest.ser index a94696a..6094761 100644 Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonOngoingMatchesTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonOngoingMatchesTest.ser differ diff --git a/src/test/resources/org/hedgecode/snooker/json/JsonPlayerTest.json b/src/test/resources/org/hedgecode/snooker/json/JsonPlayerTest.json index fe2481a..b11ae61 100644 --- a/src/test/resources/org/hedgecode/snooker/json/JsonPlayerTest.json +++ b/src/test/resources/org/hedgecode/snooker/json/JsonPlayerTest.json @@ -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 diff --git a/src/test/resources/org/hedgecode/snooker/json/JsonPlayerTest.ser b/src/test/resources/org/hedgecode/snooker/json/JsonPlayerTest.ser index e95ccd5..55712f3 100644 Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonPlayerTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonPlayerTest.ser differ diff --git a/src/test/resources/org/hedgecode/snooker/json/JsonPlayersTest.json b/src/test/resources/org/hedgecode/snooker/json/JsonPlayersTest.json index fc6fb5c..95e1abc 100644 --- a/src/test/resources/org/hedgecode/snooker/json/JsonPlayersTest.json +++ b/src/test/resources/org/hedgecode/snooker/json/JsonPlayersTest.json @@ -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 diff --git a/src/test/resources/org/hedgecode/snooker/json/JsonPlayersTest.ser b/src/test/resources/org/hedgecode/snooker/json/JsonPlayersTest.ser index 9a9046e..a1d09f2 100644 Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonPlayersTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonPlayersTest.ser differ diff --git a/src/test/resources/org/hedgecode/snooker/json/JsonRankingTest.ser b/src/test/resources/org/hedgecode/snooker/json/JsonRankingTest.ser index 9a4c4ca..e3ae79b 100644 Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonRankingTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonRankingTest.ser differ diff --git a/src/test/resources/org/hedgecode/snooker/json/JsonRankingsTest.ser b/src/test/resources/org/hedgecode/snooker/json/JsonRankingsTest.ser index 026534c..0417587 100644 Binary files a/src/test/resources/org/hedgecode/snooker/json/JsonRankingsTest.ser and b/src/test/resources/org/hedgecode/snooker/json/JsonRankingsTest.ser differ