Brian Cottrell
Published © Apache-2.0

Dino List

When asked, Dino List will randomly present you with a dinosaur species and provide a brief description.

EasyShowcase (no instructions)4 hours199

Things used in this project

Story

Read more

Code

index.js

JavaScript
AWS Lambda function for Dino List
/**
 * 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.

Credits

Brian Cottrell

Brian Cottrell

8 projects • 7 followers
I am a software developer with a background in physics and low level programming and I am currently focused on web and mobile development.

Comments