Mood Journal in Python

NPStation · Intermediate ·💻 AI-Assisted Coding ·1y ago

Key Takeaways

Builds a mood journal using Python, TextBlob, and Matplotlib

Full Transcript

Hey everyone, welcome back to NP Station. In today's video, we're going to build something practical and actually meaningful, a Python powered mood journal. By the end of this video, you'll have a program that not only saves your journal entries, but also detects your mood from what you write and even shows you a graph of how your mood changes over time. We'll code everything in Scratch in Visual Studio Code. Whether you're learning Python or just want a cool project that tracks your mental health, this one's for you. So, let's get started. Okay, so before we begin coding in Visual Studio, we actually need to install a few things in CMD. So, you can just go to your Windows and do type in cmd, which is command prompt. So, it will open this window for you here. Um, there just like I think five things that you need to install in here. I've already done it, so I'm not going to do it again, but I will put it on the screen and in the description. These are the things you need to install here. So, just go ahead, pause this video, go to the description, copy and paste it one by one into CMD, and install each one of them. Then you can come back to this video and continue watching. Okay. So, at this time, you should have installed everything you need to in the CMD prompt. Now, we can finally start coding in Visual Studio. So what we need to do now is import all the modules we need and there are a good amount. So first thing is import CSV. So what this is going to do is it'll save the journal entries to a CSV file. Then we're going to say from date time import date time. This um we need to timestamp each entry with the current date. So when you put in your entry um let's say you put it in today. Today is July 6th. And what it will do is if I say I'm feeling pretty good, it will put that entry and pair it with July 6th. So that's what this will be able to do. Next, we'll say from text blob import text blob. And this one should be uppercase. So what this is doing is um for this is actually for natural language processing. So basically sentiment analysis and that's what this project is. It's one of the biggest concepts for this project. Sentiment analysis. Um by putting in the entries the computer is going to be able to tell what mood we're feeling. Right. So that is how it's going to analyze the sentiment that we're providing. All right. Next thing is Matt. Right there it comes up. pi plot as plt. Okay, so this line of code is for drawing our mood graph. So that's a really uh cool part of this project. And then from pandas as pd. Okay, this is for reading and handling the CSV file. And finally, we need to say import OS, which will check if our CSV file already exists. Okay, so those are all the modules we needed to uh import for this project. And now we can move on to the real parts of this of the code. So this is our first function which is going to be called classify mood. All right, classify mood. And in the parameter here, we're going to say polarity. All right, don't forget your colon there. So this is a mood classification function. What we need here are a bunch of if and l if statements. So first one we're going to use that parameter we created. If polarity is greater than 0.5 then we are going to say return and in quotes we'll say happy. So this is the mood that it will return if the polarity of that uh journal entry that the user provides is greater than 0.5. Okay. L if polarity is greater than zero then we will say return content okay so not happy but content another al if polarity is greater than or actually no we'll say is equal to zero this time then we'll say return just neutral right they're feeling neutral and then we'll say if polarity is greater 0.5. All right. Return sad. And finally, we'll say else return angry. All right. So, if you guys want, you can change these moods. You don't have to do happy, content, neutral, sad, angry. You can do whatever you would like. I'm also going to put in a few emojis. Um, if you guys want those emojis, I'll probably put them in the description down below, so you can just grab them from there. copy paste it into your code just to make it a little bit more pleasing to look at. Let's create our next function which is we can call it save entry. In here we need three parameters date, entry and mood. Okay. So this function is going to save the journal entry to the CSV. So after creating that function, let's go ahead and say file exists equals os.path is file mood journal CSV. So that's our file name. Um what this line of code is doing is it's checking if the CSV file already exists in the current directory. Now we'll say with open and we'll use that mood_journal that we created if this thing would go away. Okay, moodjournal.csv. And so now we'll say new line equals and just this blank uh quote there. And then we'll say encoding equals and in single quotes UTF-8 close that parenthesis. All right, it was already closed. And then finally, we'll say add as file and add a colon there. Okay, let me just check if everything is fine. Yep, everything was good. So that line of code is opening the CSV file in append mode and it is also going to create it if the file does not exist. Okay. Now we're going to create this variable called writer. And here we'll say CSV.riter and in the uh parenthesis we'll say file. So this is creating a CSV writer object to write data to the file. Now we'll say if not file exists underscore exists. Right? We're using that uh variable that we created previously. Colon writer dot write row and then in the parentheses make sure to add a square bracket and we'll just say date entry moved. Okay, so this is writing the header only if the file is being created for the first time. And finally, let's go click backspace and we'll say writer.right right row again in the square brackets. Now we're actually using the real parameters that we created. So date entry and mood. And this is going to add a new row for each of the days journal entry. Okay. So now we're done with the save entry function. Let's move on to the next function. Um, this one is actually a pretty cool one where it is going to basically create the mood tracking graph. So, let's say def showcore mood graph. That's our uh function name here. We're going to say try. We're going to have a try block here. And inside we'll create this variable called df and set that equal to pdread csv. We'll have our file in here. So what this is doing is that that line of code will help us read the saved journal entries. And next let's do mood map and we'll set that equal to put in a curly bracket there. So here what we need to do is map each mood to a numeric score in order to plot it on the graph. Right? So that's what this function is doing. We're plotting the um moods that we're feeling onto the graph. So in order to do that, we can't really plot the happy, content, neutral, like the actual mood. We need to assign it to a numerical value. So let's do happy first. And here I'm going to um put in a colon and set that to two. Okay, so that's going to be our highest numeric value. Now we're going to say content over the next one. We'll set that to one. And then the next one is neutral. Set that to zero. The next one was sad. So after sad, the last one we had was angry. And this one we'll set to -2. All right. And then our uh last curly bracket should end it right there. Okay. So now what we need to do still in this function is add in this line of code. DF square bracket mood score equals DF mood close a square bracket dot map mood map. Okay, so this line of code is actually creating a new column called mood score by converting the textural moods into numeric values by using the mood map like this mood map dictionary. Okay. So all that's doing is it's converting the text moods like the happy, content, neutral, sad, angry into numeric values using this dictionary and it'll convert it into these uh numeric values that we provided. Okay. Now this is actually a very big function. So this try block like don't worry if it's you know underlining that. We'll add in the accept later but for now let's just continue coding here. So now what we need to do is create the mood graph using the matt plot lib uh that we imported up here. So let's go ahead and use the plt right down here. So plt.figure and in the parenthesis we'll say the figure size is equal to 10 comma 5. Okay. So that is setting the size of the window to 10 in by 10 in wide by 5 in tall. Okay, that's what those parameters are doing. The next thing we need to do is plot the mood score over time using dates on the x-axis. All right, so that's what this next line of code is going to do. Um, we want the dates to be on the x-axis and the moods to be on the y ais for this graph. So I'm going to say DF, which what we is what we created before. And here we'll say date. And then we'll say DF square bracket mood score. And then we'll have this marker to um set it equal to this lowerase O. Okay. And then line style which we'll set equal to just a dash. And then finally we'll have color which will be equal to you can choose any color you would like. I'm going to do teal. Okay. And close that parenthesis. So this line of code right here is um plotting the mood score over time using dates on the xaxis. So this marker equals to the the O that's adding a dot at each data point. And this line style equal to the dash is connecting the points with lines. And then this color equals teal is setting the line color to teal. And again, you guys can customize your graph however you would like. So you don't have to do this. You can do honestly any letter for your marker. You don't have to do the dash. However, for the line, you might want to use the dash because it'll be more clear if you do that. And then the color you can change as well. All right, let's continue. We're still using this PLT. Now, we're just going to set the title of our window. I'm going to say your mood over time. That's going to be my graph title. All right. Next thing, plt.x label, which will be date. So we can tell by the name of this that is our xaxis label. Now let's label the y-axis. So y label and here it'll be mood. The next one is we'll say plt dox tick. Okay. And here we'll say rotation is equal to 45. So what this is doing is it's rotating the dates so they don't overlap. So you know how our dates are on the x- axis. some the dates are going to be kind of long. So if you are putting an entry every single day, we don't want those um dates to overlap because it won't really look good. So that's why this rotation equals 45 is going to rotate that date so it won't overlap with each other. And then plt.tight layout. Okay, this is preventing cut off labels on our graph. And then we'll say plt.grid grid true. We're almost done. This is going to add the grid for the clarity. So, it's actually going to put in a grid, not just a blank white background. There'll be like a graph actually drawn out. And finally, we need to say show. All right. This is going to display the graph. Now, to get rid of this little error that's coming up there, click backspace. And here, we need the accept, right? So if you have a try, you always need an except to close it. And we'll say except exception as e. And we're going to put in a print function here, which will basically say error displaying graph. Okay. So if anything happens, then this print function is going to be displayed. What I'm actually going to do is put in a curly bracket with a e here and close it. All right. And now you can see that error is gone. Okay, awesome. So we are done with the show mood graph function. Let's move on to the next one which is our main program. We're actually at our last function, guys. So awesome job so far. Let's go ahead and finish this off. All right, we're going to call it main here. There's a lot of print functions that we need for this um this function. So print in the double quotes. I don't know why this big window of text is coming up. So, I'm going to say welcome to I don't know what should I call this mood journal. Mood mate. You guys can call it whatever you would like. I don't know. I just came up with that. Now, we need a back slashn. Make sure to put that in at the end. Uh what that is doing is that you know it's going to say welcome to Mood Mate as soon as you run the program. And then it will put the cursor to the next line to a new line. So you can write you know it'll print the next function there. So it'll look nice and neat. All right. So that is just going to greet the user. Now we'll set this entry variable equal to input. And here it's going to ask you know something like how was your day and then write your journal entry. So I'm literally going to type that in. How was your day? right to your journal entry. All right. And again, back slashn, don't forget that so it can be nice and clean. And put in a space as well so your user has a space to just write their entry after that line of code. Okay. Now I'll add in another print function here. And we'll say back slashn first. Just say analyzing your mood. So this is what is going to be printed as soon as the user you know clicks enter after putting in their journal entry. All right. So now what we need to do is use the text blob to analyze the entry sentiment. All right. So let's set this variable blob equal to text blob and we'll say entry as the parameter. Okay. Now let's set this variable I'll set call it polarity and I'm going to use that blob variable that we uh created and set it to sentiment dotpolarity. Okay. So this is again analyzing the sentiment. This whole project is about sentiment analysis. So this is going to say try and you know get to know if it's positive or negative. That's what it's trying to do here. Now let's set this variable mood equal to classify mood and we'll have our polarity function in that in the parenthesis and I'm going to set another variable equal to to today using the datetime dotnow strf time and we need to just set that uh format in here for the date. So, it's actually going to be like percent y minus percent mus percent d. Okay. So, what this is doing is setting that um today's date in the year month date format. So, it'll be four digits for the year, two digits for the month, two digits for the date. And then this line of code is converting that polarity score that we got up here to a mood label. Okay. All right. Next thing, we're almost done, guys. We're going to say save entry, right? That was one of the functions that we've already created. And in here, we need all of our parameters. So, it was today, entry, and mood. Okay, that's all for that line of code. It is going to save the journal entry to our mood journal. Next, another print function. And here we'll say f and then back slashn. Mood detected. I'm going to say mood detected. And then we'll put in the mood parameter in the curly brackets right there. I don't know if I even did that right cuz I can't see. Okay, let me fix this. So, there needs to be that. And there we go. Okay. So that print function will be printed after the mood is detected and it will actually put in the mood that the computer detected from the entry right there using that parameter. And again we'll say um f no need to do the black slashn here. We're going to say your entry um has been saved. Okay. Four. And then in curly brackets we use the today parameter. So that is going to put in that date right in there. Um so the user will be able to see that. Next we want to ask the user if they want to see their graph. Okay. Um if you want you don't even have to ask. You can just you know show the graph there. But just for a little you know extra like uh print functions here which will make it more interactive with the user. Let's go ahead and just ask the user if they want to see it. So, would you like to see your mood graph and make sure to just put in like yes or no in the parenthesis. I'm saying y or n so you know they don't run into an error if they just type something else. Okay. And I'm going to say lowercase. It's going to convert it to lowerase. And now here, oh, I just said lower, not lowerase, just so you guys can see that. Okay. Now we need a if statement. If c graph okay is equal to the y then we need to show the mood graph. So we're going to use that show mood graph function that we created before. Else let's say they say n or maybe they said a totally different letter or maybe they put in a number. it is just going to go directly to this else statement and we'll say print see you next time or whatever you want to say here don't have to do that okay now we are done with our main function that was a lot so let's just go ahead click backspace so we don't have an indentation and I'm going to say if name is equal to and in double quotes again we're going to say main we're going to just put that main function there. So it'll actually call it. So this is running the program if this file um is the main script. Okay. And guess what? We are done with our mood journal project. Now let's go ahead and run this. Hopefully it works. Let's go ahead and click the run button. Awesome. Look at that. It asks, "How was your day? Write your journal entry." I'm going to go ahead and say my day was amazing. Um, I am making a YouTube video. Click enter. It's saying analyzing your mood. Mood detected. Happy. Your entry has been saved for and that is today's date, July 6th. Would you like to see your mood graph? Let's go ahead and do Y. Click enter. And hopefully this works. Awesome. Look at that guys. So you can see that it actually plotted a point here at two which is the uh numerical value that we assigned for happy and it also put in the date here. You can see that it's slanted. That was the rotation part. So if I were to add in another uh entry tomorrow then it would be added right next to it so it wouldn't overlap. But this looks wonderful guys. You can see that the color is teal as well. So, if you put in your entry every single day, then you can see that the graph will actually put in a line and it will look awesome. I'm going to go ahead and just put in some emojis here to make this look a little bit better. So, um you guys can also grab those from the description. Okay, so I put in these little emojis for each of the moods, um which will also be printed out, um you know, when the mood is detected. And if I do that, I'm also going to put it in um later on here in the show mood graph. Okay, so I put in those emojis. Let's see what else I can do. Um maybe we can do like another thing here in the main function. Okay, so I got this little magnifying glass, which is pretty cute. And I think that's it. Let's go ahead and just run this again. I'm going to do put in like another entry. Okay. How was your day? Write your journal entry. So, I don't think I put in Yeah, there's no emoji for that one. Okay. I'm going to say um I'm tired and hungry and sad. All right. Let's see what it says. Analyzing your mood. Mood detected. Sad. Okay. Okay, well I guess I set it here. So that was pretty easy for it. But you can see the little emoji came up there and it was saved for today. Let's go ahead and see our graph again and see what it would look like. Okay, so now it has actually plotted it at -1. All right, so it changed it to one because that was the numeric value that we added in paired up with the mood sad. Okay, so that's pretty cool guys. I hope you guys enjoyed this video. If you did, please give it a big thumbs up. Um, if you enjoyed coding this project and thought it was pretty fun, make sure to share with your family and friends so they can also create this awesome mood journal in Python. But that's all for today, guys. I hope you have a wonderful day. Stay safe, keep reading, keep coding, and I'll see you later on MP Station. [Music]

