Inspiration
The Covid-19 pandemic has led the whole world to adopt online methods of education, and Google Meet, in this domain, has been a boon for us all. Though Google Meet offered a great communication medium for students and teachers, it also brought with it the problem of cyberbullying. Notorious students were seen sending toxic messages during online sessions, which disturbs both the class as well as the mental health of the teacher. This motivated us to create this application which would make sure that online education is trouble-free, and no inconvenience is caused to teachers.
What it does
This app detects and prevents cyberbullying on Google Meet by monitoring chats and audio in the meeting and if a person is detected behaving in an abusive manner, then the following information of the chat or audio is being stored in a database and the user is removed from the meeting. One can use the data as evidence as the app gives you the option to store it as a pdf and when the google meet team looks for any evidence you can provide them with the evidence.
How we built it
Our Project uses Web Automation with Selenium along with Web Scraping from Beautiful Soup Library which runs via a script written in python and call in the back end through a Node JS app. Web Automation uses xpaths of elements to interact with the web page and along with handling errors through a try except block, web automation uses a chrome driver. Web Scraping is done for the chat box and captions in the Google Meet so that we can get regular updates for new messages and audio and they are turned into a Beautiful Soup Element through a HTML Parser, a Perspective API which gives a toxicity score is integrated along with the web scraper to check each message for toxicity and then our team came up with a threshold of 0.9 to classify a chat message as toxic and also a warning raising function is written to send a text message through the chat if an attendees chats toxic score is close to our threshold and if it reaches above the threshold then we have made a function to automate the removal of the following student or attendee. The chats can be written in various languages depending on its usage in different regions but the perspective API has only few supported languages so we have also integrated the Unofficial GoogleTrans API to translate the chat for toxicity detection. We created the web application using NodeJS, which helps us register the user and verify his Gmail Email ID. Once the user successfully logs in, the python script runs and the admins automatically joins the google meet and the chats are monitored for toxicity. The web application displays the names of the students removed along with the toxic messages, toxicity score, the time of the message and the meeting code.
Challenges we ran into
Challenge 1
Google Meet does not have an API of its own so we can’t really interact with all the information in a meeting. Scraping data from the meeting isn’t feasible because google does not allow any scraper to crawl over them without permission(unless you know a way to bypass them).
Challenge 2
Google Perspective API supports only 7 languages at the moment, so to make our automation app available for other languages we had to come up with a creative plan to use an unofficial API called googletrans which helps to translate the messages.
Challenge 3
When we Scrap the chat messages, we weren’t able to distinguish the new messages from the old ones and the API had to process the same chats all over again. Our team came up with the idea of making a Data Structure which will store the current element and the next time we know the position of the new message in the chat box and thus it will reduce the memory usage and number of API calls which need to be performed.
Challenge 4
One of the main features of this web app is to be able to detect audio. It was a tricky situation because even if we got hold of the audio, we still can’t scrape the name of the person who is speaking at the moment. So we decided to extract the data via a feature provided by Google Meet, i.e, Captions. This feature was able to provide us with the name of the user who was talking at the moment. The content of the speech was also available in textual format on which the Perspective API was applied.
Accomplishments that we're proud of
We were not able to get hold of many resources regarding anything related to Google Meet and as to how we can extract any type of Data from it, so my team is really proud of creating this app which at a point seemed impossible for us. Moreover, the practice of Data Structures came in handy to solve the complex problems in our projects related to position of the chats. Our team is also proud of this app as it is one of the first initiatives to tackle cyberbullying in the field of e-education. Our team will be very proud if this app really creates an impact in the life of all those who are using video communication services in the Covid era.
What we learned
The first and foremost thing we all learned is believing that we can create solutions and then the most important thing is Teamwork. We got the chance to learn a lot about Web Scraping and Web automation. How one can integrate an app with the automated scripts and the use of problem solving really helped us a lot. The use of Google API’s made our work much easier and extracting data from them gave us the opportunity to learn a lot. Second of all, the intricacies of a project which were discussed in the challenges section gave the maximum learning in the whole project .
What's next for Cure Meet
Cure Meet currently moderates the chat and audio in Google meet for toxicity, but our future goal includes expanding Cure Meet app to include other video communication services like Microsoft teams and Zoom App as well. This will make this tool better for any meeting attendee and also adding the video analysis features would make it a great tool.
Built With
- beautiful-soup
- css
- express.js
- google-apis-discovery
- html
- javascript
- mongodb
- node.js
- perspective-api
- python
- selenium
- web-automation
- web-scraping
Log in or sign up for Devpost to join the conversation.