With the abundance of news platforms and social media services, searching for reliable, updated information from several sources can become quite tedious. Thus, this program was developed to group different information sources together using the RSS Feeds they provide, while generating a rough summary of the feed within the client.
What it does
This client parses different RSS feeds based upon a config file and displays the different feeds in an easily accessible GUI. Controlled by the keyboard or mouse, this GUI can be pulled to the foreground or pushed to the background focus at any time to allow users to access their information at will without it hindering their everyday use of the computer.
Each tab in the GUI represents a different RSS feed; when selected, the tab displays the different articles within the feed. When an article is left-clicked, it is opened in the systems default browser. When the article is right-clicked, the GUI displays a short summary of the article.
RSS Feeds can be added at any time by modifying the clients config .xml file.
How I built it
I developed a custom rendering framework over the DirectX API in C++ to create a GUI. The main rendering thread retrieves the RSS XML data from a sources RSS Feed and parses it, extracting article titles and links. The titles are then displayed as a hyperlink in each respective tab's content pane. A TCP socket is also created to serve as a communication pipe between the main GUI client and a python back-end.
When a link is right-clicked to display a summary, that link is sent to the python back-end via a TCP socket; the back-end parses the HTML content to generate a summary of the article, which gets sent back to the front-end to be displayed.
Challenges I ran into
While GUI manipulation was facilitated with c++, natural language processing for articles was not; I needed to find another way to access the higher level processing APIs. I created a communication pipe between my c++ front-end and a python back-end to gain access to these APIs.
The most difficult challenge I faced was developing my own rendering framework on top of the lower-level drawing APIs provided by DirectX. I needed to ensure my drawings, especially text, didn't extend over the windows perimeter and make sure the window could be moved and resized smoothly. Additionally, I needed to make sure the GUI could support and display the information being retrieved from the RSS Feeds.
We also tried to use entity sentiment analysis to generate a bias rating for each article with Python and Google Cloud Platform's Natural Language API, but had trouble integrating it with the main application and finding a suitable dataset to draw info from to analyze articles, so it did not make it into the final build.
Finally, this being our first hackathon, it was challenging to organize and execute the project while keeping priorities in mind and respecting individual contributions.
Accomplishments that I'm proud of
I was able to develop an entire GUI framework over a lower-level rendering API by myself and integrate it with my own RSS Parser. I was also able to run natural language processing over the RSS articles to create and display a summaries, along with other information.
What's next for FeedForward
- Implement a better RSS parser to allow for different types of articles to be analyzed
- More sophisticated data analysis and about the different ideas and sentiments discussed in RSS articles