Original Description

Watch this video and code with me in order to create an amazing mood journal using the Python programming language. At the end of this video you can give your computer daily entries about your day and it will graph your mood over time! Here are the things you must install in CMD: pip install textblob python -m textblob.download_corpora pip install matplotlib pip install pandas Here are the emojis I used! 😊🙂😐😔😡🔍 ------- FOLLOW ME ——— ‣ NPStation Website - https://www.npstation.org ‣ FaceBook Page - https://www.facebook.com/npstation2018 ‣ Twitter - https://twitter.com/npstation2018 ‣ Instagram - https://www.instagram.com/npstation2018/ ‣ LinkedIn - https://www.linkedin.com/in/nehapraveen/ ‣ For collaborations, business inquiries, etc. please email: npstation2018@gmail.com ‣ Check out my blog - https://bit.ly/30BOdf5 ——— IF YOU LIKED THIS VIDEO, YOU MIGHT LIKE…. ------- Watch Coding For Kids in Python Playlist - https://bit.ly/36AQmg7 Watch Coding For Kids Playlist - https://bit.ly/3kmQXu0 Watch Fun Jungle Series Playlist - https://bit.ly/3em7Ctz Watch Diary of a Wimpy Kid Playlist - https://bit.ly/3wFvGxZ Watch Books & Beyond Playlist - https://bit.ly/3z2k6yE Watch Team BFF - Race To The Finish - https://bit.ly/2HbUGHj Watch The Friendship Code Review - https://bit.ly/2Eoj1nP Watch Lights, Music, Code Review - https://bit.ly/2EnsD2j Watch How I Met The Governor - http://bit.ly/2GdMJBj Watch Coding for Kids Part 1 here - http://bit.ly/2rPa3PK Watch Coding For Kids Part 2 here - http://bit.ly/2rP9Ufa Watch Coding For Kids Part 3 here - http://bit.ly/2GoN1Cl Watch Coding For Kids Part 4 here - http://bit.ly/2p2emDu #NPStation #InspireToRead #bookreviews #CaughtReading ------- BINGE-WORTHY PLAYLISTS ——— Inspire To Read - https://www.youtube.com/playlist?list=PLnb0FwCbM-51Hs_IHhf0RkA2D8Roxucb9 Diary Of A Wimpy Kid - https://www.youtube.com/playlist?list=PLnb0FwCbM-50ozAYT5VlfiTL2HQzDnY7I Coding For Kids - https://www.youtube.com/pla
Watch on YouTube ↗ (saves to browser)
Sign in to unlock AI tutor explanation · ⚡30

