/**
* Dino List
*/
/**
* App ID for the skill
*/
var APP_ID = 'amzn1.ask.skill.a340ffac-473b-4ab5-8ae2-13184fe7f4bd';
var https = require('https');
/**
* The AlexaSkill Module that has the AlexaSkill prototype and helper functions
*/
var AlexaSkill = require('./AlexaSkill');
/**
* URL prefix to download history content from Wikipedia
*/
var urlPrefix = 'https://api.idolondemand.com/1/api/sync/querytextindex/v1?apikey=66c1a05f-e956-426f-a0e0-2c2f3756423f&max_page_results=1&summary=quick&text=';
/**
* Variable defining number of events to be read at one time
*/
var paginationSize = 3;
/**
* Variable defining the length of the delimiter between events
*/
var delimiterSize = 2;
/**
* DinosaurSkill is a child of AlexaSkill.
* To read more about inheritance in JavaScript, see the link below.
*
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript#Inheritance
*/
var DinosaurSkill = function() {
AlexaSkill.call(this, APP_ID);
};
// Extend AlexaSkill
DinosaurSkill.prototype = Object.create(AlexaSkill.prototype);
DinosaurSkill.prototype.constructor = DinosaurSkill;
DinosaurSkill.prototype.eventHandlers.onSessionStarted = function (sessionStartedRequest, session) {
console.log("DinosaurSkill onSessionStarted requestId: " + sessionStartedRequest.requestId
+ ", sessionId: " + session.sessionId);
// any session init logic would go here
};
DinosaurSkill.prototype.eventHandlers.onLaunch = function (launchRequest, session, response) {
console.log("DinosaurSkill onLaunch requestId: " + launchRequest.requestId + ", sessionId: " + session.sessionId);
getWelcomeResponse(response);
};
DinosaurSkill.prototype.eventHandlers.onSessionEnded = function (sessionEndedRequest, session) {
console.log("onSessionEnded requestId: " + sessionEndedRequest.requestId
+ ", sessionId: " + session.sessionId);
// any session cleanup logic would go here
};
DinosaurSkill.prototype.intentHandlers = {
"GetFirstEventIntent": function (intent, session, response) {
handleFirstEventRequest(intent, session, response);
},
"GetNextEventIntent": function (intent, session, response) {
handleNextEventRequest(intent, session, response);
},
"AMAZON.HelpIntent": function (intent, session, response) {
var speechText = "With Dino List, you can learn fatcs about various species of dinosaur. For example, you could say find me a dinosaur, or you can say exit.";
var repromptText = "Would you like me to find a dinosaur?";
var speechOutput = {
speech: speechText,
type: AlexaSkill.speechOutputType.PLAIN_TEXT
};
var repromptOutput = {
speech: repromptText,
type: AlexaSkill.speechOutputType.PLAIN_TEXT
};
response.ask(speechOutput, repromptOutput);
},
"AMAZON.StopIntent": function (intent, session, response) {
var speechOutput = {
speech: "Goodbye",
type: AlexaSkill.speechOutputType.PLAIN_TEXT
};
response.tell(speechOutput);
},
"AMAZON.CancelIntent": function (intent, session, response) {
var speechOutput = {
speech: "Goodbye",
type: AlexaSkill.speechOutputType.PLAIN_TEXT
};
response.tell(speechOutput);
}
};
/**
* Function to handle the onLaunch skill behavior
*/
function getWelcomeResponse(response) {
// If we wanted to initialize the session to have some attributes we could add those here.
var cardTitle = "Welcome to Dino List";
var repromptText = "With Dino List, you can learn fatcs about various species of dinosaur. For example, you could say find me a dinosaur, or you can say exit.";
var speechText = "<p>Would you like me to find a dinosaur?</p>";
var cardOutput = "Would you like me to find a dinosaur?";
// If the user either does not reply to the welcome message or says something that is not
// understood, they will be prompted again with this text.
var speechOutput = {
speech: "<speak>" + speechText + "</speak>",
type: AlexaSkill.speechOutputType.SSML
};
var repromptOutput = {
speech: repromptText,
type: AlexaSkill.speechOutputType.PLAIN_TEXT
};
response.askWithCard(speechOutput, repromptOutput, cardTitle, cardOutput);
}
/**
* Gets a poster prepares the speech to reply to the user.
*/
function handleFirstEventRequest(intent, session, response) {
var repromptText = "Would you like me to find you a dinosaur?";
var cardContent = "";
var cardTitle = "First dinosaur.";
getJsonEventsFromWikipedia(function (summary) {
var speechText = "";
if (summary.length == 0) {
speechText = "There is a problem connecting to the internet at this time. Please try again later.";
cardContent = speechText;
response.tell(speechText);
} else {
cardContent = summary;
speechText = "<p>" + summary + "</p> ";
speechText = speechText + "<p>Would you like me to find another dinosaur?</p>";
var speechOutput = {
speech: "<speak>" + speechText + "</speak>",
type: AlexaSkill.speechOutputType.SSML
};
var repromptOutput = {
speech: repromptText,
type: AlexaSkill.speechOutputType.PLAIN_TEXT
};
response.askWithCard(speechOutput, repromptOutput, cardTitle, cardContent);
}
});
}
/**
* Gets a poster prepares the speech to reply to the user.
*/
function handleNextEventRequest(intent, session, response) {
var repromptText = "Would you like me to find you a dinosaur?";
var cardContent = "";
var cardTitle = "Next dinosaur.";
getJsonEventsFromWikipedia(function (summary) {
var speechText = "";
if (summary.length == 0) {
speechText = "There is a problem connecting to the internet at this time. Please try again later.";
cardContent = speechText;
response.tell(speechText);
} else {
cardContent = summary;
speechText = "<p>" + summary + "</p> ";
speechText = speechText + "<p>Would you like me to find another dinosaur?</p>";
var speechOutput = {
speech: "<speak>" + speechText + "</speak>",
type: AlexaSkill.speechOutputType.SSML
};
var repromptOutput = {
speech: repromptText,
type: AlexaSkill.speechOutputType.PLAIN_TEXT
};
response.askWithCard(speechOutput, repromptOutput, cardTitle, cardContent);
}
});
}
var dinosaurList = [
"Aardonyx",
"Abelisaurus",
"Abrictosaurus",
"Abrosaurus",
"Abydosaurus",
"Acanthopholis",
"Achelousaurus",
"Acheroraptor",
"Achillesaurus",
"Achillobator",
"Acristavus",
"Acrocanthosaurus",
"Acrotholus",
"Adamantisaurus",
"Adasaurus",
"Adelolophus",
"Adeopapposaurus",
"Aegyptosaurus",
"Aeolosaurus",
"Aepisaurus",
"Aerosteon",
"Afrovenator",
"Agilisaurus",
"Agnosphitys",
"Agujaceratops",
"Agustinia",
"Ahshislepelta",
"Ajancingenia",
"Ajkaceratops",
"Alamosaurus",
"Alaskacephale",
"Albalophosaurus",
"Albertaceratops",
"Albertadromeus",
"Albertonykus",
"Albertosaurus",
"Albinykus",
"Alcovasaurus",
"Alectrosaurus",
"Aletopelta",
"Algoasaurus",
"Alioramus",
"Allosaurus",
"Alnashetri",
"Alocodon",
"Altirhinus",
"Altispinax",
"Alvarezsaurus",
"Alwalkeria",
"Alxasaurus",
"Amargasaurus",
"Amargastegos",
"Amargatitanis",
"Amazonsaurus",
"Ammosaurus",
"Ampelosaurus",
"Amphicoelias",
"Amtocephale",
"Amurosaurus",
"Amygdalodon",
"Anabisetia",
"Anasazisaurus",
"Anchiceratops",
"Anchiornis",
"Anchisaurus",
"Andesaurus",
"Andhrasaurus",
"Angolatitan",
"Angulomastacator",
"Aniksosaurus",
"Animantarx",
"Ankylosaurus",
"Anodontosaurus",
"Anoplosaurus",
"Anserimimus",
"Antarctopelta",
"Antarctosaurus",
"Antetonitrus",
"Anzu",
"Aoniraptor",
"Aorun",
"Apatoraptor",
"Apatosaurus",
"Appalachiosaurus",
"Aquilops",
"Aragosaurus",
"Aralosaurus",
"Archaeoceratops",
"Archaeodontosaurus",
"Archaeornithoides",
"Archaeornithomimus",
"Arcovenator",
"Arcusaurus",
"Arenysaurus",
"Argentinosaurus",
"Argyrosaurus",
"Aristosuchus",
"Arkharavia",
"Arrhinoceratops",
"Arstanosaurus",
"Asiaceratops",
"Asiatosaurus",
"Astrodon",
"Astrophocaudia",
"Asylosaurus",
"Atacamatitan",
"Atlantosaurus",
"Atlasaurus",
"Atlascopcosaurus",
"Atrociraptor",
"Atsinganosaurus",
"Aublysodon",
"Aucasaurus",
"Augustynolophus",
"Auroraceratops",
"Aurornis",
"Australodocus",
"Australovenator",
"Austrocheirus",
"Austroposeidon",
"Austroraptor",
"Austrosaurus",
"Avaceratops",
"Aviatyrannis",
"Avimimus",
"Bactrosaurus",
"Bagaceratops",
"Bagaraatan",
"Bahariasaurus",
"Bainoceratops",
"Balaur",
"Balochisaurus",
"Bambiraptor",
"Banji",
"Baotianmansaurus",
"Barapasaurus",
"Barilium",
"Barosaurus",
"Barrosasaurus",
"Barsboldia",
"Baryonyx",
"Batyrosaurus",
"Baurutitan",
"Becklespinax",
"Beipiaognathus",
"Beipiaosaurus",
"Beishanlong",
"Bellusaurus",
"Berberosaurus",
"Betasuchus",
"Bicentenaria",
"Bienosaurus",
"Bihariosaurus",
"Bissektipelta",
"Bistahieversor",
"Blasisaurus",
"Blikanasaurus",
"Bolong",
"Bonapartenykus",
"Bonatitan",
"Bonitasaura",
"Borealosaurus",
"Boreonykus",
"Borogovia",
"Bothriospondylus",
"Brachiosaurus",
"Brachyceratops",
"Brachylophosaurus",
"Brachypodosaurus",
"Brachytrachelopan",
"Bradycneme",
"Brasilotitan",
"Bravoceratops",
"Breviceratops",
"Brohisaurus",
"Brontomerus",
"Bruhathkayosaurus",
"Buitreraptor",
"Byronosaurus",
"Caenagnathasa",
"Caenagnathus",
"Calamosaurus",
"Calamospondyls",
"Callovosauru",
"Camarasaurus",
"Camarillaaurus",
"Camelotia",
"Camposaurus",
"Camptosaurus",
"Campylodniscus",
"Canardia",
"Carcharodntosaurus",
"Cardiodon",
"Carnotaurus",
"Caseosaurus",
"Cathartesaura",
"Cathetosaurs",
"Caudipteryx",
"Cedarosaurs",
"Cedarpelta",
"Cedrorestes",
"Centrosaurs",
"Cerasinops",
"Ceratonyus",
"Ceratops",
"Ceratosaurus",
"Cetiosaurisus",
"Cetiosaurus",
"Changchunsaurs",
"Changyuraptor",
"Chaoyangsauru",
"Charonosauru",
"Chasmosaurs",
"Chebsaurus",
"Chialingosauus",
"Chiayusaurus",
"Chilantaisarus",
"Chilesaurus",
"Chindesaurus",
"Chingkankousaurus",
"Chinshakiangoaurus",
"Chirostenotes",
"Chondrosteosauus",
"Chromogisaurus",
"Chuandongocoelrus",
"Chuanjiesauus",
"Chuanqilong",
"Chubutisaurus",
"Chungkingosauru",
"Chuxiongsaurus",
"Cionodon",
"Citipati",
"Claosaurus",
"Clasmodosaurus",
"Coahuilacertops",
"Coelophysis",
"Coeluroies",
"Coelurus",
"Colepiocephale",
"Coloradisauru",
"Comahuesaurus",
"Compsognathu",
"Compsosuchus",
"Concavenator",
"Conchoraptor",
"Condorraptor",
"Coronosaurus",
"Corythosaurs",
"Craspedodon",
"Craterosaurus",
"Crichtonpelta",
"Crichtonsaurus",
"Cristatusaurs",
"Cruxicheiros",
"Cryolophosauus",
"Cryptosarus",
"Cumnoria",
"Daanosaurus",
"Dacentrurus",
"Daemonosauus",
"Dahalokel",
"Dakotadon",
"Dakotaraptor",
"Dandakosaurus",
"Dashanpusaurus",
"Daspletosarus",
"Datanglong",
"Datonglong",
"Datousauru",
"Daxiatitan",
"Deinocheiru",
"Deinonychus",
"Delapparenti",
"Deltadromeus",
"Demandasauru",
"Denversaurus",
"Diabloceratops",
"Diamantinsaurus",
"Diclonius",
"Dicraesaurus",
"Dilong",
"Dilophosarus",
"Dinodocus",
"Diplodocus",
"Diplotomodon",
"Dolichosuchu",
"Dongbeititan",
"Dongyangopelta",
"Dongyangsaurus",
"Draconyx",
"Dracopelta",
"Dracoraptor",
"Dracovenator",
"Dreadnoghtus",
"Drinker",
"Dromaeosauroies",
"Dromaeosauru",
"Drusilasaua",
"Dryosaurus",
"Dryptosauroies",
"Dryptosaurus",
"Dubreuilloaurus",
"Duriatitan",
"Duriavenator",
"Dyoplosaurus",
"Dysalotoaurus",
"Dysganus",
"Dyslocosauru",
"Dystrophaus",
"Echinodon",
"Edmontonia",
"Edmontosurus",
"Efraasia",
"Einiosaurus",
"Ekrixinatsaurus",
"Elaltitan",
"Elaphrosauus",
"Elmisauru",
"Elopteryx",
"Elrhazosauus",
"Emausaurus",
"Embasaurus",
"Enigmosaurus",
"Eoabelisaurs",
"Eocarchaia",
"Eocursor",
"Eodromaes",
"Eolambia",
"Eomamenchisurus",
"Eoplophyis",
"Eoraptor",
"Eosinoptery",
"Eotrachodon",
"Eotriceratps",
"Eotyrannus",
"Eousdryosaurus",
"Epachthosaurus",
"Epichirostenoes",
"Epidexiptryx",
"Equijubus",
"Erectous",
"Erketu",
"Erliansaurus",
"Erlikosaurus",
"Eshanosauru",
"Eucamerotus",
"Eucercosaurus",
"Eucnemesarus",
"Euhelopus",
"Euoplocephals",
"Euronychodon",
"Europasauus",
"Europelta",
"Euskelosaurus",
"Eustreptopondylus",
"Falcarius",
"Fendusaurus",
"Ferganasaurus",
"Ferganastegos",
"Ferganocephale",
"Foraminacephal",
"Fosteroventor",
"Fruitadens",
"Fukuiraptor",
"Fukuisaurus",
"Fukuivenatr",
"Fukuititn",
"Fulengia",
"Fulgurotherum",
"Fusuisaurus",
"Futalognkoaurus",
"Galeamopus",
"Gallimimus",
"Galveosaurus",
"Gannansaurus",
"Ganzhousaurus",
"Gargoyleosarus",
"Garudimimu",
"Gasosaurus",
"Gasparinsaura",
"Gastonia",
"Geminiraptr",
"Genusaurus",
"Genyodectes",
"Geranosaurus",
"Gideonmantelli",
"Giganotosauru",
"Gigantoraptor",
"Gigantosaurus",
"Gigantspinosauus",
"Gilmoreosaurs",
"Giraffatitan",
"Glacialisurus",
"Glishades",
"Glyptodontoplta",
"Gobiceratos",
"Gobisauru",
"Gobititan",
"Gobivenator",
"Gojirasaurus",
"Gondwanatita",
"Gongbusaurus",
"Gongpoquansauru",
"Gongxianosarus",
"Gorgosaurus",
"Goyocephale",
"Graciliceratos",
"Graciliraptr",
"Gravitholus",
"Gryphoceatops",
"Gryponyx",
"Gryposaurus",
"Guaibasarus",
"Gualicho",
"Guanlong",
"Hadrosaurus",
"Haestasauus",
"Hagryphus",
"Halticosauus",
"Hanssuesia",
"Haplocanthosurus",
"Haplocheirs",
"Harpmimus",
"Haya_(dinosaur)",
"Helioceratops",
"Heptasteornis",
"Herrerasaurus",
"Hesperonychus",
"Hesperosaurus",
"Heterodontosarus",
"Hexinlusarus",
"Heyuannia",
"Hierosauru",
"Hippodraco",
"Histriasaurus",
"Homalocephale",
"Hoplitosaurus",
"Horshamosaurs",
"Huabeisaurus",
"Hualianceratps",
"Huanansaurus",
"Huanghetitan",
"Huangshanlong",
"Huaxiagnathus",
"Huayangosauus",
"Hudiesaurus",
"Huehuecanauhtus",
"Hungarosauru",
"Hylaeosaurus",
"Hypacrosaurus",
"Hypselosaurus",
"Hypselospnus",
"Hypsibema",
"Hypsilophodon",
"Ichthyovenator",
"Ignavusaurus",
"Iguanacolossus",
"Iguanodon",
"Iliosuchus",
"Ilokelesia",
"Incisivosaurus",
"Indosaurus",
"Indosuchus",
"Inosaurus",
"Irritator",
"Isanosaurus",
"Ischioceratops",
"Isisaurus",
"Itemirus",
"Iuticosaurus",
"Jainosaurus",
"Jaklapallisaurus",
"Janenschia",
"Jaxartosaurus",
"Jeholosaurus",
"Jeyawati",
"Jianchangosaurus",
"Jiangjunosaurus",
"Jiangshanosaurus",
"Jiangxisaurus",
"Jinfengopteryx",
"Jingshanosaurus",
"Jintasaurus",
"Jinzhousaurus",
"Jiutaisaurus",
"Jobaria",
"Jubbulpuria",
"Judiceratops",
"Juratyrant",
"Juravenator",
"Kaatedocus",
"Kaijiangosaurus",
"Kakuru",
"Kangnasaurus",
"Karongasaurus",
"Katepensaurus",
"Kayentavenator",
"Kazaklambia",
"Kelmayisaurus",
"Kentrosaurus",
"Kerberosaurus",
"Khetranisaurus",
"Kileskus",
"Kinnareemimus",
"Kol_(dinosaur)",
"Komlosaurus",
"Koparion",
"Koreaceratops",
"Koreanosaurus",
"Koshisaurus",
"Kosmoceratops",
"Kotasaurus",
"Koutalisaurus",
"Kritosaurus",
"Kryptops",
"Kukufeldia",
"Kulceratops",
"Kulindadromeus",
"Kunbarrasaurus",
"Kundurosaurus",
"Labocania",
"Laevisuchus",
"Lambeosaurus",
"Lametasaurus",
"Lamplughsaura",
"Lanzhousaurus",
"Laosaurus",
"Lapampasaurus",
"Laplatasaurus",
"Lapparentosaurus",
"Laquintasaura",
"Latirhinus",
"Leaellynasaura",
"Leinkupal",
"Leonerasaurus",
"Lepidus_(dinosaur)",
"Leptoceratops",
"Leptorhynchos",
"Leshansaurus",
"Lesothosaurus",
"Lessemsaurus",
"Levnesovia",
"Lexovisaurus",
"Leyesaurus",
"Liaoceratops",
"Liaoningosaurus",
"Ligabueino",
"Ligabuesaurus",
"Liliensternus",
"Limaysaurus",
"Limusaurus",
"Linhenykus",
"Linheraptor",
"Linhevenator",
"Lirainosaurus",
"Liubangosaurus",
"Lohuecotitan",
"Loncosaurus",
"Lophorhothon",
"Lophostropheus",
"Loricatosaurus",
"Loricosaurus",
"Losillasaurus",
"Lourinhanosaurus",
"Lourinhasaurus",
"Luanchuanraptor",
"Lufengosaurus",
"Luoyanggia",
"Lurdusaurus",
"Lusitanosaurus",
"Lusotitan",
"Lycorhinus",
"Lythronax",
"Machairasaurus",
"Machairoceratops",
"Macrogryphosaurus",
"Macrurosaurus",
"Magnapaulia",
"Magnirostris",
"Magnosaurus",
"Magyarosaurus",
"Mahakala",
"Maiasaura",
"Majungasaurus",
"Malarguesaurus",
"Malawisaurus",
"Maleevus",
"Mamenchisaurus",
"Manidens",
"Mandschurosaurus",
"Mantellisaurus",
"Mapusaurus",
"Marisaurus",
"Marshosaurus",
"Martharaptor",
"Masiakasaurus",
"Massospondylus",
"Maxakalisaurus",
"Medusaceratops",
"Megalosaurus",
"Megaraptor",
"Mei_(dinosaur)",
"Melanorosaurus",
"Mendozasaurus",
"Mercuriceratops",
"Meroktenos",
"Metriacanthosaurus",
"Microceratus",
"Microcoelus",
"Microhadrosaurus",
"Micropachycephalosaurus",
"Microraptor",
"Microvenator",
"Minmi_(dinosaur)",
"Miragaia",
"Mirischia",
"Mochlodon",
"Mongolosaurus",
"Monkonosaurus",
"Monoclonius",
"Monolophosaurus",
"Mononykus",
"Montanoceratops",
"Morelladon",
"Morinosaurus",
"Morrosaurus",
"Mosaiceratops",
"Murusraptor",
"Mussaurus",
"Muttaburrasaurus",
"Muyelensaurus",
"Mymoorapelta",
"Naashoibitosaurus",
"Nambalia",
"Nankangia",
"Nanningosaurus",
"Nanosaurus",
"Nanshiungosaurus",
"Nanuqsaurus",
"Nanyangosaurus",
"Narambuenatitan",
"Nasutoceratops",
"Natronasaurus",
"Nebulasaurus",
"Nedcolbertia",
"Neimongosaurus",
"Nemegtomaia",
"Nemegtosaurus",
"Neosodon",
"Neovenator",
"Neuquenraptor",
"Neuquensaurus",
"Nigersaurus",
"Ningyuansaurus",
"Niobrarasaurus",
"Nipponosaurus",
"Noasaurus",
"Nodocephalosaurus",
"Nodosaurus",
"Nomingia",
"Nopcsaspondylus",
"Normanniasaurus",
"Nothronychus",
"Notoceratops",
"Notocolossus",
"Notohypsilophodon",
"Nqwebasaurus",
"Nuthetes",
"Ohmdenosaurus",
"Ojoraptorsaurus",
"Olorotitan",
"Omeisaurus",
"Oplosaurus",
"Orkoraptor",
"Ornithodesmus",
"Ornitholestes",
"Ornithomimoides",
"Ornithomimus",
"Ornithopsis",
"Orodromeus",
"Orthogoniosaurus",
"Orthomerus",
"Oryctodromeus",
"Osmakasaurus",
"Ostafrikasaurus",
"Othnielia",
"Othnielosaurus",
"Otogosaurus",
"Ouranosaurus",
"Overosaurus",
"Oviraptor",
"Owenodon",
"Oxalaia",
"Ozraptor",
"Pachycephalosaurus",
"Pachyrhinosaurus",
"Pachysuchus",
"Padillasaurus",
"Pakisaurus",
"Palaeoscincus",
"Paludititan",
"Pampadromaeus",
"Pamparaptor",
"Panamericansaurus",
"Panguraptor",
"Panoplosaurus",
"Panphagia",
"Pantydraco",
"Paralititan",
"Paranthodon",
"Pararhabdodon",
"Parasaurolophus",
"Parksosaurus",
"Paronychodon",
"Parrosaurus",
"Parvicursor",
"Patagonykus",
"Patagosaurus",
"Pawpawsaurus",
"Pectinodon",
"Pedopenna",
"Pegomastax",
"Peishansaurus",
"Pelecanimimus",
"Pellegrinisaurus",
"Peloroplites",
"Pelorosaurus",
"Penelopognathus",
"Pentaceratops",
"Petrobrasaurus",
"Phaedrolosaurus",
"Philovenator",
"Phuwiangosaurus",
"Phyllodon",
"Piatnitzkysaurus",
"Picrodon",
"Pinacosaurus",
"Pisanosaurus",
"Pitekunsaurus",
"Piveteausaurus",
"Planicoxa",
"Plateosauravus",
"Plateosaurus",
"Platyceratops",
"Plesiohadros",
"Pneumatoraptor",
"Podokesaurus",
"Poekilopleuron",
"Polacanthus",
"Polyonax",
"Ponerosteus",
"Pradhania",
"Prenocephale",
"Prenoceratops",
"Priconodon",
"Priodontognathus",
"Proa_(dinosaur)",
"Probrachylophosaurus",
"Probactrosaurus",
"Proceratosaurus",
"Procompsognathus",
"Prodeinodon",
"Propanoplosaurus",
"Prosaurolophus",
"Protarchaeopteryx",
"Protoceratops",
"Protognathosaurus",
"Protohadros",
"Psittacosaurus",
"Pteropelyx",
"Pterospondylus",
"Puertasaurus",
"Pukyongosaurus",
"Pulanesaura",
"Pycnonemosaurus",
"Pyroraptor",
"Qantassaurus",
"Qianzhousaurus",
"Qiaowanlong",
"Qijianglong",
"Qinlingosaurus",
"Qingxiusaurus",
"Qiupalong",
"Quaesitosaurus",
"Quetecsaurus",
"Quilmesaurus",
"Rahiolisaurus",
"Rajasaurus",
"Rapator",
"Rapetosaurus",
"Raptorex",
"Ratchasimasaurus",
"Rativates",
"Rayososaurus",
"Rebbachisaurus",
"Regaliceratops",
"Regnosaurus",
"Rhabdodon",
"Rhoetosaurus",
"Riabininohadros",
"Richardoestesia",
"Rinchenia",
"Rinconsaurus",
"Riojasaurus",
"Rocasaurus",
"Rubeosaurus",
"Ruehleia",
"Rugocaudia",
"Rugops",
...
This file has been truncated, please download it to see its full contents.
Comments