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.

BeginnerShowcase (no instructions)4 hours528

Things used in this project

Hardware components

Amazon Echo
Amazon Alexa Amazon Echo
×1

Software apps and online services

Alexa Skills Kit
Amazon Alexa Alexa Skills Kit
AWS Lambda
Amazon Web Services AWS Lambda

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

11 projects • 11 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

Add projectSign up / Login