Playlist

Uploads from NPStation · NPStation · 0 of 60

← Previous Next →
1 Diary of a Wimpy Kid Cabin Fever Book Review
Diary of a Wimpy Kid Cabin Fever Book Review
NPStation
2 Diary of a Wimpy Kid 12 The Getaway Book Review
Diary of a Wimpy Kid 12 The Getaway Book Review
NPStation
3 Snap Circuits Jr Review
Snap Circuits Jr Review
NPStation
4 Snap Circuits Jr Review - Wait for the funny ending :-)
Snap Circuits Jr Review - Wait for the funny ending :-)
NPStation
5 Diary of a Wimpy Kid The Third Wheel Book Review
Diary of a Wimpy Kid The Third Wheel Book Review
NPStation
6 Dork Diaries Frenemy Book Review - Book 11
Dork Diaries Frenemy Book Review - Book 11
NPStation
7 OMG!!! Elf on the Shelf CAUGHT MOVING on camera!!!
OMG!!! Elf on the Shelf CAUGHT MOVING on camera!!!
NPStation
8 New Books! Best Graphic Novels! Smile, Sisters & Drama!
New Books! Best Graphic Novels! Smile, Sisters & Drama!
NPStation
9 MY DIARY OF A WIMPY KID COLLECTION!! CHRISTMAS GIFT!!
MY DIARY OF A WIMPY KID COLLECTION!! CHRISTMAS GIFT!!
NPStation
10 DIARY OF A WIMPY KID OLD SCHOOL BOOK REVIEW
DIARY OF A WIMPY KID OLD SCHOOL BOOK REVIEW
NPStation
11 DIARY OF A WIMPY KID - DOG DAYS - BOOK REVIEW - Q & A
DIARY OF A WIMPY KID - DOG DAYS - BOOK REVIEW - Q & A
NPStation
12 Coding for Kids  - Part 1
Coding for Kids - Part 1
NPStation
13 Coding For Kids - Part 2
Coding For Kids - Part 2
NPStation
14 Jacky Ha Ha - My Life Is A Joke - Book Review
Jacky Ha Ha - My Life Is A Joke - Book Review
NPStation
15 Coding For Kids Part 3 - Core 4 Principles of Coding
Coding For Kids Part 3 - Core 4 Principles of Coding
NPStation
16 Coding For Kids : Part 4 : Use of Functions in Programming
Coding For Kids : Part 4 : Use of Functions in Programming
NPStation
17 Diary Of A Wimpy Kid The Ugly Truth Book Review
Diary Of A Wimpy Kid The Ugly Truth Book Review
NPStation
18 Diary of a Wimpy Kid | Hard Luck | Book Review
Diary of a Wimpy Kid | Hard Luck | Book Review
NPStation
19 TUNE IN FOR SOME EXCITING NEWS!!!
TUNE IN FOR SOME EXCITING NEWS!!!
NPStation
20 NPStation Intro - What do you think
NPStation Intro - What do you think
NPStation
21 Lights Music Code First Official Book Review
Lights Music Code First Official Book Review
NPStation
22 The Friendship Code Book Review | GIRLS WHO CODE Fiction Books
The Friendship Code Book Review | GIRLS WHO CODE Fiction Books
NPStation
23 Team BFF - Race To The Finish - GIRLS WHO CODE FICTION SERIES
Team BFF - Race To The Finish - GIRLS WHO CODE FICTION SERIES
NPStation
24 Jasmine Toguchi Drummer Girl - Book Review
Jasmine Toguchi Drummer Girl - Book Review
NPStation
25 Aru Shah And The End of Time Book Review - Part 1
Aru Shah And The End of Time Book Review - Part 1
NPStation
26 Aru Shah And The End of Time By Roshani Chokshi Book Review Part 2
Aru Shah And The End of Time By Roshani Chokshi Book Review Part 2
NPStation
27 Diary of a Wimpy Kid: Book 13 Cover and Title Reveal!
Diary of a Wimpy Kid: Book 13 Cover and Title Reveal!
NPStation
28 Aru Shah & The End of Time By Roshani Chokshi Book Review Part 3
Aru Shah & The End of Time By Roshani Chokshi Book Review Part 3
NPStation
29 How To Code A SandCastle By Josh Funk | Book Review | GIRLS WHO CODE
How To Code A SandCastle By Josh Funk | Book Review | GIRLS WHO CODE
NPStation
30 Finale of my Book Review of Aru Shah And The End of Time - DONT MISS
Finale of my Book Review of Aru Shah And The End of Time - DONT MISS
NPStation
31 Automation Using JAVASCRIPT | STEM Fair Coding Project
Automation Using JAVASCRIPT | STEM Fair Coding Project
NPStation
32 Book of Alma by Marianne Reese Book Review
Book of Alma by Marianne Reese Book Review
NPStation
33 FoodForce by Jason Maslak Book Review
FoodForce by Jason Maslak Book Review
NPStation
34 Sophie Washington Mission Costa Rica Book Review
Sophie Washington Mission Costa Rica Book Review
NPStation
35 The Serpent's Secret By Sayantani Das Gupta Book Review
The Serpent's Secret By Sayantani Das Gupta Book Review
NPStation
36 NPStation Summer Book Giveaway 2018!!! HUGE GIVEAWAY [CLOSED]
NPStation Summer Book Giveaway 2018!!! HUGE GIVEAWAY [CLOSED]
NPStation
37 The Serpents Secret Book Review Part2
The Serpents Secret Book Review Part2
NPStation
38 The Flamingo Keeper Book Review
The Flamingo Keeper Book Review
NPStation
39 The Serpents Secret Book Review Part 3 : FINALE
The Serpents Secret Book Review Part 3 : FINALE
NPStation
40 The Midnight-Gang Book Review Part 1 | GIVEAWAY WINNER Announced
The Midnight-Gang Book Review Part 1 | GIVEAWAY WINNER Announced
NPStation
41 The Midnight-Gang Book Review
The Midnight-Gang Book Review
NPStation
42 The Magic of the Melwick Orchard ARC Book Review
The Magic of the Melwick Orchard ARC Book Review
NPStation
43 Vedic Mathematics Tips & Tricks : Multiply by 11
Vedic Mathematics Tips & Tricks : Multiply by 11
NPStation
44 Vedic Mathematics Base Method Multiplication (Any # near a base)
Vedic Mathematics Base Method Multiplication (Any # near a base)
NPStation
45 Vedic Mathematics Multiply by 9 Trick 1
Vedic Mathematics Multiply by 9 Trick 1
NPStation
46 I got more books | Book Haul October 2018
I got more books | Book Haul October 2018
NPStation
47 Vedic Mathematics Multiply by 9 Trick 2
Vedic Mathematics Multiply by 9 Trick 2
NPStation
48 Diary Of A Wimpy Kid - The Meltdown - Book Review
Diary Of A Wimpy Kid - The Meltdown - Book Review
NPStation
49 Vedic Mathematics Find Square of Any Number from 51- 59
Vedic Mathematics Find Square of Any Number from 51- 59
NPStation
50 SpaceCase Book Review
SpaceCase Book Review
NPStation
51 Sunny Side Up Book Review
Sunny Side Up Book Review
NPStation
52 Diary of an Awesome Friendly Kid Book Reveal
Diary of an Awesome Friendly Kid Book Reveal
NPStation
53 Hello My Name is Bunny, London Book Review
Hello My Name is Bunny, London Book Review
NPStation
54 First Rule Of Punk Book Review
First Rule Of Punk Book Review
NPStation
55 Out Of My Mind Book Review
Out Of My Mind Book Review
NPStation
56 Diary of An Awesome Friendly Kid Sneak Peek
Diary of An Awesome Friendly Kid Sneak Peek
NPStation
57 Diary Of An Awesome Friendly Kid Book Review BONUS  Q&A with Jeff Kinney
Diary Of An Awesome Friendly Kid Book Review BONUS Q&A with Jeff Kinney
NPStation
58 Let's Learn French and Spanish Book Review
Let's Learn French and Spanish Book Review
NPStation
59 Fish In A Tree Book Review
Fish In A Tree Book Review
NPStation
60 Sophie Washington Code One Book Review
Sophie Washington Code One Book Review
NPStation

Related Reads

Up next
I Built 5 Educational Apps Without (No Code)
Educraft
Watch →