-
-
-
\ No newline at end of file
diff --git a/NP_Startpage/main.js b/NP_Startpage/main.js
deleted file mode 100644
index bb2640e1..00000000
--- a/NP_Startpage/main.js
+++ /dev/null
@@ -1,18 +0,0 @@
-function date()
- {
- var a = Date.now();
- var b = new Date(a);
- var time_options = {
- hour: 'numeric',
- minute: 'numeric',
- hour12: true
- };
- var date_options = {
- dateStyle: 'long'
- }
- var f = b.toLocaleTimeString('en-US', time_options)
- var g = b.toLocaleDateString('en-US',date_options)
- var timeString = g.toLowerCase()+" "+"|"+" "+f.toLowerCase()
- document.getElementById("todaysDate").innerHTML = timeString;
- }
- setInterval(date,1000);
diff --git a/NP_Startpage/pictures/image2.png b/NP_Startpage/pictures/image2.png
deleted file mode 100644
index b9773122..00000000
Binary files a/NP_Startpage/pictures/image2.png and /dev/null differ
diff --git a/NP_Startpage/sampleimage.html b/NP_Startpage/sampleimage.html
deleted file mode 100644
index bf05fea3..00000000
--- a/NP_Startpage/sampleimage.html
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/NP_Startpage/style.css b/NP_Startpage/style.css
deleted file mode 100644
index 5c6c83dd..00000000
--- a/NP_Startpage/style.css
+++ /dev/null
@@ -1,177 +0,0 @@
-body {
- color: white;
- font-family: 'Space Grotesk' sans-serif;
- background: #FED109;
- background: linear-gradient(to right bottom, #089FB7, #66C92D);
- height: 100%;
- margin: 0 0 0 0;
- background-repeat: no-repeat;
- background-attachment: fixed;
-}
-/* Logo and Date and Icons */
-.logo {
- float:left;
- width:242px;
- height:100px;
- margin: 0 0 10px 5px;
- padding: 0 0 0 0;
- justify-content: space-around;
-}
-.date {
- font-size: 17px;
- float: right;
- margin: 10px 50px 0 12px;
- padding: 30px 10px 0 12px;
- vertical-align: auto;
- font-family: 'Space Grotesk';
-}
-.icon {
- height: 30px;
- width: 30px;
- vertical-align: middle;
- padding-bottom: 5px;
-}
-
-/* Card Rows and Float */
-.row {
- margin: 0 0 0 0;
- float: center;
-}
-.row::after {
- content: "";
- display: table;
- clear: both;
-}
-.column {
- float: left;
- justify-content: center;
- width: 22.5%;
- padding: 0 20px 20px 20px;
-}
-.card {
- box-shadow: .2px .2px .2px .2px rgb(7, 7, 7);
- transition: 0.3s;
- padding: 14px 14px;
- background-color: #667E8A;
- text-align: center;
- color: #E5E9EB;
- margin-top: 10%;
- margin-left: 7.5%;
- margin-right: 7.5%;
- border-radius: 2px;
- border-width: 2px;
- border-style: solid;
- border-color: #E5E9EB;
- position: relative;
- font-family: 'Space Grotesk';
- max-width: 100%;
-}
-.card:hover {
- box-shadow: 2px 2px 2px 2px #978c89;
-}
-
-a {
- color: #F8F9FA;
- text-decoration: none;
- transition: .3s;
- font-size: 15px;
- display: block;
- padding-bottom: 5px;
-}
-
-a:hover {
- font-size: 17px;
- color:#00283C;
- text-shadow: .5px .5px .5px .5px rgba(0,0,0,0.2);
-}
-.card_header {
- font-size: 22px;
- font-weight: bold;
- vertical-align: middle;
- float: left;
- margin-bottom: 20px;
-}
-.title {
- margin-top: 15%;
- margin-left: 7%;
- height: 50px;
- position: relative;
- z-index: 1;
- color: #F8F9FA;
- font-size: 30px;
- padding: 8px 8px;
- font-weight: bold;
-}
-.title::before {
- content : "";
- position: absolute;
- left : 10px;
- bottom : 10px;
- height : 1px;
- width : 23%;
- border-bottom:1px solid white;
-}
-
-*,
-*::after,
-*::before {
- margin: 0;
- padding: 0;
- box-sizing: inherit;
-}
-
-/* Picture Styling and Layout*/
-.grid {
- display: grid;
- grid-template-rows: repeat(2, 180px);
- grid-template-columns: repeat(8, 1fr);
- grid-row-start: auto;
- grid-column-start: auto;
- grid-gap: 0px;
- background-position: center;
- align-items: stretch;
-}
-
-.item:nth-child(1) {
- grid-row: 1;
- grid-column: 1 / span 2;
-}
-.item:nth-child(2) {
- grid-row: 1;
- grid-column: 3 / span 1;
-}
-.item:nth-child(3) {
- grid-row: 1 / span 2;
- grid-column: 4 / span 2;
-}
-.item:nth-child(5) {
- grid-row: 1;
- grid-column: 6 / span 3;
-}
-.item:nth-child(6) {
- grid-row: 2;
- grid-column: 1 / span 3;
-}
-.item:nth-child(7) {
- grid-row: 2;
- grid-column: 6 / span 2;
-}
-
-.item:hover {
- transition: 0.8s;
- filter: none;
- -webkit-filter: grayscale(0);
-}
-.item {
- background-position: center;
- filter: gray;
- -webkit-filter: grayscale(1);
- display: flex;
-}
-.grid > .item {
- background-position: center;
- background-repeat: no-repeat;
- background-size: cover;
- object-fit: fill;
- max-height: 100%;
-}
\ No newline at end of file
diff --git a/ScrapPaper.md b/ScrapPaper.md
new file mode 100644
index 00000000..2ce2b233
--- /dev/null
+++ b/ScrapPaper.md
@@ -0,0 +1,13 @@
+Renaissance Dashboard Changes:
+[X] email can be removed
+[X] course name extended
+[ ] check to see if end user allowed to hide columns
+[X] remove enroll to the course date
+[ ] move "last activity completed date" after "attempt start date"
+[X] remove quiz progress
+[ ] New metric add - average percent correct for all quizzes in a given course
+[X] Color Visualizations
+[X] quiz score: less than 85% red, 85-91% light green, 92-100% dark green
+[X] Course progress %: gradient of green starting at 50% (light) to 100% (dark)
+[ ] Default to order by name
+[ ] Question: Group name... A learner can be in multiple groups.. do we know which one(s) will surface?
diff --git a/Scripts/API_Tests/js_linter.js b/Scripts/API_Tests/js_linter.js
new file mode 100644
index 00000000..5aff4453
--- /dev/null
+++ b/Scripts/API_Tests/js_linter.js
@@ -0,0 +1,932 @@
+DEBUG// @param input fields supplied in the recipe step, as an object
+// @return object matching the output schema
+// Eg: Code for returning time zone for an IP address
+/*
+const fetch = require("node-fetch")
+*/
+
+exports.main = async ({ user_email }) => {
+ let all_domains = [
+ '@knowledgestate.edu',
+ '@ciaml.com',
+ '@nwscc.edu',
+ '@jsou.edu',
+ '@usiu.ac.ke',
+ '@va.gov',
+ '@southtexascollege.edu',
+ '@tulsatech.edu',
+ '@jibc.ca',
+ '@gmu.edu',
+ '@villaneuva.edu',
+ '@bakumodernschool.az',
+ '@uct.edu.pe',
+ '@univesp.br',
+ '@fleming.edu.pe',
+ '@coam.org',
+ '@lu.edu.qa',
+ '@glit.edu',
+ '@ecas.cl',
+ '@lcctc.edu',
+ '@aivancity.ai',
+ '@milaninstitute.edu',
+ '@albertomottesiuniversity.com',
+ '@udaff.edu.pe',
+ '@umfst.ro',
+ '@culinaryinstitute.edu',
+ '@evcc.edu',
+ '@npcollege.edu',
+ '@sec.edu',
+ '@cdm.edu.ph',
+ '@uniamerica.br',
+ '@institutounitam.edu.mx',
+ '@ihci.edu.hn',
+ '@montreat.edu',
+ '@esprit.tn',
+ '@ustm.ac.mz',
+ '@manareteleman.com',
+ '@rootsschools.education',
+ '@abcarptc.ab.ca',
+ '@delta.edu.sa',
+ '@unicla.edu.mx',
+ '@bsu.edu.az',
+ '@istinye.edu.tr',
+ '@karts.ac.kr',
+ '@ggeedu.com',
+ '@univali.br',
+ '@ubt.edu',
+ '@umb.edu.pl',
+ '@san.edu.pl',
+ '@fapce.edu.br',
+ '@uniftc.edu.br',
+ '@eversity.uasys.edu',
+ '@iqra.edu.pk',
+ '@erzurum.edu.tr',
+ '@unimoron.edu.ar',
+ '@law.lu.se',
+ '@ram.ac.uk',
+ '@cicollege.com',
+ '@stonybrook.edu',
+ '@usal.edu.ar',
+ '@macohs.edu',
+ '@esprit.tn',
+ '@iplacex.cl',
+ '@ada.edu.az',
+ '@upt.edu.mx',
+ '@mcm.edu.ph',
+ '@cmar-paca.fr',
+ '@open.ac.mu',
+ '@hpo.education',
+ '@imagecampus.edu.ar',
+ '@hq.a-star.edu.sg',
+ '@careercitycollege.ca',
+ '@ecccpa.org',
+ '@tcsg.edu',
+ '@ab2institute.edu.au',
+ '@umassd.edu',
+ '@pacificrimcollege.com',
+ '@acorn.org.au',
+ '@inap.mx',
+ '@iohahiio.ambe.ca',
+ '@ucleeds.ac.uk',
+ '@fbu.edu.tr',
+ '@colegiovalledecolchagua.cl',
+ '@ccc.edu.mx',
+ '@unisnorte.edu.do',
+ '@eseg.ac.mz',
+ '@assumptionu.ca',
+ '@cji.edu',
+ '@pierce.edu',
+ '@louceluniversity.us',
+ '@thomas.highlandscollege.com',
+ '@gbu.edu.in',
+ '@universitecentrale.net',
+ '@muhc.ca',
+ '@pontotoctech.edu',
+ '@bennett.edu.in',
+ '@cardenalcisneros.es',
+ '@dseu.org',
+ '@centralcoastcollege.edu',
+ '@thebridge.tech',
+ '@hindustanuniv.ac.in',
+ '@mitags.org',
+ '@smartalex.school',
+ '@ttu.edu',
+ '@www.hh.se',
+ '@umassglobal.edu',
+ '@kma.ac.kr',
+ '@unibe.edu.do',
+ '@www.uct.cl',
+ '@uss.cl',
+ '@escp.eu',
+ '@universidadeuropea.com',
+ '@schiller.edu',
+ '@nwciowa.edu',
+ '@ucavila.es',
+ '@uchceu.es',
+ '@uvm.mx',
+ '@unitec.mx',
+ '@ucsm.edu.pe',
+ '@pacificcollege.edu',
+ '@anhanguera.edu.br',
+ '@okan.edu.tr',
+ '@ieu.edu.tr',
+ '@ku.edu.tr',
+ '@maltepe.edu.tr',
+ '@fakeehcollege.edu.sa',
+ '@bmc.edu.sa',
+ '@ajou.ac.kr',
+ '@twc.edu.hk',
+ '@hec.edu',
+ '@ucsal.br',
+ '@esiee.fr',
+ '@iese.edu',
+ '@pua.edu.eg',
+ '@wpia.uj.edu.pl',
+ '@seu.edu.sa',
+ '@umayor.cl',
+ '@biust.ac.bw',
+ '@sorbonne.ae',
+ '@srishtimanipalinstitute.in',
+ '@mctc.edu',
+ '@gtchs.org',
+ '@cspnohio.edu',
+ '@vut.ac.za',
+ '@aurak.ac.ae',
+ '@upn.edu.pe',
+ '@aiep.cl',
+ '@cibertec.edu.pe',
+ '@esc-pau.fr',
+ '@ulima.edu.pe',
+ '@cambridgehealth.edu',
+ '@cayetano.edu.pe',
+ '@stamford.edu',
+ '@sutd.edu.sg',
+ '@unipacuberlandia.com.br',
+ '@mapua.edu.ph',
+ '@aim.edu',
+ '@slmandic.edu.br',
+ '@eccu.edu',
+ '@damien.edu',
+ '@bothouniversity.com',
+ '@sbccollege.ca',
+ '@upsjb.edu.pe',
+ '@uch.edu.pe',
+ '@think.edu.au',
+ '@portal.unimontrer.edu.mx',
+ '@stpauls.br',
+ '@snu.edu.in',
+ '@uvi.edu',
+ '@brighton.ac.uk',
+ '@chs.nihon-u.ac.jp',
+ '@gtc.edu',
+ '@spiruharet.ro',
+ '@ulibertadores.edu.co',
+ '@alfredstate.edu',
+ '@qcc.mass.edu',
+ '@rcgc.edu',
+ '@harpercollege.edu',
+ '@bridgew.edu',
+ '@mmc.edu',
+ '@calstate.edu',
+ '@grinnell.edu',
+ '@uillinois.edu',
+ '@ogeecheetech.edu',
+ '@worwic.edu',
+ '@uhcl.edu',
+ '@misericordia.edu',
+ '@elmhurst.edu',
+ '@law.ac.uk',
+ '@pmi.edu',
+ '@nwtc.edu',
+ '@wm.edu',
+ '@cvcc.edu',
+ '@paine.edu',
+ '@triton.edu',
+ '@upsem.edu',
+ '@wcccd.edu',
+ '@cincinnatistate.edu',
+ '@clevelandcc.edu',
+ '@maryvillecollege.edu',
+ '@tamut.edu',
+ '@utep.edu',
+ '@cccc.edu',
+ '@nccc.edu',
+ '@rcbc.edu',
+ '@dmacc.edu',
+ '@nec.edu',
+ '@kettering.edu',
+ '@kettering.edu',
+ '@lmunet.edu',
+ '@usna.edu',
+ '@trevecca.edu',
+ '@trentu.ca',
+ '@lee.edu',
+ '@cnu.edu',
+ '@oberlin.edu',
+ '@mariacollege.edu',
+ '@umassonline.net',
+ '@fisher.edu',
+ '@uams.edu',
+ '@wbu.edu',
+ '@sagu.edu',
+ '@lewisu.edu',
+ '@utrgv.edu',
+ '@bucks.ac.uk',
+ '@nyls.edu',
+ '@charteroak.edu',
+ '@charteroak.edu',
+ '@sacredheart.edu',
+ '@howardcollege.edu',
+ '@tri-c.edu',
+ '@callutheran.edu',
+ '@hvcc.edu',
+ '@luna.edu',
+ '@southampton.ac.uk',
+ '@savannahtech.edu',
+ '@miami.edu',
+ '@daemen.edu',
+ '@northumbria.ac.uk',
+ '@hamptonu.edu',
+ '@siue.edu',
+ '@shawnee.edu',
+ '@mssu.edu',
+ '@csusb.edu',
+ '@olivetcollege.edu',
+ '@uark.edu',
+ '@athenstech.edu',
+ '@tamiu.edu',
+ '@niagaracollege.ca',
+ '@northampton.edu',
+ '@ju.edu',
+ '@uwa.edu.au',
+ '@athens.edu',
+ '@commnet.edu',
+ '@michener.ca',
+ '@jcu.edu.au',
+ '@fortscott.edu',
+ '@matc.edu',
+ '@uabc.mx',
+ '@wichita.edu',
+ '@csuohio.edu',
+ '@udlap.mx',
+ '@cpp.edu',
+ '@uconn.edu',
+ '@cbchs.org',
+ '@ccsj.edu',
+ '@asutr.edu',
+ '@csupueblo.edu',
+ '@rcps.us',
+ '@jibc.ca',
+ '@rangercollege.edu',
+ '@bcm.tmc.edu',
+ '@forsythtech.edu',
+ '@lesley.edu',
+ '@cbshouston.edu',
+ '@ashland.edu',
+ '@evms.edu',
+ '@ww2.wpunj.edu',
+ '@aum.edu',
+ '@whitworth.edu',
+ '@scad.edu',
+ '@harford.edu',
+ '@parisjc.edu',
+ '@fvtc.edu',
+ '@noc.edu',
+ '@pccua.edu',
+ '@york.ac.uk',
+ '@ric.edu',
+ '@southtexascollege.edu',
+ '@tamagawa.jp',
+ '@waketech.edu',
+ '@cdrewu.edu',
+ '@ua.edu',
+ '@cecil.edu',
+ '@actx.edu',
+ '@mcphs.edu',
+ '@southgatech.edu',
+ '@morton.edu',
+ '@kilgore.edu',
+ '@winthrop.edu',
+ '@uti.edu',
+ '@austincc.edu',
+ '@bc3.edu',
+ '@kysu.edu',
+ '@',
+ '@benedictine.edu',
+ '@edisonohio.edu',
+ '@ccbc.edu',
+ '@delval.edu',
+ '@muskingum.edu',
+ '@monroecollege.edu',
+ '@tamuk.edu',
+ '@st-aug.edu',
+ '@humber.ca',
+ '@curry.edu',
+ '@drake.edu',
+ '@westfield.ma.edu',
+ '@parker.edu',
+ '@roswell.enmu.edu',
+ '@uacch.edu',
+ '@gbcol.edu',
+ '@chattahoocheetech.edu',
+ '@unicsul.br',
+ '@nnmc.edu',
+ '@bowiestate.edu',
+ '@douglascollege.ca',
+ '@madonna.edu',
+ '@louisville.edu',
+ '@ecc.edu',
+ '@epcc.edu',
+ '@tcl.edu',
+ '@atlantic.edu',
+ '@trcc.edu',
+ '@irsc.edu',
+ '@unibocconi.eu',
+ '@ngu.edu',
+ '@angelina.edu',
+ '@coastalbend.edu',
+ '@notredame.edu.au',
+ '@concordia.edu',
+ '@kumc.edu',
+ '@saumag.edu',
+ '@csueastbay.edu',
+ '@lamar.edu',
+ '@gvltec.edu',
+ '@udlap.mx',
+ '@westerntc.edu',
+ '@livingstone.edu',
+ '@nccu.edu',
+ '@pillar.edu',
+ '@mstc.edu',
+ '@zanestate.edu',
+ '@mssm.edu',
+ '@fmarion.edu',
+ '@sandiego.edu',
+ '@columbustech.edu',
+ '@uwa.edu',
+ '@necc.mass.edu',
+ '@apollo.edu',
+ '@sc.edu',
+ '@usc.edu',
+ '@umaryland.edu',
+ '@mccc.edu',
+ '@uq.edu.au',
+ '@roosevelt.edu',
+ '@sdcc.edu',
+ '@wvwc.edu',
+ '@tsu.edu',
+ '@montgomerycollege.edu',
+ '@odessa.edu',
+ '@ottawa.edu',
+ '@uaccb.edu',
+ '@atu.edu',
+ '@bellevue.edu',
+ '@angelo.edu',
+ '@pulaskitech.edu',
+ '@tctc.edu',
+ '@uca.edu',
+ '@fordham.edu',
+ '@piedmontcc.edu',
+ '@brcn.edu',
+ '@fitchburgstate.edu',
+ '@udc.edu',
+ '@wcsu.edu',
+ '@umassmed.edu',
+ '@dcccd.edu',
+ '@rmu.edu',
+ '@waldorf.edu',
+ '@rmu.edu',
+ '@pisd.edu',
+ '@goodwin.edu',
+ '@alvernia.edu',
+ '@wvu.edu',
+ '@nwosu.edu',
+ '@cdu.edu.au',
+ '@cabrini.edu',
+ '@scu.edu.au',
+ '@payneseminary.edu',
+ '@ucumberlands.edu',
+ '@haskell.edu',
+ '@hputx.edu',
+ '@saintpeters.edu',
+ '@georgiancollege.ca',
+ '@alaska.edu',
+ '@madisoncollege.edu',
+ '@gaston.edu',
+ '@stevenson.edu',
+ '@english.takushoku-u.ac.jp',
+ '@bu.edu',
+ '@salford.ac.uk',
+ '@mvcc.edu',
+ '@chowan.edu',
+ '@calbaptist.edu',
+ '@sbuniv.edu',
+ '@pccc.cc.nj.us',
+ '@ni-u.edu',
+ '@clarkstate.edu',
+ '@tamucc.edu',
+ '@wallace.edu',
+ '@usa.edu',
+ '@utmb.edu',
+ '@oc.edu',
+ '@miles.edu',
+ '@morehouse.edu',
+ '@bloomfield.edu',
+ '@smcm.edu',
+ '@cfcc.edu',
+ '@uml.edu',
+ '@villanova.edu',
+ '@confederationcollege.ca',
+ '@pl.hanze',
+ '@cuchicago.edu',
+ '@uapb.edu',
+ '@jbu.edu',
+ '@quinnipiac.edu',
+ '@uthsc.edu',
+ '@dinecollege.edu',
+ '@uthsc.edu',
+ '@iit.edu',
+ '@uaccm.edu',
+ '@coppin.edu',
+ '@bishopg.ac.uk',
+ '@gptc.edu',
+ '@catawba.edu',
+ '@uea.ac.uk',
+ '@cune.edu',
+ '@ysu.edu',
+ '@usnwc.edu',
+ '@qut.edu.au',
+ '@utsa.edu',
+ '@uamont.edu',
+ '@peru.edu',
+ '@ttu.edu',
+ '@utdallas.edu',
+ '@hpu.edu',
+ '@rpi.edu',
+ '@gmu.edu',
+ '@usw.edu',
+ '@derby.ac.uk',
+ '@concord.edu',
+ '@augustatech.edu',
+ '@rmit.edu.au',
+ '@le.ac.uk',
+ '@edgewood.edu',
+ '@ndus.nodak.edu',
+ '@stthom.edu',
+ '@nccommunitycolleges.edu',
+ '@rochester.edu',
+ '@kctcs.edu',
+ '@sanjac.edu',
+ '@atc.edu',
+ '@mcdaniel.edu',
+ '@lacoe.edu',
+ '@cnci.edu.mx',
+ '@cod.edu',
+ '@post.edu',
+ '@maritime.edu',
+ '@vsu.edu',
+ '@lindsey.edu',
+ '@cccua.edu',
+ '@centralgatech.edu',
+ '@mwcc.edu',
+ '@sl.on.ca',
+ '@ccn.ac.uk',
+ '@drexel.edu',
+ '@msj.edu',
+ '@curtin.edu.au',
+ '@northernc.on.ca',
+ '@uafs.edu',
+ '@upaep.mx',
+ '@rccc.edu',
+ '@garrettcollege.edu',
+ '@gwinnetttech.edu',
+ '@mc3.edu',
+ '@lander.edu',
+ '@atlantatech.org',
+ '@ufv.ca',
+ '@holmes.edu.au',
+ '@ccac.edu',
+ '@nobts.edu',
+ '@southernct.edu',
+ '@canterbury.ac.uk',
+ '@olemiss.edu',
+ '@kansaigaidai.ac.jp',
+ '@mville.edu',
+ '@owens.edu',
+ '@sunyjefferson.edu',
+ '@johnstoncc.edu',
+ '@discover.alpenacc.edu',
+ '@lanecollege.edu',
+ '@tku.edu',
+ '@montgomery.edu',
+ '@aamu.edu',
+ '@umassd.edu',
+ '@albanytech.edu',
+ '@umass.edu',
+ '@grcc.edu',
+ '@otterbein.edu',
+ '@csu.edu.au',
+ '@highpoint.edu',
+ '@nsu.edu',
+ '@asumh.edu',
+ '@hocking.edu',
+ '@massbay.edu',
+ '@desu.edu',
+ '@cetys.mx',
+ '@coastalpines.edu',
+ '@govst.edu',
+ '@frederick.edu',
+ '@salus.edu',
+ '@gardner-webb.edu',
+ '@hamilton.edu',
+ '@ut.edu',
+ '@csp.edu',
+ '@ccsu.edu',
+ '@syr.edu',
+ '@middlesex.mass.edu',
+ '@gallaudet.edu',
+ '@saintmarys.edu',
+ '@utulsa.edu',
+ '@nsuok.edu',
+ '@cscc.edu',
+ '@tuskegee.edu',
+ '@alvincollege.edu',
+ '@rustcollege.edu',
+ '@arbor.edu',
+ '@stcc.edu',
+ '@stockton.edu',
+ '@shsu.edu',
+ '@cwidaho.cc',
+ '@urich.edu',
+ '@gia.edu',
+ '@ncat.edu',
+ '@bangor.ac.uk',
+ '@wcjc.edu',
+ '@iona.edu',
+ '@vwu.edu',
+ '@commerce.virginia.edu',
+ '@fhsu.edu',
+ '@duny.edu',
+ '@ccu.edu',
+ '@easternct.edu',
+ '@utoledo.edu',
+ '@towson.edu',
+ '@southark.edu',
+ '@stonehill',
+ '@life.edu',
+ '@davenport.edu',
+ '@linfield.edu',
+ '@witc.edu',
+ '@navajotech.edu',
+ '@adams.edu',
+ '@baycollege.edu',
+ '@halifaxcc.edu',
+ '@mercy.edu',
+ '@southernregional.edu',
+ '@hofstra.edu',
+ '@mercyhurst.edu',
+ '@gannon.edu',
+ '@ollusa.edu',
+ '@ccm.edu',
+ '@oneonta.edu',
+ '@wncc.edu',
+ '@nipissingu.ca',
+ '@dacc.edu',
+ '@rush.edu',
+ '@fmuniv.edu',
+ '@gotoltc.edu',
+ '@cmich.edu',
+ '@shu.edu',
+ '@dt.uh.edu',
+ '@btc.ac.uk',
+ '@csuniv.edu',
+ '@alaskapacific.edu',
+ '@kean.edu',
+ '@gvsu.edu',
+ '@missouristate.edu',
+ '@indianhills.edu',
+ '@fairmontstate.edu',
+ '@hood.edu',
+ '@hartford.edu',
+ '@laverne.edu',
+ '@centralaz.edu',
+ '@evansville.edu',
+ '@fdu.edu',
+ '@sullivan.edu',
+ '@muskegoncc.edu',
+ '@fnu.edu',
+ '@ohio.edu',
+ '@wsutech.edu',
+ '@njcu.edu',
+ '@buffalo.edu',
+ '@sctech.edu',
+ '@adrian.edu',
+ '@grandview.edu',
+ '@lc.edu',
+ '@vinu.edu',
+ '@stclaircollege.ca',
+ '@eacc.edu',
+ '@catholic.edu',
+ '@campbell.edu',
+ '@dbu.edu',
+ '@indianatech.edu',
+ '@wilmington.edu',
+ '@lakelandcc.edu',
+ '@wku.edu',
+ '@uni.edu',
+ '@bowdoin.edu',
+ '@eku.edu',
+ '@cuny.edu',
+ '@wvup.edu',
+ '@hilbert.edu',
+ '@wgu.edu',
+ '@bond.edu.au',
+ '@ecok.edu',
+ '@niu.edu',
+ '@sckans.edu',
+ '@marshall.edu',
+ '@udmercy.edu',
+ '@roguecc.edu',
+ '@salemu.edu',
+ '@umb.edu',
+ '@senecacollege.ca',
+ '@csp.edu',
+ '@usj.edu',
+ '@westgatech.edu',
+ '@moreheadstate.edu',
+ '@desales.edu',
+ '@sau.edu',
+ '@arkansasbaptist.edu',
+ '@riosalado.edu',
+ '@ucmo.edu',
+ '@bsmcon.edu',
+ '@cowley.edu',
+ '@suny.edu',
+ '@luzerne.edu',
+ '@central.edu',
+ '@uarichmountain.edu',
+ '@astate.edu',
+ '@bristolcc.edu',
+ '@rasmussen.edu',
+ '@jwu.edu',
+ '@valpo.edu',
+ '@taylor.edu',
+ '@starkstate.edu',
+ '@csudh.edu',
+ '@mhcc.edu',
+ '@northgatech.edu',
+ '@tulsacc.edu',
+ '@wesleyseminary.edu',
+ '@rdc.ab.ca',
+ '@dur.ac.uk',
+ '@spc.cc.tx.us',
+ '@laniertech.edu',
+ '@coastalcarolina.edu',
+ '@southeasterntech.edu',
+ '@pcom.edu',
+ '@wccnet.edu',
+ '@allencollege.edu',
+ '@csu.edu',
+ '@fairfield.edu',
+ '@elccanada.ca',
+ '@kckcc.edu',
+ '@gwu.edu',
+ '@pfeiffer.edu',
+ '@regent.edu',
+ '@blackhawk.edu',
+ '@umbc.edu',
+ '@usi.edu',
+ '@staffs.ac.uk',
+ '@sjf.edu',
+ '@ecsu.edu',
+ '@ccri.edu',
+ '@bryantstratton.edu',
+ '@ntcc.edu',
+ '@csl.edu',
+ '@northcentralcollege.edu',
+ '@rcgc.edu',
+ '@ctcd.edu',
+ '@owu.edu',
+ '@caldwell.edu',
+ '@northshore.edu',
+ '@gonzaga.edu',
+ '@georgian.edu',
+ '@ufs.ac.za',
+ '@northampton.ac.uk',
+ '@londonmet.ac.uk',
+ '@us.es',
+ '@ulster.ac.uk',
+ '@wtamu.edu',
+ '@edgehill.ac.uk',
+ '@uob.edu.bh',
+ '@pmu.edu.sa',
+ '@ul.ac.za',
+ '@uu.nl',
+ '@hau.gr',
+ '@ntnu.edu',
+ '@psbacademy.edu.sg',
+ '@cuhk.edu.hk',
+ '@uees.edu.ec',
+ '@mdis.edu.sg',
+ '@keiseruniversity.edu',
+ '@leedsbeckett.ac.uk',
+ '@aber.ac.uk',
+ '@beaufortccc.edu',
+ '@uah.es',
+ '@pxl.be',
+ '@kcg.ac.jp',
+ '@sunway.edu.my',
+ '@up.education',
+ '@ime.cmc.osaka-u.ac.jp',
+ '@vu-wien.ac.at',
+ '@duoc.cl',
+ '@sharjah.ac.ae',
+ '@dundee.ac.uk',
+ '@griffith.edu.au',
+ '@ie.edu',
+ '@columbiasouthern.edu',
+ '@hct.ac.ae',
+ '@lakeland.edu',
+ '@mut.ac.za',
+ '@aup.edu',
+ '@centralpenn.edu',
+ '@usiu.ac.ke',
+ '@dobabusiness-school.eu',
+ '@zu.ac.ae',
+ '@tcd.ie',
+ '@nuigalway.ie',
+ '@upslp.edu.mx',
+ '@ug.ac.za',
+ '@uoc.cw',
+ '@uop.edu.jo',
+ '@chubu.ac.jp',
+ '@uni-salzburg.at',
+ '@uantwerpen.be',
+ '@richmond.ac.uk',
+ '@lau.edu.lb',
+ '@ufh.ac.za',
+ '@oru.se',
+ '@uclan.ac.uk',
+ '@leeds.ac.uk',
+ '@uaeu.ac.ae',
+ '@uliege.be',
+ '@lyit.ie',
+ '@manchester.ac.uk',
+ '@abdn.ac.uk',
+ '@cardiff.ac.uk',
+ '@aston.ac.uk',
+ '@lasierra.edu',
+ '@uhk.cz',
+ '@neumann.edu',
+ '@unicatt.it',
+ '@uca.ac.uk',
+ '@up.edu.pe',
+ '@howard.edu',
+ '@cut.ac.za',
+ '@kic.ac.ae',
+ '@qu.edu.qa',
+ '@imperial.ac.uk',
+ '@worcester.ac.uk',
+ '@keele.ac.uk',
+ '@setu.ie',
+ '@sit.ac.nz',
+ '@md.rcm.upr.edu',
+ '@hashogeschool.nl',
+ '@effatuniversity.edu.sa',
+ '@udem.edu.mx',
+ '@bathspa.ac.uk',
+ '@cumbria.ac.uk',
+ '@western sydney.edu.au',
+ '@ed.ac.uk',
+ '@ntu.edu.sg',
+ '@southwales.ac.uk',
+ '@teikyo-u.ac.jp',
+ '@northwood.edu',
+ '@auamed.org',
+ '@westminster.ac.uk',
+ '@lincoln.ac.uk',
+ '@nhlstenden.com',
+ '@fu-berlin.de',
+ '@bristol.ac.uk',
+ '@buid.ac.ae',
+ '@dah.edu.sa',
+ '@uchile.cl',
+ '@uchile.dl',
+ '@spjain.org',
+ '@reading.ac.uk',
+ '@ust.edu.ph',
+ '@nagasaki-u.ac.jp',
+ '@edhec.edu',
+ '@hkct.edu.hk',
+ '@zamorano.edu',
+ '@rocmn.nl',
+ '@pupr.edu',
+ '@upo.es',
+ '@uwl.ac.uk',
+ '@acg.edu',
+ '@sheffield.ac.uk',
+ '@aucegypt.edu',
+ '@ucjc.edu',
+ '@unav.edu',
+ '@buap.mx',
+ '@kaust.edu.sa',
+ '@ual.es',
+ '@beds.ac.uk',
+ '@tess.ac.uk',
+ '@icts.kuleuven.be',
+ '@schoolcraft.edu',
+ '@iadt.ie',
+ '@aud.edu',
+ '@palermo.edu.ar',
+ '@nu.edu.om',
+ '@faytechcc.edu',
+ '@uhasselt.be',
+ '@qmu.ac.uk',
+ '@unirioja.es',
+ '@nescol.ac.uk',
+ '@inter.edu',
+ '@upc.edu.pe',
+ '@uwe.ac.uk',
+ '@web.up.ac.za',
+ '@nebrija.com',
+ '@polyu.edu.hk',
+ '@sthildas.qld.edu.au',
+ '@adu.ac.ae',
+ '@ulacit.ac.cr',
+ '@ucp.pt',
+ '@gcu.ac.uk',
+ '@iesb.br',
+ '@shu.ac.uk',
+ '@albizu.edu',
+ '@uagm.edu',
+ '@pthu.nl',
+ '@ualr.edu',
+ '@aus.edu',
+ '@cput.ac.za',
+ '@unigranrio.edu.br',
+ '@mbrsg.ae',
+ '@colegcymraeg.ac.uk',
+ '@uagrantham.edu',
+ '@adamson.edu.ph',
+ '@daytonacollege.edu',
+ '@unisr.it',
+ '@unimc.it',
+ '@aspire.qa',
+ '@senati.edu.pe',
+ '@segi.edu.my',
+ '@sri.edu.au',
+ '@austinheights.edu.my',
+ '@korea.edu',
+ '@unist.ac.kr',
+ '@saxion.edu',
+ '@pierpont.edu',
+ '@cpce-polyu.edu.hk',
+ '@blueridgectc.edu',
+ '@cranefield.ac.za',
+ '@tamusa.tamus.edu',
+ '@uai.edu.ar',
+ '@mef.edu.tr',
+ '@iie.ac.za',
+ '@accs.edu',
+ '@thechristcollege.edu',
+ '@ucci.edu',
+ '@myptec.org',
+ '@tcsg.edu',
+ '@gibs.co.za',
+ '@dokkyo.ac.jp',
+ '@du.se',
+ '@ku.ac.ae',
+ '@tio.nl',
+ '@udelistmo.edu',
+ '@upana.edu.gt',
+ '@oftc.edu',
+ '@unilavras.edu.br',
+ '@uniamerica.br',
+ '@unicaribe.edu.do',
+ '@uniavan.edu.br',
+ '@smu.ac.za',
+ '@urse.edu.mx',
+ '@sauder.ubc.ca',
+ '@cci-paris-idf.fr',
+ '@wiregrass.edu',
+ '@mcl.edu.ph',
+ '@unipac.br',
+ '@uvm.cl',
+ '@iica.in',
+ '@bbi.catholic.edu.au',
+ '@ucv.edu.pe',
+ '@ine.mx',
+ '@utec.edu.sv',
+ '@bridgevalley.edu',
+ '@cpi.edu',
+ '@fag.edu.br',
+ '@itba.edu.ar',
+ '@umindanao.edu.ph',
+ '@mbsc.edu.sa',
+ ]
+
+ let user_domain = user_email.slice(user_email.indexOf('@'));
+ let domain_found = all_domains.indexOf(user_domain) > -1;
+ return { domain_found };
+}
+
diff --git a/Scripts/API_Tests/temp.md b/Scripts/API_Tests/temp.md
new file mode 100644
index 00000000..e69de29b
diff --git a/te b/te
deleted file mode 100644
index 5c44e088..00000000
--- a/te
+++ /dev/null
@@ -1,5 +0,0 @@
-import pandas
-
-
-def function(args):
- pass
diff --git a/temp.md b/temp.md
deleted file mode 100644
index de21f5c7..00000000
--- a/temp.md
+++ /dev/null
@@ -1,375 +0,0 @@
-
----
-title: 'Creating a BirdNetPi Dashboard in HomeAssistant - Part 1'
-date: 2023-09-30T11:21:55-04:00
-tags: ["homeassistant", "python", "diy"]
-author: "Me"
-showToc: true
-TocOpen: false
-draft: false
-hidemeta: false
-description: 'Learn how to take BirdNET-Pi Detections to create and display entities in HomeAssistant.'
-disableHLJS: true # to disable highlightjs
-disableShare: false
-disableHLJS: false
-hideSummary: false
-searchHidden: true
-ShowReadingTime: true
-ShowBreadCrumbs: true
-ShowPostNavLinks: true
-ShowWordCount: true
-ShowRssButtonInSectionTermList: true
-UseHugoToc: true
-cover:
- image: "birdnet-homeassistant.png"
- alt: "BirdNET-Pi and HomeAssistant: Happier together!"
- caption: "Bring together your BirdNET-Pi setup and display a dashboard in HomeAssistant"
- relative: false # when using page bundles set this to true
- hidden: true # only hide on current single page
----
-
-This is Part One of a Two Part Series. You can find Part Two, [here.]({{}})
-
-**Update: 10/11/2023. A huge thanks to Mastodon User [e_mobile2014](https://mastodon.social/@e_mobil2014) who found a broken link in this guide and pointed out that I never explained how to get the mqtt sensors into HomeAssistant!**
-
-## What you will need
-
-* [BirdNET-Pi](https://github.com/mcguirepr89/BirdNET-Pi)
-* [HomeAssistant](https://www.home-assistant.io/)
-* [AppDaemon](https://appdaemon.readthedocs.io/en/latest/)
-* MQTT Broker (I use [Mosquitto](https://mosquitto.org/))
-
-## Background
-
-In early 2023, at the height of the [Raspberry Pi
-shortage](https://www.tomshardware.com/news/raspberry-pi-availability-analysis) I felt like a king with an extra Rpi laying
-around, not being used. I'm a big fan of any sort of passive intake of information and had been looking around for various
-citizen science-style projects that can capture information from the world around me. Since I'm already running an ADS-B
-antenna with [Flight Aware](https://www.flightaware.com/), I figured this next project would deal with radio
-waves/transmissions. Instead, to my amazement, I discovered [BirdNET-Pi](https://github.com/mcguirepr89/BirdNET-Pi)!
-
-## What is BirdNET-Pi?
-
-In case you didn't click the links above, [BirdNET-Pi](https://github.com/mcguirepr89/BirdNET-Pi) is an app built specifically
-made for Rapsberry Pi devices, that builds off the [BirdNET Framework](https://github.com/kahst/BirdNET-Analyzer). BirdNET is
-one of the most advanced acoustic monitoring tools available for passively monitoring bird diversity populations.
-Where BirdNET-Pi takes it to the next level is the ability to setup an SBC - hopefully enclosed in a waterproof space! - and
-monitor birds in your local environment over time.
-
-I think this project is beyond neat. It runs a bit slow on a Raspberry Pi 3, but overall it runs smoothly. I was even able to
-[contribute a PR to the project](https://github.com/mcguirepr89/BirdNET-Pi/pull/821) in April when I noticed a bug in the
-platform after a hard reset of my Pi.
-
-## BirdNET-PI Notification Setup - MQTT
-
-Once you have BirdNET-Pi up and running, you'll need to head over to the Settings and setup the correct MQTT payloads. Here
-are the possible variables you can pass in an MQTT payload:
-
-* `$sciname`: Scientific Name
-* `$comname`: Common Name
-* `$confidence`: Confidence Score
-* `$confidencepct`: Confidence Score as a percentage (eg. 0.91 => 91)
-* `$listenurl`: A link to the detection
-* `$date`: Date
-* `$time`: Time
-* `$week`: Week
-* `$latitude`: Latitude
-* `$longitude`: Longitude
-* `$cutoff`: Minimum Confidence set in "Advanced Settings"
-* `$sens`: Sigmoid Sensitivity set in "Advanced Settings"
-* `$overlap`: Overlap set in "Advanced Settings"
-* `$flickrimage`: A preview image of the detected species from Flickr. Set your API key below.
-
-For our purposes, we will only be using `$comname, $sciname, $date, $time, $week,` and `$confidence`. However, this entire
-process is extremely customizable, which you'll learn more about in the AppDaemon section. Please expand on it and include
-information that is pertinent to your own uses.
-
-Here is how I've setup my MQTT payload from BirdNET-Pi Settings:
-
-
-
-Here it is in text form:
-
-```none
-Notification Title: $comname,
-Notification Body: $sciname, $date, $time, $week, $confidence
-[ ] Notify each new infrequent species detection (< 5 visits per week)
-[ ] Notify each new species first detection of the day
-[X] Notify each new detection
-[X] Send weekly report
-Minimum time between notifications of the same species (sec): 5
-```
-
-To test my MQTT notifications, I use the iOS client "MQTTool". After signing up, head to "Subscribe" and type `birdnet` as
-the topic and then click Subscribe. If everything is setup correctly and there are birds being recorded by the BirdNET-Pi's
-microphone, you should start seeing those detections in the MQTTool app. If so, fantastic news! Let's move onto AppDaemon.
-
-## AppDaemon Script
-
-Now that we have the Pi communicating via MQTT, it's time to get that information into HomeAssistant. I've shared [the full
-script]({{}}) at the bottom of this page, but let's jump into each
-section. This is not a full tutorial of how to use AppDaemon, but it may help fill in any knowledge gaps with the system.
-
-### Imports
-
-First, we're going to import `time` and `requests`. We're going to use time as a backup to the `$time` component in the
-payload. This can be helpful to see if there delays, or if BirdNET-Pi stopped detecting. We're then going to use requests to
-pull from Wikipedia's API and grab a description for our HomeAssistant Dashboard.
-
-### Class Definition
-
-To start any AppDaemon app, you need to include a Class that is defined in the `apps.yaml` file. This is also where we
-initialize and define the various items that will be used in the remainder of the script.
-
-```python
-class birdnet(adbase.ADBase):
- def initialize(self):
- self.hassapi = self.get_plugin_api("HASS")
- self.adapi = self.get_ad_api()
- self.mqttapi = self.get_plugin_api("MQTT")
- self.birdnet_mqtt = "birdnet"
- self.mqttapi.listen_event(
- self.birdnet_message, "MQTT_MESSAGE", topic=self.birdnet_mqtt
- )
-```
-
-For this script, we need to use a lot of the AppDaemon APIs across more than just HomeAssistant, so we're going to be using
-`ADBase`. By using that, we can initialize the various APIs, which we do in the next 3 lines. In these 3 lines we need to get
-access to HomeAssistant's APIs, AppDaemon's APIs, and MQTT APIs - the first and third items are plugins of AppDaemon, and
-AppDaemon is... well... AppDaemon! Here are a few reference docs:
-
-* [MQTT AppDaemon API](https://appdaemon.readthedocs.io/en/latest/MQTT_API_REFERENCE.html)
-* [HomeAssistant AppDaemon API](https://appdaemon.readthedocs.io/en/latest/HASS_API_REFERENCE.html)
-* [AppDaemon API](https://appdaemon.readthedocs.io/en/latest/AD_API_REFERENCE.html)
-
-These will indispensable to you as you leverage AppDaemon and expand this little script.
-
-Once we have access to that, we need to setup the main topic for MQTT from BirdNET-Pi and finally, what event we are
-listening for that will trigger the functions in the rest of the script. `self.birdnet_mqtt = "birdnet"` is the definition
-for the MQTT topic. Let's breakdown the last line of the class.
-
-Here's a breakdown of each of the items in that last line. You can find the official documentation [here](https://appdaemon.readthedocs.io/en/latest/MQTT_API_REFERENCE.html#appdaemon.plugins.mqtt.mqttapi.Mqtt.listen_event).
-
-* `self.mqttapi.listen_event` - this is what we use in AppDaemon to listen for an MQTT event in order to trigger a function.
-* `self.birdnet_message` - the name of the function you'd like to trigger
-* `"MQTT_MESSAGE"` - The default event in AppDaemon's MQTT API plugin. This is used because MQTT doesn't keep a state in this
- plugin.
-* `topic=self.birdnet_mqtt` - The topic that will be received to trigger the function. Defined on the previous line.
-
-In other words, what we are telling AppDaemon is the following: "When AppDaemon's MQTT API plugin receives a message with the
-topic of 'birdnet', run the function `birdnet_message`."
-
-### birdnet_message Function
-
-#### Part 1: Variables Management
-
-Now we get into our first function of the script. The first portion of this script is splitting up the payload that we
-defined from the BirdNET-Pi UI into individual variables that we can better manage later on. If you test this script out by
-adding `print()` statements at various points, you'll notice that the payload is received with the following json formatting:
-
-```json
-{
- "payload": {
- "data": "data"
- }
-}
-```
-
-As such, we need to look _inside_ the payload to begin grabbing the data. The `pre_split` variable is now just looking at the
-data inside the payload and the rest of the variables take all the date into the payload, split it by the comma, and then
-grab the string by their index. If you remember what [we did above]({{}}) above, you'll see that we have the various BirdNET information at each of the indexes in the AppDaemon script - 0 through 5.
-
-#### Part 2: Re-Publishing MQTT Payloads
-
-This next section is shooting all the variables we just defined back via MQTT. The reason why we do it this way is because we
-need HomeAssistant to grab each of these variables as individual sensors. BirdNET doesn't give us that capability - it's a
-single message with all the information in one. [Here is the documentation from AppDaemon](https://appdaemon.readthedocs.io/en/latest/MQTT_API_REFERENCE.html) on `mqtt_publish`. Later on, I'll show you how to ensure that HomeAssistant takes those topic payloads and adds them as
-entities in your HA setup.
-
-#### Part 3: Wikipedia Sensor
-
-The next eight lines are a fairly straightforward [API call to Wikipedia](https://en.wikipedia.org/api/rest_v1/). We start
-out by passing the `science_name` into the URL. The rest of the flags that we are passing into the URL comes from Wikipedia's
-Docs.
-`url = f"https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles={science_name}"`
-
-Once that's done we call it with `response.get(url)` and format it with `response.json()`. Wikipedia returns the json payload
-with the top level of `query` (which was our action in the url ;) ), and we're looking for the value within that query.
-
-All that's left is to take that query value and push it to HomeAssistant! We can do that with the `self.hassapi.set_state`
-function. Within the parenthesis we define the name of the sensor (`sensor.birdnet_wiki`), what it's state should be (`on`),
-and any attributes associated with the entity. Since we can't assign a long description to the basic status of the entity,
-we're adding an attribute with the key of `description` and the value will be the wikipedia description garnered from the API
-call.
-
-```python
- url = f"https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles={science_name}"
- response = requests.get(url)
- response = response.json()
-
- for value in response['query']['pages']:
- wiki_desc = response['query']['pages'][value]['extract']
- self.hassapi.set_state("sensor.birdnet_wiki", state='on',
- attributes = {"description": wiki_desc})
-
-```
-
-#### Part 4: Generate Picture for Detection (Optional)
-
-This part is optional but I noticed that BirdNET-Pi was already grabbing a Flickr Picture for it's front end, so I took the
-code from the BirdNET code base and adjusted it a bit for my needs. This will work very similarly to the Wikipedia API call,
-the main difference here being that you need an API key for Flickr. You can find more [information here](https://www.flickr.com/services/api/misc.api_keys.html).
-
-Given Flickr's fairly robust API, by passing in the detected bird's common name, we get amazing results from the community of
-various pictures of the same species of bird. Ever since I've set this up, I've not seen a mislabeled picture in my
-dashboard!
-
-The most confusion portion of this section is the `image_url` as you'll notice a bunch of `data["value"]` strings at various
-portions of the URL. The short answer to this is in the previous line with the `data` variable. A successful query has Flickr
-returning a large payload of information. We're specifically using [this](https://www.flickr.com/services/api/flickr.photos.search.html)
-Flickr API endpoint. While you can pass a lot of variables for your needs, if you scroll down, you can see that the example
-response contains multiple photos in a single response. We're passing `per_page=5` to limit some of those response items.
-Left out of that response, though, is a one-stop-shop for a URL to that photo. Thankfully, Flickr can help us put together a
-URL from the data in the response.
-
-{{< box info >}}
-_Note: Full Transparency that I only learned about this after reading through BirdNET-Pi's code base. Full credit goes to
-[mcguirepr89](https://github.com/mcguirepr89). For additional reference, here is Flickr's [official page on construction
-photo image URLS](https://www.flickr.com/services/api/misc.urls.html)_
-{{< /box >}}
-
-With this response, we now have the variables we need to construct the URL to actually render the image. Those variables are:
-Farm ID, Server ID, ID and Secret. I haven't yet looked into why we need "farm" when the official documentation doesn't state
-anything about it.
-
-Almost there! We now do the same as we did with the Wikipedia API response. We create a sensor in HomeAssistant! We're
-calling this sensor `sensor.birdpic`, ensuring the `state=on`, and giving it the attributes of the `image_url` as garnered
-from Flickr.
-
-```python
- headers = {'User-Agent': 'Python_Flickr/1.0'}
- flickr_api = "enter_your_api_key"
- flickr_url = f"https://www.flickr.com/services/rest/?method=flickr.photos.search&api_key={flickr_api}&text={common_name} bird&sort=relevance&per_page=5&media=photos&format=json&nojsoncallback=1"
- flickr_resp = requests.get(url=flickr_url, headers=headers)
- data = flickr_resp.json()["photos"]["photo"][0]
-
- image_url = 'https://farm'+str(data["farm"])+'.static.flickr.com/'+str(data["server"])+'/'+str(data["id"])+'_'+str(data["secret"])+'_n.jpg'
-
- self.hassapi.set_state("sensor.birdpic", state='on',
- attributes={"image": image_url})
-```
-
-## Importing MQTT Sensors into HomeAssistant
-
-Now that we have all the sensors defined and communicating via MQTT, we have one more step to import them into HomeAssistant.
-[This MQTT documentation](https://www.home-assistant.io/integrations/mqtt/) by HomeAssistant is good to read about if you
-need a broker setup. I will not be going over the broker in this tutorial, but may add one in the future. I tend to like the
-yaml configuration for HomeAssistant, so for the sake of this guide, I'll be referencing the [manual configuration of MQTT
-items and sensors](https://www.home-assistant.io/integrations/mqtt/#manual-configured-mqtt-items).
-
-To add the sensors from above, open up your `configuration.yaml` file in your favorite editor. You'll then want to add the
-mqtt platform and domain:
-
-```yaml
-mqtt:
- - { domain }:
-```
-
-For the BirdNet sensors, we will be using a single domain: `sensor`. Feel free to copy and paste my config from below, but
-make sure the names of each entity align with your needs, syntax, and nomenclature/system.
-
-**Full MQTT Sensors in Configuration.yml**
-
-```yaml
-mqtt:
- sensor:
- - name: "Bird Common Name"
- state_topic: "birdnet/sensors/common_name"
- - name: "Bird Science Name"
- state_topic: "birdnet/sensors/science_name"
- - name: "Bird Time Seen"
- state_topic: "birdnet/sensors/time_seen"
- - name: "Bird Date Seen"
- state_topic: "birdnet/sensors/date_seen"
- - name: "Bird Confidence"
- state_topic: "birdnet/sensors/confidence"
- value_template: '{{ (value|float(0) *100) | round(1) }}'
- unit_of_measurement: '%'
-```
-
-You might be looking at the list above and wondering where the Flickr and Wikipedia Description entities are. They were
-already created by the AppDaemon script! Specifically, `self.hassapi.set_state()` function will either update the state for
-an exisiting entity or, if the entity doesn't exist, it will create a new one.
-
-For the rest of the mqtt payloads, we need HomeAssistant to create them as they come in, which is why we add the above
-code block to our HomeAssistant configuration file. To be clear, you _do not_ need to add the Wikipedia and Flickr sensors to
-HA's configuration file!
-
-By this point, you should have successfully created 7 new sensors in HomeAssistant. In Part 2 of this article, we'll take a
-look at Home Assistant, see what these sensors look like, and create a rudimentary dashboard.
-
-## Birdnet AppDaemon Script
-
-```python
-import time
-import requests
-
-
-class birdnet(adbase.ADBase):
- def initialize(self):
- self.hassapi = self.get_plugin_api("HASS")
- self.adapi = self.get_ad_api()
- self.mqttapi = self.get_plugin_api("MQTT")
- self.birdnet_mqtt = "birdnet"
- self.mqttapi.listen_event(
- self.birdnet_message, "MQTT_MESSAGE", topic=self.birdnet_mqtt
- )
-
- def birdnet_message(self, event_name, data, kwargs):
- pre_split = data["payload"]
- common_name = pre_split.split(',')[0].strip()
- science_name = pre_split.split(',')[1].strip()
- date_seen = pre_split.split(',')[2].strip()
- time_seen = pre_split.split(',')[3].strip()
- week_seen = pre_split.split(',')[4].strip()
- confidence = pre_split.split(',')[5].strip()
-
- # print(f"A {common_name} was seen on {date_seen} at {time_seen}. Confidence is {confidence}.")
-
- self.mqttapi.mqtt_publish("birdnet/sensors/common_name", common_name)
- self.mqttapi.mqtt_publish("birdnet/sensors/science_name", science_name)
- self.mqttapi.mqtt_publish("birdnet/sensors/time_seen", time_seen)
- self.mqttapi.mqtt_publish("birdnet/sensors/date_seen", date_seen)
- self.mqttapi.mqtt_publish("birdnet/sensors/confidence", confidence)
-
- url = f"https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles={science_name}"
- response = requests.get(url)
- response = response.json()
-
- for value in response['query']['pages']:
- wiki_desc = response['query']['pages'][value]['extract']
- self.hassapi.set_state("sensor.birdnet_wiki", state='on',
- attributes = {"description": wiki_desc})
-
- headers = {'User-Agent': 'Python_Flickr/1.0'}
- flickr_api = "enter_your_api_key"
- flickr_url = f"https://www.flickr.com/services/rest/?method=flickr.photos.search&api_key={flickr_api}&text={common_name} bird&sort=relevance&per_page=5&media=photos&format=json&nojsoncallback=1"
- flickr_resp = requests.get(url=flickr_url, headers=headers)
- data = flickr_resp.json()["photos"]["photo"][0]
-
- image_url = 'https://farm'+str(data["farm"])+'.static.flickr.com/'+str(data["server"])+'/'+str(data["id"])+'_'+str(data["secret"])+'_n.jpg'
-
- self.hassapi.set_state("sensor.birdpic", state='on',
- attributes={"image": image_url})
-
-```
-
-
diff --git a/test.md b/test.md
deleted file mode 100644
index 4de88558..00000000
--- a/test.md
+++ /dev/null
@@ -1 +0,0 @@
-date2