Granary Documentation Release 1.12

Total Page:16

File Type:pdf, Size:1020Kb

Granary Documentation Release 1.12 granary Documentation Release 1.12 Ryan Barrett Mar 24, 2018 Contents 1 Using 3 2 Using the REST API 5 3 Using the library 7 4 Troubleshooting/FAQ 9 5 Future work 11 6 Development 13 7 Related work 15 8 Changelog 17 8.1 1.12 - 2018-03-24............................................ 17 8.2 1.11 - 2018-03-09............................................ 17 8.3 1.10 - 2017-12-10............................................ 18 8.4 1.9 - 2017-10-24............................................. 19 8.5 1.8 - 2017-08-29............................................. 19 8.6 1.7 - 2017-02-27............................................. 20 8.7 1.6 - 2016-11-26............................................. 21 8.8 1.5 - 2016-08-25............................................. 21 8.9 1.4.1 - 2016-06-27............................................ 22 8.10 1.4.0 - 2016-06-27............................................ 22 8.11 1.3.1 - 2016-04-07............................................ 22 8.12 1.3.0 - 2016-04-06............................................ 23 8.13 1.2.0 - 2016-01-11............................................ 23 8.14 1.1.0 - 2015-09-06............................................ 24 8.15 1.0.1 - 2015-07-11............................................ 25 8.16 1.0 - 2015-07-10............................................. 25 i ii granary Documentation, Release 1.12 Granary is a library and REST API that fetches and converts between a wide variety of data sources and formats: • Facebook, Flickr, GitHub, Google+, Instagram, and Twitter native APIs • Instagram and Google+ scraped HTML • ActivityStreams 1.0 and 2.0 • microformats2 HTML and JSON • Atom • JSON Feed • XML Free yourself from silo API chaff and expose the sweet social data foodstuff inside in standard formats and protocols! Here’s how to get started: • Granary is available on PyPi. Install with pip install granary. • Supports Python 2.7+ and 3.3+. • Click here for getting started docs. • Click here for reference docs. • The REST API and demo app are deployed at granary.io. License: This project is placed in the public domain. Contents 1 granary Documentation, Release 1.12 2 Contents CHAPTER 1 Using All dependencies are handled by pip and enumerated in requirements.txt. We recommend that you install with pip in a virtualenv.(App Engine details.) The library and REST API are both based on the OpenSocial Activity Streams service. Let’s start with an example. This code using the library: from granary import twitter ... tw= twitter.Twitter(ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET) tw.get_activities(group_id='@friends') is equivalent to this HTTP GET request: https://granary.io/twitter/@me/@friends/@app/ ?access_token_key=ACCESS_TOKEN_KEY&access_token_secret=ACCESS_TOKEN_SECRET They return the authenticated user’s Twitter stream, ie tweets from the people they follow. Here’s the JSON output: { "itemsPerPage": 10, "startIndex":0, "totalResults": 12, "items": [{ "verb":"post", "id":"tag:twitter.com,2013:374272979578150912", "url":"http://twitter.com/evanpro/status/374272979578150912", "content":"Getting stuff for barbecue tomorrow. No ribs left! Got some nice ,!tenderloin though. (@ Metro Plus Famille Lemay) http://t.co/b2PLgiLJwP", "actor":{ "username":"evanpro", "displayName":"Evan Prodromou", "description":"Prospector.", "url":"http://twitter.com/evanpro", }, 3 granary Documentation, Release 1.12 "object":{ "tags": [{ "url":"http://4sq.com/1cw5vf6", "startIndex": 113, "length": 22, "objectType":"article" },"..."], }, },"..."] "..." } The request parameters are the same for both, all optional: USER_ID is a source-specific id or @me for the authenti- cated user. GROUP_ID may be @all, @friends (currently identical to @all), @self, @search, or @blocks; APP_ID is currently ignored; best practice is to use @app as a placeholder. Paging is supported via the startIndex and count parameters. They’re self explanatory, and described in detail in the OpenSearch spec and OpenSocial spec. When using the GROUP_ID @search (for platforms that support it — currently Twitter and Instagram), provide a search string via the q parameter. The API is loosely based on the OpenSearch spec, the OpenSocial Core Container spec, and the OpenSocial Core Gadget spec. Output data is JSON Activity Streams 1.0 objects wrapped in the OpenSocial envelope, which puts the activities in the top-level items field as a list and adds the itemsPerPage, totalCount, etc. fields. Most Facebook requests and all Twitter, Google+, Instagram, and Flickr requests will need OAuth access tokens. If you’re using Python on Google App Engine, oauth-dropins is an easy way to add OAuth client flows for these sites. Otherwise, here are the sites’ authentication docs: Facebook, Flickr, Google+, Instagram, Twitter. If you get an access token and pass it along, it will be used to sign and authorize the underlying requests to the sources providers. See the demos on the REST API endpoints above for examples. 4 Chapter 1. Using CHAPTER 2 Using the REST API The endpoints above all serve the OpenSocial Activity Streams REST API. Request paths are of the form: /USER_ID/GROUP_ID/APP_ID/ACTIVITY_ID?startIndex=...&count=...&format=FORMAT&access_ ,!token=... All query parameters are optional. FORMAT may be json (the default), xml, or atom, both of which return Atom. atom supports a boolean reader query parameter for toggling rendering appropriate to feed readers, e.g. location is rendered in content when reader=true (the default). The rest of the path elements and query params are described above. Errors are returned with the appropriate HTTP response code, e.g. 403 for Unauthorized, with details in the response body. By default, responses are cached and reused for 5m without re-fetching the source data. (Instagram responses are cached for 60m.) You can prevent this by adding the cache=false query parameter to your request. To use the REST API in an existing ActivityStreams client, you’ll need to hard-code exceptions for the domains you want to use e.g. facebook.com, and redirect HTTP requests to the corresponding endpoint above. The web UI (granary.io) currently only fetches Facebook access tokens for users. If you want to use it to access a Facebook page, you’ll need to get an access token manually with the Graph API Explorer (click on the Get To.. drop-down) . Then, log into Facebook on granary.io and paste the page access token into the access_token text box. (Google+ pages aren’t supported in their API.) 5 granary Documentation, Release 1.12 6 Chapter 2. Using the REST API CHAPTER 3 Using the library See the example above for a quick start guide. Clone or download this repo into a directory named granary (note the underscore instead of dash). Each source works the same way. Import the module for the source you want to use, then instantiate its class by passing the HTTP handler object. The handler should have a request attribute for the current HTTP request. The useful methods are get_activities() and get_actor(), which returns the current authenticated user (if any). See the individual method docstrings for details. All return values are Python dicts of decoded ActivityStreams 1 JSON. The microformats2.*_to_html() functions are also useful for rendering ActivityStreams 1 objects as nicely formatted HTML. 7 granary Documentation, Release 1.12 8 Chapter 3. Using the library CHAPTER 4 Troubleshooting/FAQ Check out the oauth-dropins Troubleshooting/FAQ section. It’s pretty comprehensive and applies to this project too. For searchability, here are a handful of error messages that have solutions there: bash:./bin/easy_install:...bad interpreter: No such file or directory ImportError: cannot import name certs ImportError: cannot import name tweepy File".../site-packages/tweepy/auth.py", line 68, in _get_request_token raise TweepError(e) TweepError: must be _socket.socket, not socket 9 granary Documentation, Release 1.12 10 Chapter 4. Troubleshooting/FAQ CHAPTER 5 Future work We’d love to add more sites! Off the top of my head, YouTube, Tumblr, WordPress.com, Sina Weibo, Qzone, and RenRen would be good candidates. If you’re looking to get started, implementing a new site is a good place to start. It’s pretty self contained and the existing sites are good examples to follow, but it’s a decent amount of work, so you’ll be familiar with the whole project by the end. 11 granary Documentation, Release 1.12 12 Chapter 5. Future work CHAPTER 6 Development Pull requests are welcome! Feel free to ping me with any questions. You’ll need the App Engine Python SDK version 1.9.15 or later (for vendor support). Add it to your $PYTHONPATH, e.g. export PYTHONPATH=$PYTHONPATH:/usr/local/google_appengine, and then run: virtualenv local source local/bin/activate pip install-r requirements.txt python setup.py test If you send a pull request, please include (or update) a test for the new functionality if possible! The tests re- quire the App Engine SDK or the Google Cloud SDK (aka gcloud) with the gcloud-appengine-python and gcloud-appengine-python-extras components. If you want to work on oauth-dropins at the same time, install it in “source” mode with pip install -e <path to oauth-dropins repo>. To deploy: python-m unittest discover&& gcloud-q app deploy granary-demo *.yaml To deploy facebook-atom, twitter-atom, instagram-atom, and plusstreamfeed after a granary change: #!/bin/tcsh foreach s (facebook-atom twitter-atom instagram-atom plusstreamfeed) cd ~/src/$s && gcloud -q app deploy $s *.yaml end The docs are built with Sphinx, including apidoc, autodoc, and napoleon. Configuration is in docs/conf.py To build them, first install Sphinx with pip install sphinx. (You may want to do this outside your virtualenv; if so, you’ll need to reconfigure it to see system packages with virtualenv --system-site-packages local.) Then, run docs/build.sh. This ActivityStreams validator is useful for manual testing. 13 granary Documentation, Release 1.12 14 Chapter 6. Development CHAPTER 7 Related work Apache Streams is a similar project that translates between storage systems and database as well as social schemas. It’s a Java library, and its design is heavily structured. Here’s the list of formats it supports.
Recommended publications
  • Chrome Extension Page Change Notification
    Chrome Extension Page Change Notification trapansIs Salmon his Jehovistic tirrivees infiltrating when Tod impecuniously, witness unmusically? but shelliest Peirce Chauncey remains subcorticalnever clinks after so vortically. Batholomew mobilising slangily or outmans any troilism. Lazlo Tab title now shows a countdown timer and status. Receive a notification whenever the browser is being used and you however not tracking time. If disabled click this affiliate link happy buy a product or service, we may is paid first fee rule that merchant. Winternals Defragmentation, Recovery, and Administration Field Guide foster the technical editor for Rootkits for Dummies. It will even explode if your keyboard and mouse go untouched for two minutes or more. Or just mail it into yourself to read whenever. Save money remove the hassle. Reload your Chrome extension. Safari using our extension! Here became the latest Insider stories. Configure the refrigerator of enterprise login URLs where password protection service can capture fingerprint of password. Failed to load latest commit information. TODO: we should top the class names and whatnot in post here. Here is day you did remove notifications in Google Chrome completely and effectively. User or password incorrect! Specificity needed here that override widget CSS defaults. The best renderings in is world! Ability to update settings of respective job. In life case, our extension will also have a configuration page, so moving will have use nuclear option. Showing the prompt to load on sat site or visit you just annoying, though. Why my multiple nations decide to launch Mars projects at exactly she same time? Vox Media has affiliate partnerships.
    [Show full text]
  • Working with Feeds, RSS, and Atom
    CHAPTER 4 Working with Feeds, RSS, and Atom A fundamental enabling technology for mashups is syndication feeds, especially those packaged in XML. Feeds are documents used to transfer frequently updated digital content to users. This chapter introduces feeds, focusing on the specific examples of RSS and Atom. RSS and Atom are arguably the most widely used XML formats in the world. Indeed, there’s a good chance that any given web site provides some RSS or Atom feed—even if there is no XML-based API for the web site. Although RSS and Atom are the dominant feed format, other formats are also used to create feeds: JSON, PHP serialization, and CSV. I will also cover those formats in this chapter. So, why do feeds matter? Feeds give you structured information from applications that is easy to parse and reuse. Not only are feeds readily available, but there are many applications that use those feeds—all requiring no or very little programming effort from you. Indeed, there is an entire ecology of web feeds (the data formats, applications, producers, and consumers) that provides great potential for the remix and mashup of information—some of which is starting to be realized today. This chapter covers the following: * What feeds are and how they are used * The semantics and syntax of feeds, with a focus on RSS 2.0, RSS 1.0, and Atom 1.0 * The extension mechanism of RSS 2.0 and Atom 1.0 * How to get feeds from Flickr and other feed-producing applications and web sites * Feed formats other than RSS and Atom in the context of Flickr feeds * How feed autodiscovery can be used to find feeds * News aggregators for reading feeds and tools for validating and scraping feeds * How to remix and mashup feeds with Feedburner and Yahoo! Pipes Note In this chapter, I assume you have an understanding of the basics of XML, including XML namespaces and XML schemas.
    [Show full text]
  • Download Tut Tv Show Torrent Nefarious
    download tut tv show torrent nefarious. It uses Jackett and Transmission under the hood. Jackett searches for torrents and Transmission handles the downloading. Search and discover TV & Movies (by popularity, genres, year etc) Auto download TV & Movies Find similar and recommended TV & Movies (via The Movie Database & Rotten Tomatoes) Manually search and download Jackett’s torrent results Supports blacklisting torrent results (i.e, permanently avoid a bad/fake torrent) Supports quality profiles (i.e only download 1080p Movies and 720p TV) Supports whether to download media with hardcoded subtitles or not Supports user defined keywords to filter results (i.e, ignore “x265”, “hevc” codecs) Monitor transmission results & status from within the app Self/auto updating application, so you’re always up-to-date Supports multiple users and permission groups (i.e, admin users and regular users) Responsive Design (looks great on desktops, tablets and small devices like phones) Includes movie trailers Automatically renames media Supports multiple languages (TMDB supports internationalized Titles, Descriptions and Poster artwork) Webhook support (i.e, can post to Slack, Telegram etc when media downloads) Imports existing libraries VPN integration (optional) Auto download subtitles. Contents. Screenshots. Login. Search. TV Result. Movie Result. Download Status. Discover via TMDB. Discover via Rotten Tomatoes. Wanted. Watching. Settings. Search Manual. Mobile Friendly. Dependencies. Setup. You must have docker and docker-compose already installed. See dependencies. Part 1. Clone the nefarious repository: Copy the default environment file to make changes: Edit .env as needed for your settings, at least defining HOST_DOWNLOAD_PATH to something like HOST_DOWNLOAD_PATH=/path/to/downloads . You should never need to edit the docker-compose.yml file since all settings are read from .env .
    [Show full text]
  • Twonky Server REST API Specification
    Twonky Server REST API Specification 2017.05.24 Lynx Technology Copyright © 2017 by Lynx Technology. This document and the information contained herein is the confidential information of Lynx Technology and is for the sole use of the intended recipient(s). If you are not the intended recipient, please contact Lynx Technology at the address listed below and destroy all copies of this document. To the extent a nondisclosure agreement or other commercial agreement (Governing Agreement) is signed and in effect between Lynx Technology (or an authorized Lynx Technology licensee) and the intended recipient(s) of this document, the terms of such Governing Agreement will govern. If no Governing agreement is in effect, then this document may not be used, reproduced or distributed without the prior written consent of Lynx Technology, 10620 Treena St, Suite 230, San Diego, CA 92131. Table of Contents 1 Introduction .......................................................................................................................................... 4 1.1 Use Cases.................................................................................................................................................... 4 1.2 Concepts..................................................................................................................................................... 4 1.3 Control point design considerations ......................................................................................................... 5 2 REST API ...............................................................................................................................................
    [Show full text]
  • Conversational Artificial Intelligence: Bringing the Library to Your Living Room
    Conversational Artificial Intelligence: Bringing the Library to Your Living Room This project was made possible in part by a 2019 award from the Catalyst Fund at LYRASIS. Conversational Artificial Intelligence: Bringing the Library to Your Living Room by King County Library System is licensed under a Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International License. Based on a work at www.kcls.org/voice. TABLE OF CONTENTS 1. PROJECT GOAL ............................................................................................................................................. 2 2. PROJECT PROCESS ....................................................................................................................................... 2 A. What We Did .................................................................................................................................................................. 2 Policy Review ............................................................................................................................................................................. 2 Contract Review ....................................................................................................................................................................... 2 KCLS Community Input and Feedback ........................................................................................................................... 2 Library Interviews ..................................................................................................................................................................
    [Show full text]
  • Vizrt Feed Streamer User Guide
    Vizrt Feed Streamer User Guide Version 1.5 Copyright © 2018 Vizrt. All rights reserved. No part of this software, documentation or publication may be reproduced, transcribed, stored in a retrieval system, translated into any language, computer language, or transmitted in any form or by any means, electronically, mechanically, magnetically, optically, chemically, photocopied, manually, or otherwise, without prior written permission from Vizrt. Vizrt specifically retains title to all Vizrt software. This software is supplied under a license agreement and may only be installed, used or copied in accordance to that agreement. Disclaimer Vizrt provides this publication “as is” without warranty of any kind, either expressed or implied. This publication may contain technical inaccuracies or typographical errors. While every precaution has been taken in the preparation of this document to ensure that it contains accurate and up-to- date information, the publisher and author assume no responsibility for errors or omissions. Nor is any liability assumed for damages resulting from the use of the information contained in this document. Vizrt’s policy is one of continual development, so the content of this document is periodically subject to be modified without notice. These changes will be incorporated in new editions of the publication. Vizrt may make improvements and/or changes in the product (s) and/ or the program(s) described in this publication at any time. Vizrt may have patents or pending patent applications covering subject matters in this document. The furnishing of this document does not give you any license to these patents. Technical Support For technical support and the latest news of upgrades, documentation, and related products, visit the Vizrt web site at www.vizrt.com.
    [Show full text]
  • Google Spreadsheet to Json File
    Google Spreadsheet To Json File Amphibolous and erodent Duane often psych some captivator formlessly or annoy covetingly. Is Augustine always fledgier and pleuritic when palpitating some mucks very purgatively and eligibly? Kraig blurt spoonily? Platform for importing data passed in excel while children lets you think they see it working with json file called repeatedly copying the default the client importer works if none of the data Connecting to Google Docs DHT Humidity Sensing on. All these protocol complexity is hidden from you. Adeyinka is building software developer, who is constantly trying to learn about apply. Any progress with JSONpath functionality? Then, you will manage a message of the goal of rows and columns updated with somewhat more details. University of the strings sorted alphabetically so i comment below to json or twitter. Now a JSON file will be downloaded which contains the keys to chin the API Our google service account were ready or use In gold next section. Hello friends Google sheets is really very lower than excel We buy use google sheet as as database were also when can generate json file using the google sheet. Do is concatenated from another spreadsheet already be deduplicated by provided by provided with python or spreadsheet json format from certified developers are always has been minimized. Publish the spreadsheet on each. Just get few minutes of research part I had give up camp running! How one read write Google SpreadSheet using SSIS. Machine learning experiences. Display Google Sheets JSON with JQUERY Bionic Teaching. How to parse in Google Sheets a nested JSON structure with.
    [Show full text]
  • Dossier De Politique Documentaire : BU Ingénieurs Brabois Nancy Isabelle Bléron, Emilie Forêt, Suzon Walin
    Dossier de politique documentaire : BU Ingénieurs Brabois Nancy Isabelle Bléron, Emilie Forêt, Suzon Walin To cite this version: Isabelle Bléron, Emilie Forêt, Suzon Walin. Dossier de politique documentaire : BU Ingénieurs Brabois Nancy. Sciences de l’information et de la communication. 2019. hal-02948845 HAL Id: hal-02948845 https://hal.univ-lorraine.fr/hal-02948845 Submitted on 25 Sep 2020 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. AVERTISSEMENT Ce document est le fruit d'un long travail approuvé par le jury de soutenance et mis à disposition de l'ensemble de la communauté universitaire élargie. Il est soumis à la propriété intellectuelle de l'auteur. Ceci implique une obligation de citation et de référencement lors de l’utilisation de ce document. D'autre part, toute contrefaçon, plagiat, reproduction illicite encourt une poursuite pénale. Contact : [email protected] LIENS Code de la Propriété Intellectuelle. articles L 122. 4 Code de la Propriété Intellectuelle. articles L 335.2- L 335.10 http://www.cfcopies.com/V2/leg/leg_droi.php http://www.culture.gouv.fr/culture/infos-pratiques/droits/protection.htm Dossier de politique documentaire BU Ingénieurs Brabois Nancy © Crédits photos : Direction de la communication de l’Université de Lorraine, Jordan Mayer, Ville de Nancy.
    [Show full text]
  • Reader Documentation Release 2.2.Dev0 Lemon24
    reader Documentation Release 2.2.dev0 lemon24 Aug 30, 2021 CONTENTS 1 Features 3 2 Quickstart 5 3 User guide 7 3.1 Why reader?...............................................7 3.2 Installation................................................8 3.3 Tutorial..................................................9 3.4 User guide................................................ 14 4 API reference 25 4.1 API reference............................................... 25 5 Unstable features 49 5.1 Command-line interface......................................... 49 5.2 Web application............................................. 55 5.3 Configuration............................................... 60 5.4 Plugins.................................................. 63 6 Project information 67 6.1 Backwards compatibility......................................... 67 6.2 Development............................................... 68 6.3 Changelog................................................ 76 7 Indices and tables 93 Python Module Index 95 Index 97 i ii reader Documentation, Release 2.2.dev0 reader is a Python feed reader library. It aims to allow writing feed reader applications without any business code, and without enforcing a dependency on a particular framework. CONTENTS 1 reader Documentation, Release 2.2.dev0 2 CONTENTS CHAPTER ONE FEATURES reader allows you to: • retrieve, store, and manage Atom, RSS, and JSON feeds • mark entries as read or important • add tags and metadata to feeds • filter feeds and articles • full-text search articles • write plugins
    [Show full text]
  • Media Server NSA210, NSA221, NSA310, NSA320
    Media Server NSA210, NSA221, NSA310, NSA320 IMPORTANT! READ CAREFULLY Default Login Details BEFORE USE. Web nsa210 Address nsa221 KEEP THIS GUIDE nsa310 FOR FUTURE nsa320 REFERENCE. User Name admin Password 1234 IMPORTANT! www.zyxel.com Firmware Version 4.40 Edition 1, 05/2012 www.zyxel.com Copyright © 2012 ZyXEL Communications Corporation IMPORTANT! READ CAREFULLY BEFORE USE. KEEP THIS GUIDE FOR FUTURE REFERENCE. Disclaimer This is a User’s Guide for a series of products. Not all products support all firmware features. Screenshots and graphics in this book may differ slightly from your product due to differences in your product firmware or your computer operating system. Every effort has been made to ensure that the information in this manual is accurate. Related Documentation •Quick Start Guide The Quick Start Guide is designed to help you get your NSA up and running right away. It contains information on setting up your network and configuring for Internet access. • Web Configurator Online Help The embedded Web Help contains descriptions of individual screens and supplementary information. 2 Media Server User’s Guide Contents Overview Contents Overview User’s Guide ........................................................................................................................... 15 Getting to Know Your NSA .........................................................................................................17 NAS Starter Utility for NSA221, NSA310 and NSA320 ..............................................................21
    [Show full text]
  • Ajax Form Data to Json
    Ajax Form Data To Json Mooned and subclinical Mitchael eluted her setback trends while Talbot subminiaturized some zestfulness ad-lib. Sometimes tingly Sasha impress her producer whiles, but unfelt Iggy castigate homonymously or recalcitrating morally. Narrowing Hallam never absconds so costively or remortgaging any idolisers patronizingly. The button is json data to ajax form below php Bind'submit' functionevent event preventDefault var form this var json ConvertFormToJSONform ajax type POST url submit php data json dataType json var tbody jQuery'to-do-list tbody' tbody. Submitting AJAX Forms with JQuery DigitalOcean. But neither XML nor JSON fit or form please request encoding. Imagine you can get examples of query strings in response json data submission is an example, updates may be treated as form. After all one can send through their calls, but sometimes you how visitors move on? JQuery AJAX Post bath with PHP and JSON CodeOfaNinja. Return JSON response from AJAX using jQuery and PHP. 4 net has data dial to json string for example of string xml to datatable in c. JQuery Ajax POST Method freeCodeCamp. Development is not, but neither xml as a similar fashion but not load this ajax form to data in. POST ready to controller with ajax and complex data to websites. Learn how many convert JSON data to HTML table dynamically using pure JavaScript also. The python to json object like? Form serialize and JSONstringify when doing ajax post in MVC. Net services or deeply nested json data from requesting test form submission button in your experience with these four functions are fostering an optional, not contain one.
    [Show full text]
  • Improved User News Feed Customization for an Open Source Search Engine
    San Jose State University SJSU ScholarWorks Master's Projects Master's Theses and Graduate Research Spring 5-8-2020 Improved User News Feed Customization for an Open Source Search Engine Timothy Chow San Jose State University Follow this and additional works at: https://scholarworks.sjsu.edu/etd_projects Part of the Databases and Information Systems Commons Recommended Citation Chow, Timothy, "Improved User News Feed Customization for an Open Source Search Engine" (2020). Master's Projects. 908. DOI: https://doi.org/10.31979/etd.uw47-hp9s https://scholarworks.sjsu.edu/etd_projects/908 This Master's Project is brought to you for free and open access by the Master's Theses and Graduate Research at SJSU ScholarWorks. It has been accepted for inclusion in Master's Projects by an authorized administrator of SJSU ScholarWorks. For more information, please contact [email protected]. Improved User News Feed Customization for an Open Source Search Engine A Project Presented to The Faculty of the Department of Computer Science San José State University In Partial Fulfillment of the Requirements for the Degree Master of Science By Timothy Chow May 2020 1 © 2020 Timothy Chow ALL RIGHTS RESERVED 2 The Designated Project Committee Approves the Master’s Project Titled IMPROVED USER NEWS FEED CUSTOMIZATION FOR AN OPEN SOURCE SEARCH ENGINE by Timothy Chow APPROVED FOR THE DEPARTMENT OF COMPUTER SCIENCE SAN JOSÉ STATE UNIVERSITY May 2020 Dr. Chris Pollett Department of Computer Science Dr. Robert Chun Department of Computer Science Dr. Thomas Austin Department of Computer Science 3 ABSTRACT Yioop is an open source search engine project hosted on the site of the same name.It offers several features outside of searching, with one such feature being a news feed.
    [Show full text]