Code Monkey home page Code Monkey logo

feedbin-api's Introduction

Feedbin

Feedbin is a simple, fast and nice looking RSS reader.

Feedbin Screenshot

Support

Support is available to Feedbin customers by emailing [email protected]. This is also the best way to submit feature requests.

No support is provided for installing the open-source project.

Introduction

Feedbin is a web based RSS reader. It provides a user interface for reading and managing feeds as well as a REST-like API for clients to connect to.

Feedbin's goal is to be a great web-based RSS service. This goal is at odds with being a great self-hosted RSS reader. There are a lot of moving parts and things to configure, and for that reason I do not recommend that you run Feedbin in production unless you have plenty of time to get it properly configured.

If you're looking for a self-hosted RSS reader check out:

And if you really want to run the whole Feedbin stack, take a look at this Docker version. If you would like to try Feedbin out you can sign up for an account.

The main Feedbin project is a Ruby on Rails application. In addition to the main project there are several other services that provide additional functionality. None of these services are required to get Feedbin running locally.

Optional Extras

  • Privacy Please: Privacy Please is an https image proxy. In production Feedbin is https only. One issue with https is all assets must be served over https as well or the browser will show insecure content warnings. Privacy Please proxies all image requests through an https enabled host to prevent this. Using a proxy has the added benefit of providing privacy while using Feedbin.
  • extract: Extract is a Node.js service that extract content from web pages. It is used to extract the full content of an article when a feed only provide excerpts.
  • pigo: pigo provides face detection for better preview image cropping. Make sure it's available in your PATH or provide a PIGO_PATH environment variable.

Requirements

Installation

Ultimately, you'll need a Ruby environment and a Rack compatible application server.

First, install the dependencies listed under requirements.

Next clone the repository and install the application dependencies

git clone https://github.com/feedbin/feedbin.git
cd feedbin
bundle

If you encounter any errors after running bundle there is a problem installing one of the dependencies. You must find out how to get this dependency installed on your platform.

Configure

Feedbin uses environment variables for configuration. Feedbin will run without most of these, but various features and functionality will be turned off.

Rename .env.example to .env and customize it with your settings.

Setup the database

rake db:setup

Start the processes

bundle exec foreman start

feedbin-api's People

Contributors

benubois avatar brendanlong avatar gbouerat avatar paulombcosta avatar robzolkos avatar sesh avatar wezm avatar zegnat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

feedbin-api's Issues

extracted_content_url

This morning, I found a new field named 'extracted_content_url' from Feedbin's entry endpoint call.
It's not documented yet.

What's is this field?
Is it temporary or permanent?
What's the purpose of this field?

Can i use this field safely?

identifying newsletters via metadata instead of parsing URL

Extended mode allows me to identify tweets by looking for twitter_id, and handle them separately.

As best as I can tell, the only way to do the same for newsletters is by inspecting the URL - it'd be nice if this was a separate metadata field.

(Obviously lowest of priorities, since so easily addressable, but maybe something to keep in mind, especially if you end up adding more feed-types-that-aren't-quite-actually-feeds :)

Trying to use Taggings - but I have confusing results.

I am attempting to create a new tagging. It fails every time. In my Web interface I have a Single Tag (if there's a way to see all tags, even if not being used, I haven't seen it) called Twitter which is attributed to a single subscription.

If I do curl --verbose --user "usr:pwd" https://api.feedbin.com/v2/tags.json it returns

[{"id":106844,"name":"news-release"},{"id":29630,"name":"rss"}]

If I do curl --verbose --user "usr:pwd" https://api.feedbin.com/v2/taggings.json

It returns more than 25 entries, none of which says Twitter?

Ideas? Perhaps my account ahs a lot of garbage and needs to be cleaned out?

Searching Entries

I'm building a client that exposes the FeedBin search API, and I'm looking for a way to implement an arbitrary search (eg. a query the user only intends to use once).
I don't see a way to search the Entries endpoint. Would the correct way to implement this feature be to create a saved search, then immediately delete it after loading the results?

Add Pages support to API

Please add Pages support to API. So other services can integrate with your read later support.

weird key in enclosure object of entry object

What is the public_id_alt key in enclosure objects? Some of my entries have them.

{
  "id" : 1413511674,
  "feed_id" : 1273470,
  "title" : "Switching OS",
  "author" : "pfcoperez",
  "summary" : "As I have already mentioned, uRobot project pretends to be a very cheap project I...",
  "content" : "<p>As I have already mentioned, uRobot project  ........ and modify this script.</p>\n",
  "url" : "http://orionsword.no-ip.org/blog/wordpress/?p=71",
  "published" : "2012-10-24T14:38:26.000000Z",
  "created_at" : "2017-04-07T07:05:09.361550Z",
  "enclosure" : {
    "public_id_alt" : "462f67f6d05eddc33185cf34b380cfa647fa4d1b"
  }
}

Modified Articles, updated_entries.json

Hi. I have an entry that I would expect to see in updated_entries.json, but I do not.

This is the relevant subscription from subscriptions.json:

{
    "id": 5446758,
    "created_at": "2020-04-10T23:08:05.129193Z",
    "feed_id": 1758040,
    "title": "framed blog",
    "feed_url": "http://jbframed.blogspot.com/feeds/posts/default",
    "site_url": "http://jbframed.blogspot.com/"
  }

This is the entry that has a modification:

GET https://api.feedbin.com/v2/entries.json?ids=2410826543&mode=extended

[
  {
    "id": 2410826543,
    "feed_id": 1758040,
    "title": "Post - changed",
    "author": "John Brayton",
    "summary": "Post v2",
    "content": "Post v2",
    "url": "https://jbframed.blogspot.com/2020/04/post-not-changed-yet.html",
    "published": "2020-04-10T23:06:00.000000Z",
    "created_at": "2020-04-10T23:56:43.849710Z",
    "original": {
      "author": "John Brayton",
      "content": "here is my post. It does not have any changes yet.",
      "title": "Post - not changed yet",
      "url": "http://jbframed.blogspot.com/2020/04/post-not-changed-yet.html",
      "entry_id": "tag:blogger.com,1999:blog-5317123248993435941.post-9065946295209184506",
      "published": "2020-04-10T23:06:00.000Z",
      "data": {
        "itunes_image": null
      }
    },
    "twitter_id": null,
    "twitter_thread_ids": [],
    "extracted_content_url": "https://extract.feedbin.com/parser/feedbin/26910dc4950f48fb380ef06d4e8199d5885462ef?base64_url=aHR0cHM6Ly9qYmZyYW1lZC5ibG9nc3BvdC5jb20vMjAyMC8wNC9wb3N0LW5vdC1jaGFuZ2VkLXlldC5odG1s",
    "images": null,
    "enclosure": null,
    "extracted_articles": [],
    "json_feed": null
  }
]

The JSON reflects that the title and content of the article changed.

But I do not see this ID in my list of updated_entries.json:

GET https://api.feedbin.com/v2/updated_entries

[
  2411117965,
  2410751089,
  2410707241,
  2410606924,
  2409597901,
  2408420500,
  2409874238,
  2408332219,
  2409316024,
  2408973841,
  2406015352,
  2408300251,
  2405967210,
  2408317238,
  2407860510,
  2407489736,
  2407241196,
  2407416511,
  2406272148,
  2405876664,
  2403029363,
  2405302662,
  2403082460,
  2404032058,
  2405307823,
  2404611147,
  2401999412,
  2402973340,
  2402825283,
  2403864536,
  2403757566,
  2401082049,
  2400901201,
  2396800697,
  2402726095,
  2402957970,
  2402916655,
  2402065975,
  2402727600,
  2401988649,
  2401722028,
  2398404416,
  2400732330,
  2401849398,
  2399157134,
  2401664249,
  2399340552,
  2401082297,
  2401114067,
  2400268440,
  2400609561,
  2399326701,
  2400388414,
  2400438725,
  2400491796,
  2399347014,
  2399983964,
  2399405685,
  2399372578,
  2399398156,
  2399188757,
  2399152248,
  2398956368,
  2399103545,
  2398495075,
  2396475617,
  2397972564,
  2397332613,
  2395721988,
  2395721998,
  2396850015,
  2394504452,
  2396301315,
  2395721990,
  2397325332,
  2397279590,
  2393045808,
  2388605718,
  2394402716,
  2394573254,
  2389516799,
  2386328675,
  2375784904,
  2375825397,
  2374504144,
  2373264560,
  2373264561,
  2372638440,
  2361708738,
  2359578246,
  2359645930,
  2357013887,
  2352475813,
  2352357259,
  2350250806,
  2327446833,
  2323690532,
  2319644871,
  2321463992,
  2322042487
]

These API calls are from my [email protected] account. Is something working incorrectly, or am I wrong to expect the article with ID 2410826543 to appear in updated_entries.json?

I thought the problem might be that the article was marked read, but I repeated the experiment with another article (Entry ID 2411354490) and was careful not to read it or mark it read. The content of that article changed, but that article also did not appear in updated_entries.json.

Include starred and read status in entries JSON

It would be very helpful if the starred and read status of an entry could appear in its JSON output - not having it there means there's no way to directly access this information except to query for all unread and starred entries and match IDs.

Error when making request

Hey there team, I'm running into SSL error when making a request, either to api.feedbin.com or feedbin.com. Anything I can do about this?

(node:361) UnhandledPromiseRejectionWarning: Error: write EPROTO 140230432048960:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:../deps/openssl/openssl/ssl/s23_clnt.c:802:

    at WriteWrap.afterWrite [as oncomplete] (net.js:868:14)
(node:361) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:361) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Thank you and hoping to hear back,
Derick

cleaned up HTML through the API?

It'd be nice if the API offered a way to get the Mercury-ized HTML of the body as Feedbin sees it rather than just the raw entry. I can obviously do this myself to some extent, but to be frank the old ports of the original Readability code are showing their age :/

(Totally understand if this isn't possible under your terms with Mercury.)

Other auth strategies?

I was wondering if you have any plans to implement other auth strategies - maybe oauth or something. Basic auth is a great start, but who wants to store other people's passwords!

Or what about an API token that can be issued per app (and revoked)?

Just wondering where you see this API headed. Thanks!

CORS issue when requesting API from webapp

Hello,

I'm developing an RSS Reader app using Feedbin as a backend.
But I run into a lot of trouble with CORS : "Access to XMLHttpRequest at 'https://api.feedbin.com/v2/icons.json' from origin [xxx] has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource."

When running my app in Electron, it works. When running it in the browser as a progressive web app, it doesn't, in localhost but also on all servers I'm trying to upload it. I have to proxy requests through something like "https://cors-anywhere.herokuapp.com/" but obviously it's not the best option, even if I manage to route the requests through a server I own.

I guess the API is mostly dedicated to native apps, but could it be possible to somehow remove those cross-origin restrictions ?

Thanks,

Simon

Hi @karllhughes,

Hi @karllhughes,

There isn't a way to do this currently. The API is designed more from a full-sync perspective so it doesn't have a lot of convenience end-points.

One approach would be to collect the feed_ids in a tag from Taggings, then get all of the entries in each of the feeds from the /v2/feeds/feed_id/entries.json endpoint.

Please let me know if you have questions about this.

Thanks!

Originally posted by @benubois in #19 (comment)

Attempting to Mark multiple entries as Read

I'm attempting to pass multiple ID using the below from the docs

DELETE /v2/unread_entries.json will mark the specified entry_ids as read.
Request

{
"unread_entries": [4089, 4090, 4091]
}

Using RestSharp, i'm doing the below....it returns httpCode 200 however the records are not Marked as unread...the josnbody being passed in looks like

{ "unread_entries": [2215599374,2215589372] }

        var url = "https://api.feedbin.com/v2/unread_entries.json";

          var pwd = "pwd";
          var user = "user";

          var client = new RestClient(url);
          client.Authenticator = new HttpBasicAuthenticator(user, pwd);

          var request = new RestRequest(url, Method.DELETE);

          string body = "{ \"unread_entries\": [" + ids + "] }";

          request.RequestFormat = DataFormat.Json;
          request.AddParameter("application/json", body, ParameterType.RequestBody);

          return client.Execute<HttpStatusCode>(request).StatusCode;

Feed title changes not reflected in the API

While playing around with the API I noticed that changes to a feed's title are not carried through to the API. Here's an example of what the API returns (with sensitive data redacted):

{
  'feed_url': 'https://example.com/feed.xml',
  'id': 12345,
  'site_url': 'https://example.com,
  'title': 'The Original Title'
}

And here's what I'd expect:

{
  'feed_url': 'https://example.com/feed.xml',
  'id': 12345,
  'site_url': 'https://example.com,
  'title': 'Something completely different'
}

Is this intended? If so, is there a way to get the altered feed title?

Atom/RSS Feeds from Topics or Tags?

So, Feedbin offers a "Starred" feed as a way to integrate Feedbin content into other feed-reading APIs or apps. Why not offer an Atom/RSS feed for all topics/tags/categories in Feedbin, so that users could use whatever feedreader app they wanted with Feedbin?

At present it looks like there is no trustworthy (Libre or Open source) app for Feedbin, but if there were Atom/RSS feeds then I could use any number of existing feed readers to subscribe.

Is this possible already, and I'm just missing something? :)

How to Post a new subscription to a Tag?

This isn't an Issue, but I'm not entirely clear..if I've setup a number of Tags in Feedbin, how can I Post a new Subscription with a specific Tag? The Post only allows for a URL

{
"feed_url": "http://daringfireball.net/index.xml"
}

Should I create the Subscription, grab the resulting feed_id, then Create a new Taggings?

{
"feed_id": 1,
"name": "Design"
}

extracted_content_url Missing From Extended Mode

It appears that the extracted_content_url parameter is missing from the entry payload when extended mode is enabled.

Example (auth removed):

 curl "https://api.feedbin.com/v2/entries/2176629936.json"

{
   "summary" : "Baltimore has allowed an AL-record 245 homers (56 by the Yankees), 13 from the season mark set by Cincinnati in 2016.",
   "title" : "Yankees put on power display against Orioles",
   "id" : 2176629936,
   "url" : "https://www.thestar.com/sports/baseball/2019/08/12/yankees-put-on-power-display-against-orioles.html",
   "extracted_content_url" : "https://extract.feedbin.com/parser/feedbin/384a1f22aad4f6aa933f2812dfa2cbe139a9c44a?base64_url=aHR0cHM6Ly93d3cudGhlc3Rhci5jb20vc3BvcnRzL2Jhc2ViYWxsLzIwMTkvMDgvMTIveWFua2Vlcy1wdXQtb24tcG93ZXItZGlzcGxheS1hZ2FpbnN0LW9yaW9sZXMuaHRtbA==",
   "feed_id" : 1023350,
   "created_at" : "2019-08-13T02:50:05.380370Z",
   "content" : "<img src=\"https://www.thestar.com/content/dam/thestar/sports/baseball/2019/08/12/yankees-put-on-power-display-against-orioles/yankees_slide.jpg\"><br>Baltimore has allowed an AL-record 245 homers (56 by the Yankees), 13 from the season mark set by Cincinnati in 2016.",
   "published" : "2019-08-13T02:47:07.000000Z",
   "author" : "Ronald Blum - The Associated Press"
}
curl "https://api.feedbin.com/v2/entries/2176629936.json?mode=extended"

{
   "feed_id" : 1023350,
   "created_at" : "2019-08-13T02:50:05.380370Z",
   "original" : null,
   "id" : 2176629936,
   "enclosure" : null,
   "content" : "<img src=\"https://www.thestar.com/content/dam/thestar/sports/baseball/2019/08/12/yankees-put-on-power-display-against-orioles/yankees_slide.jpg\"><br>Baltimore has allowed an AL-record 245 homers (56 by the Yankees), 13 from the season mark set by Cincinnati in 2016.",
   "title" : "Yankees put on power display against Orioles",
   "extracted_articles" : [],
   "summary" : "Baltimore has allowed an AL-record 245 homers (56 by the Yankees), 13 from the season mark set by Cincinnati in 2016.",
   "twitter_id" : null,
   "images" : {
      "original_url" : "https://www.thestar.com/content/dam/thestar/sports/baseball/2019/08/12/yankees-put-on-power-display-against-orioles/yankees_slide.jpg",
      "size_1" : {
         "height" : 304,
         "cdn_url" : "https://images.feedbinusercontent.com/66d5809/66d5809ba5b857ea441863396b6d7bea46403d01.jpg",
         "width" : 542
      }
   },
   "published" : "2019-08-13T02:47:07.000000Z",
   "twitter_thread_ids" : [],
   "json_feed" : null,
   "author" : "Ronald Blum - The Associated Press",
   "url" : "https://www.thestar.com/sports/baseball/2019/08/12/yankees-put-on-power-display-against-orioles.html"
}

I see the same behaviour whether I use /entries.json, /entries.json?ids=1234 or /entries/1234.json.

The sample in the About Extended Mode docs suggests that extended mode should have extracted_content_url when available. Is that erroneous, or can it be added to extended mode (I hope so)?

Thanks

Indicate when a tweet entry is a retweet of someone elses tweet, as opposed to an original tweet

In my application, I need to handle retweets and original tweets differently. It seems like the best way to identify a retweet at the moment is to see if the content includes the 'Retweeted by Handle' string with a pattern like like (\<small\>Retweeted by )\w+(\<\/small\>). But this isn't super reliable because it could appear in the content otherwise, and if the feedbin markup changes it will break.

Would an appropriate solution be for the entry object to declare if this tweet is a retweet or not with something like an is_retweet Boolean?

OAuth

will you speak it?

Using v2/feeds/{id}/entries.json

I’m not receiving the results I expected, based on the docs.

Example, using the below call I retrieve all Subscriptions without issue
https://api.feedbin.com/v2/subscriptions.json

According to this doc
https://github.com/feedbin/feedbin-api/blob/master/content/entries.md

GET /v2/entries.json
Returns a paginated array of all entries for the user.
The below should return an entire list of Entries

When I use the below, I get a 404
https://api.feedbin.com/v2/feeds/entries.json but returns 404 - Not Found

From later in the Docs

Using the below
GET /v2/feeds/203/entries.json
Returns a paginated array of all entries in feed_id 203

When I use the below, it appears to be return ALL entries for my Subscription, whereas in Feedbin directly, clicking on a Feed returns just the 2-3 entries for each.

https://api.feedbin.com/v2/feeds/{Id}/entries.json

Has anyone gotten this to work correctly? Am I doing it wrong?

No way to page unread_entries.json

unread_entries only returns 1000 unread entries. That's fine. Unfortunately it doesn't provide you any way of getting the next 1000 entries, making it impossible to use correctly if you have a large unread backlog.

v2/entries.json?ids=BLAH,BLAH returning 401 error with known good credentials

Sometime in the last day or so, Unread started getting

401 HTTP Basic: Access Denied 

for requests made to:

v2/entries.json?ids=BLAH

All other endpoints have not been tested, but subscriptions.json seems unaffected.

Unread's code has not changed here in several months, so I assume a server-side change is at fault.

Deleting a saved search doesn't invalidate the http cache

When requesting the saved_searches index at /saved_searches.json, the server responds with a 304 with a last-modified header of sometime in the past.

If a new saved search is created via API, the index request updates normally with a last-modified timestamp reflecting the creation of the new saved search.

However, if a saved search is deleted via API, the last-modified header from the index call retains its original date, thus preventing clients from updating the list of saved_searches correctly.

Unread count in subscriptions

I think, there should be an unread count, in the subscriptions-JSON. So next to id (what is the use of), created_at, feed_id, title, feed_url and site_url it would be nice, if there were a unread_count starting with 0 if it is empty.
This would make the JavaScript-Development (Windows Phone) much easier.

Updated Entries

I like Feedbin’s ability to tell when an entry has been updated. Right now Unread does not pick up changes to Feedbin entries. I would like to fix that. I am trying to determine the best way to do so.

It looks like I can call /v2/updated_entries.json to determine what articles have updates. Is there a way to determine what articles have been updated since last time I checked?

Image selection for underconsideration.com

This is a ticket motivated by this Twitter thread:

https://twitter.com/squaredpx/status/1267453178871713793

Articles for feeds from underconsideration.com seem to have recommended thumbnails that appear surprising. For example:

GET https://api.feedbin.com/v2/entries.json?ids=2464597597&mode=extended


[
  {
    "id": 2464597597,
    "feed_id": 1354585,
    "title": "Reviewed: New Logo and Identity for Popeyes by Jones Knowles Ritchie",
    "author": null,
    "summary": "“Eyes on the Prize” Established in 1927, Popeyes is a quick service restaurant offering a unique New Orleans style menu featuring spicy chicken, chicken tenders, fried shrimp, and other regional items. From a single location in the New Orleans suburb of",
    "content": "                            \n                        \n                                \u003ch1\u003e“Eyes on the Prize”\u003c/h1\u003e\n\n\n\n    \u003ca href=\"https://www.underconsideration.com/brandnew/archives/new_logo_and_identity_for_popeyes_by_jones_knowles_ritchie.php\"\u003e\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_logo_before_after.png\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\" class=\"webfeedsFeaturedVisual\"\u003e\u003c/a\u003e\n\n\n                        \n\n\n \n\n                                \n                                \n                                            \u003cp\u003eEstablished in 1927, \u003ca href=\"https://www.popeyes.com/\" target=\"_blank\"\u003ePopeyes\u003c/a\u003e is a quick service restaurant offering a unique New Orleans style menu featuring spicy chicken, chicken tenders, fried shrimp, and other regional items. From a single location in the New Orleans suburb of Arabi, Popeyes has grown into one of the world's largest chicken quick service restaurants with over 3,300 locations in the U.S. and around the world and last year's launch of its Chicken Sandwich brought unprecedented sales growth and popularity. With a big worldwide expansion in process, Popeyes has introduced a new identity designed by \u003ca href=\"https://www.jkrglobal.com/\" target=\"_blank\"\u003eJones Knowles Ritchie\u003c/a\u003e.\u003c/p\u003e\n\n                                            \n                                            \u003cblockquote\u003eTo further spread the product love to even more guests, it was time for Popeyes® to translate its Louisiana roots in a more modern approach by completely redesigning the brand's visual identity and restaurant image. Jones Knowles Ritchie, the international award-winning design firm, led the brand's visual identity refresh which started with the logo. The old playful Popeyes® logo has been matured with a contemporary typeface that elevates the brand and reflects the culinary depth that goes into making the Popeyes® signature foods.\u003cbr\u003e\u003cbr\u003eFans can expect to see the new visual identity continue to roll out across Popeyes® restaurants from packaging including to-go bags, cups and boxes, as well as uniforms and other merchandise. The hand-drawn brand pattern featured on the packaging reflects the vibrancy of Louisiana culture and the unadulterated joy that goes into making Popeyes® food.\u003c/blockquote\u003e\u003ch3\u003e\u003ca href=\"https://www.businesswire.com/news/home/20200529005095/en/Modern-Popeyes%C2%AE-Renaissance\" target=\"_blank\"\u003ePopeye's press release\u003c/a\u003e\u003c/h3\u003e\n\n\u003cfigure class=\"full\"\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_logo.png\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003cfigcaption\u003eLogo.\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eThe new logo is the perfect next step in the evolution of the Popeyes logo that began with the previous logo \u003ca href=\"https://www.underconsideration.com/brandnew/archives/popeyes_gets_jazzy.php\" target=\"_blank\"\u003edesigned by Pentagram's DJ Stout in 2008\u003c/a\u003e that tempered the zaniness of its predecessor and provided the first step of moving into orange as the brand color. The old logo retained the bounciness and quirkiness of the logo that came before it and served as a great segue into this new iteration that brings all the letters in line while maintaining the unicase approach and the unique traits of the \"P\"s and the \"S\". It's undoubtedly a more mature look but it still has enough of the unique personality that makes Popeyes, Popeyes.\u003c/p\u003e\n\n\u003cfigure class=\"full\"\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_logo_secondary.png\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003cfigcaption\u003eSecondary logo.\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eThe secondary logo is charming with a chicken that, I believe, is meant to look like a decorative weather vane. The typography could be a little more interesting, especially the \"19\" and \"72\" but the chicken, with its \"S\"-shaped tail makes it all the worthwhile.\u003c/p\u003e\n\n\u003cfigure class=\"full\"\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_pattern.png\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003cfigcaption\u003ePattern.\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cfigure class=\"full\"\u003e\u003cdiv class=\"video-container\"\u003e\u003cvideo controls controlslist=\"nodownload\" poster=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_pattern_animated.jpg\"\u003e\u003csource src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_pattern_animated.mp4\" type=\"video/mp4\"\u003eYour browser does not support the video tag.\u003c/source\u003e\u003c/video\u003e\u003c/div\u003e\n\u003cfigcaption\u003ePattern, animated.\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eAt the core of the identity is the hand-drawn pattern that has a very loose and unfinished aesthetic that comes almost as a shock in contrast to the usual super crisp consumer brand patterns -- thinking of things like \u003ca href=\"https://www.underconsideration.com/brandnew/archives/new_logo_identity_and_packaging_for_cadbury_by_bulletproof.php\" target=\"_blank\"\u003eCadbury\u003c/a\u003e or \u003ca href=\"https://www.underconsideration.com/brandnew/archives/miller_high_life_overhaul.php\" target=\"_blank\"\u003eMiller\u003c/a\u003e, among others. I'm torn about it because I enjoy the impetus behind it but I'm not a huge fan of the final drawings and lettering. I don't dislike it but I want very badly to love it because there is definitely something good here that separates Popeyes from the other QSR joints.\u003c/p\u003e\n\n\u003cfigure class=\"full\"\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_pattern_with_chicken.jpg\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003cfigcaption\u003ePattern with chicken.\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cfigure class=\"full\"\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_pattern_with_chicken_bag.jpg\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003cfigcaption\u003ePattern on a bag with chicken sandwich in the process of being made.\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cfigure class=\"full\"\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_packaging.jpg\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003cfigcaption\u003ePackaging.\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cfigure class=\"full\"\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_wildpostings.jpg\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003cfigcaption\u003eWild postings.\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cfigure class=\"full\"\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_billboard.jpg\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003cfigcaption\u003eBillboard.\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eMaybe part of why I am not convinced about the pattern is that the few applications shown lack some wow factor. I think the strongest element in the images above is the close-up photo of the fried chicken itself, not so much the pattern, colors, or packaging. To the identity's credit, that photo looks great in part because of the pattern under the chicken. Still, there is something missing to take this to the next JKR-esque level, \u003ca href=\"https://www.underconsideration.com/brandnew/archives/new_name_and_logo_for_dunkin_by_jones_knowles_ritchie.php\" target=\"_blank\"\u003ea la Dunkin'\u003c/a\u003e, which may not be a fair comparison but the wild posting image very much tries to recreate the lightning in a bottle of \u003ca href=\"https://www.underconsideration.com/brandnew/archives/dunkin_posters.jpg\" target=\"_blank\"\u003eDunkin's wild posting image\u003c/a\u003e and it doesn't quite have the same burst of energy.\u003c/p\u003e\n\n\u003cblockquote\u003eIn the United States, Popeyes® recently opened its first remodeled restaurant in Marrero, LA, just outside its hometown of New Orleans. The powder coated metals in the furniture and counter design are inspired by the iconic Saint Charles Market Car, utilitarian spaces and handcrafted details nod to the creative culture of the Bywater in New Orleans, and the personality and artwork celebrate the creole heritage that's been passed down over generations. This new image is being piloted in the U.S., with aims to expand nationally across existing and new restaurants.\u003cbr\u003e\u003cbr\u003eThe Popeyes® restaurants will now start to look different throughout the U.S. and around the world after a collaborative redesign, in partnership with the design firms Brand Bureau and Linehouse. On May 15th, the brand opened its first flagship restaurant in Shanghai, China. Equipped with high end technology and an elevated store design, but still rooted in the brand's Louisiana heritage, leveraging warm woods and neons inspired by New Orleans' Bourbon Street.\u003c/blockquote\u003e\u003ch3\u003e\u003ca href=\"https://www.businesswire.com/news/home/20200529005095/en/Modern-Popeyes%C2%AE-Renaissance\" target=\"_blank\"\u003ePopeye's press release\u003c/a\u003e\u003c/h3\u003e\n\n\u003cfigure class=\"full\"\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_restaurant_us_01.jpg\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003chr\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_restaurant_us_02.jpg\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003chr\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_restaurant_us_03.jpg\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003cfigcaption\u003eThe first remodeled restaurant in the U.S. in Marrero, LA. Stores have been redesigned in collaboration with \u003ca href=\"https://www.brandbureau.com/\" target=\"_blank\"\u003eBrand Bureau\u003c/a\u003e and \u003ca href=\"http://linehousedesign.com/\" target=\"_blank\"\u003eLinehouse\u003c/a\u003e.\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cfigure class=\"full\"\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_restaurant_shanghai_01.jpg\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003chr\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_restaurant_shanghai_02.jpg\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003chr\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_restaurant_shanghai_03.jpg\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003chr\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_restaurant_shanghai_04.jpg\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003cfigcaption\u003eFlagship restaurant in Shanghai, China.\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cfigure class=\"full\"\u003e\n\u003cimg src=\"https://www.underconsideration.com/brandnew/archives/popeyes_2020_restaurant_spain_01.jpg\" alt=\"New Logo and Identity for Popeyes by Jones Knowles Ritchie\"\u003e\n\u003cfigcaption\u003eRestaurant in Madrid, Spain.\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp class=\"end\"\u003eThe redesigned stores -- from the more \"normal\" in the U.S. to the fully tricked-out one in Shanghai -- are pretty great and do a nice job of making the interiors look much more inviting, exciting, and unique, without all the usual formica tabletops and generic finishes of most QSR places. Overall, this is definitely strong and vibrant work that will help build on the growing excitement around the Popeyes brand, one spicy fried chicken at a time.\u003c/p\u003e\n\n\n\t\t\t\t\t\t\t\t\n                                \n                                \n                                                        \n                        ",
    "url": "https://www.underconsideration.com/brandnew/archives/new_logo_and_identity_for_popeyes_by_jones_knowles_ritchie.php",
    "published": "2020-06-01T10:32:15.945603Z",
    "created_at": "2020-06-01T10:32:15.945586Z",
    "original": null,
    "twitter_id": null,
    "twitter_thread_ids": [],
    "extracted_content_url": "https://extract.feedbin.com/parser/feedbin/f5105e277faedf05afa5594f1096d9c7f2b96ce9?base64_url=aHR0cHM6Ly93d3cudW5kZXJjb25zaWRlcmF0aW9uLmNvbS9icmFuZG5ldy9hcmNoaXZlcy9uZXdfbG9nb19hbmRfaWRlbnRpdHlfZm9yX3BvcGV5ZXNfYnlfam9uZXNfa25vd2xlc19yaXRjaGllLnBocA==",
    "images": {
      "original_url": "https://www.underconsideration.com/brandnew/archives/popeyes_2020_pattern_with_chicken.jpg",
      "size_1": {
        "cdn_url": "https://images.feedbinusercontent.com/112c3df/112c3df7e2dd8f56a2709804f54abd387c4f40ad.jpg",
        "width": 542,
        "height": 304
      }
    },
    "enclosure": null,
    "extracted_articles": [],
    "json_feed": null
  }
]

The recommended thumbnail is a JPEG that is in the article, but the first image on in the article is a 2000x832 PNG. The 2000x832 PNG is also the og:image for the webpage. Looking briefly at the code for the Feedbin image processing service, it looks like Feedbin might not be considering PNG images for thumbnail. At least that's my hunch based on this line of code:

IGNORE_EXTENSIONS = [".gif", ".png", ".webp"]

I can see why PNG images might not be considered thumbnails, but I wonder if it makes sense to consider a PNG if it is also the og:image for the page.

Document favicon API

I just noticed that v2/favicons exists. Maybe other missing things exist. This would be useful to document.

Adding Twitter Feed via the API

Hi,
Is it possible to add a twitter "feed" to feedbin via the API? I've tried via the pages:

curl -d '{"url": "https://twitter.com/UKHouseofLords"}' -H "Content-Type: application/json" --user "[email protected]:password" -X POST https://api.feedbin.com/v2/pages.json

and via the subscriptions:

curl -d '{"feed_url": "https://twitter.com/UKHouseofLords"}' -H "Content-Type: application/json" --user "[email protected]:password" -X POST https://api.feedbin.com/v2/subscriptions.json

The former appears to add a page, but it is empty and not listed as a feed. The latter returns a 404 error.

Thanks

Missing pagination headers

I'm noticing that the links header doesn't always appear when it should.

For example when I load a search from https://api.feedbin.com/v2/saved_searches/8259.json, the links header says:

<https://api.feedbin.com/v2/saved_searches/8259.json?page=2>; rel="next", <https://api.feedbin.com/v2/saved_searches/8259.json?page=23>; rel="last"

So it looks like there are 23 pages. If I load each page, I notice that the header disappears at page 6:

1 https://api.feedbin.com/v2/saved_searches/8259.json <https://api.feedbin.com/v2/saved_searches/8259.json?page=2>; rel="next", <https://api.feedbin.com/v2/saved_searches/8259.json?page=23>; rel="last"

2 https://api.feedbin.com/v2/saved_searches/8259.json?page=2 <https://api.feedbin.com/v2/saved_searches/8259.json?page=1>; rel="first", <https://api.feedbin.com/v2/saved_searches/8259.json?page=1>; rel="prev", <https://api.feedbin.com/v2/saved_searches/8259.json?page=3>; rel="next", <https://api.feedbin.com/v2/saved_searches/8259.json?page=23>; rel="last"

3 https://api.feedbin.com/v2/saved_searches/8259.json?page=3 <https://api.feedbin.com/v2/saved_searches/8259.json?page=1>; rel="first", <https://api.feedbin.com/v2/saved_searches/8259.json?page=2>; rel="prev", <https://api.feedbin.com/v2/saved_searches/8259.json?page=4>; rel="next", <https://api.feedbin.com/v2/saved_searches/8259.json?page=23>; rel="last"

4 https://api.feedbin.com/v2/saved_searches/8259.json?page=4 <https://api.feedbin.com/v2/saved_searches/8259.json?page=1>; rel="first", <https://api.feedbin.com/v2/saved_searches/8259.json?page=3>; rel="prev", <https://api.feedbin.com/v2/saved_searches/8259.json?page=5>; rel="next", <https://api.feedbin.com/v2/saved_searches/8259.json?page=23>; rel="last"

5 https://api.feedbin.com/v2/saved_searches/8259.json?page=5 <https://api.feedbin.com/v2/saved_searches/8259.json?page=1>; rel="first", <https://api.feedbin.com/v2/saved_searches/8259.json?page=4>; rel="prev", <https://api.feedbin.com/v2/saved_searches/8259.json?page=6>; rel="next", <https://api.feedbin.com/v2/saved_searches/8259.json?page=23>; rel="last"

6 https://api.feedbin.com/v2/saved_searches/8259.json?page=6 undefined

7 https://api.feedbin.com/v2/saved_searches/8259.json?page=7 undefined

So in my code I'm only looking at the header the first time, and counting up to the "last" value.

Ids in Taggings don't match IDs in Tags

Hello Ben, sorry to be so annoying...

i want to be able to categorize my feeds so i'm using tags, however I can't get the taggings endpoint to make sense to me.

I use this curl

curl --verbose --user "usr:pwd" https://api.feedbin.com/v2/tags.json

which returns
[{"id":901,"name":"Blog"},{"id":106685,"name":"canada.ca"},{"id":447,"name":"Twitter"}]
which is what i see in the FeedBin interface as well.

However when I run this curl

curl --verbose --user "usr:pwd" https://api.feedbin.com/v2/taggings.json

I get

[{"id":4532308,"feed_id":1674755,"name":"Twitter"},{"id":4532307,"feed_id":1674766,"name":"Twitter"},{"id":4532305,"feed_id":1674793,"name":"Twitter"},
{"id":4532304,"feed_id":806754,"name":"Blog"},{"id":4532300,"feed_id":1671857,"name":"canada.ca"},{"id":4532297,"feed_id":1671855,"name":"canada.ca"}]

which doesn't include any of the IDs from the first call.

If i still try

curl --verbose --user "usr:pwd" https://api.feedbin.com/v2/taggings/447.json
which i expect to return all the Twitter tags i get a 403.

Sorry, not clear what id I should be using?

Retrieving read entries, getting entry count

When Unread retrieves articles, it shows status text such as “Retrieving unread articles (500 of 2048)”. It is able to determine the number of remaining articles because it first calls /v2/unread_entries.json, determines which entries in the result it does not have, and then retrieves those entries by calling /v2/entries.json?ids=….

Currently Unread only retrieves articles that are unread or starred, but I am adding the ability to retrieve recent articles that have already been read. Is there a way to get a list of all entry ID values newer a certain date in one API call? This would be ideal for me.

If that is not possible, is there a way to determine the total number of entries that will be returned for a call to /v2/entries.json?since= before iterating through each page of entries? (It looks like I can get an approximation based on the rel="last" link, but I am looking for something more precise.)

Thank you.

Feature Request: Remove Pagination when fetching Saved Searches' entry IDs only.

Please consider removing the requirement to paginate when getting a Saved Search's entry IDs using eg. GET /v2/saved_searches/1.json with include_entries: set to false.

In my testing, a simple saved search has more than 100k result count, requiring my offline-first client to send more than 1000 requests to just get entry IDs of entries I already have locally cached.

Feature Request: An Endpoint for Verifying Basic Auth Credentials

The flow in most mobile applications would benefit from an endpoint that would provide a quick verification of the basic auth credentials. Before the application attempts to fetch any model data, it needs to know if it can safely dismiss the login interface or kick up an error.

Something like:

/v2/authenticate

Returning 200 if verified or 403 if incorrect. No other data would be needed.

starred=true gives me a server error

It's entirely possible that I am misunderstanding or misusing an element of the API, but I can't seem to get entries.json?starred=true to produce results.

I was trying to make it work in a little Chrome extension I've been whipping up and I was getting nowhere, so I started testing it directly in the browser (logging in directly when asked):

For now I've switched to using starred_entries.json and then using the entries.json?ids= construction to get the appropriate entries.

Thanks for any light you can shed (and for an awesome RSS reader).

Circular redirect exception on phone

Started from several days ago, I couldn't connect the server using my Android phone, the HttpClient keep throwing ClientProtocolException with circular redirect. However, I can use the API in browser, it always get me the correct response.

Entry documentation should mention that title and content can be null

I'm occasionally getting entries like this back from entries.json:

{
  "id" : 1382839857,
  "feed_id" : 245359,
  "title" : null,
  "author" : "Freddie",
  "summary" : "Since a couple of people from Twitter have recently been calling attention to this...",
  "content" : "<p>Since a couple of people from Twitter have recently been calling attention to this Documents folder, I’m adding this note to say that this is a storehouse of stuff that wasn’t meant for general public consumption, and I’ll password protect it from now on. Nothing about this site is meant to seek attention; I’m just trying to hold down this online space.</p>\n",
  "url" : "http://fredrikdeboer.com/2017/02/28/72/",
  "published" : "2017-02-28T01:25:05.000000Z",
  "created_at" : "2017-02-28T01:25:11.894143Z"
}
{
  "id" : 1224749045,
  "feed_id" : 24352,
  "title" : null,
  "author" : "Arnold Kling",
  "summary" : "Blogging will be light for a while, as we adjust to being grandparents. I have no...",
  "content" : "<p>Blogging will be light for a while, as we adjust to being grandparents.</p>\n<p><a href=\"http://www.arnoldkling.com/blog/wp-content/uploads/2016/08/in-hospital.jpg\"><img src=\"http://www.arnoldkling.com/blog/wp-content/uploads/2016/08/in-hospital-300x225.jpg\" alt=\"in hospital\" width=\"300\" height=\"225\" class=\"alignnone size-medium wp-image-7371\"></a></p>\n<p>I have no idea why WordPress insists on turning us upside down.</p>\n<p><a class=\"a2a_button_facebook\" href=\"http://www.addtoany.com/add_to/facebook?linkurl=http0X0.0000000001001P-10220.0000000.000000www.arnoldkling.com0.000000blog0.00000073680.000000&amp;linkname=\" title=\"Facebook\" rel=\"nofollow\" target=\"_blank\"></a><a class=\"a2a_button_twitter\" href=\"http://www.addtoany.com/add_to/twitter?linkurl=http0X0.07EFD5A6AFFE8P-10220.0000000.000000www.arnoldkling.com0.000000blog0.00000073680.000000&amp;linkname=\" title=\"Twitter\" rel=\"nofollow\" target=\"_blank\"></a><a class=\"a2a_button_google_plus\" href=\"http://www.addtoany.com/add_to/google_plus?linkurl=http0X0.07EFD58B3E4P-10220.0000000.000000www.arnoldkling.com0.000000blog0.00000073680.000000&amp;linkname=\" title=\"Google+\" rel=\"nofollow\" target=\"_blank\"></a><a class=\"a2a_dd a2a_target addtoany_share_save\" href=\"https://www.addtoany.com/share_save#url=http0X0.00068P-10220.0000000.000000www.arnoldkling.com0.000000blog0.00000073680.000000&amp;title=\" id=\"wpa2a_10\"></a></p>",
  "url" : "http://www.arnoldkling.com/blog/7368/",
  "published" : "2016-08-19T16:25:00.000000Z",
  "created_at" : "2016-08-19T16:52:38.590590Z"
}
{
  "id" : 1408608230,
  "feed_id" : 873923,
  "title" : "I wonder how much \"budgeting expands to fit the space available\" is not a general principle but an aspect of culture. Generally, Americans tend to spend a lot of their available money to the extent of going into debt even in situations where that isn't warranted, whereas, say, Germans tend to have a lot of savings even if limited spending tends to hurt the economy. And there are actual statistics to back this up.",
  "author" : null,
  "summary" : "",
  "content" : null,
  "url" : "https://slatestarscratchpad.tumblr.com/post/159087145881",
  "published" : "2017-04-01T21:32:12.000000Z",
  "created_at" : "2017-04-01T21:49:44.318076Z"
}

Since title and content seem to be nullable, that should be mentioned in the API docs.

(Ideally the documentation would mention exact types rather than just examples, but this is a major one where a program I'm working on was crashing because it wasn't expecting nulls)

marking articles as read always returns null

Marking articles as read always returns null.

I followed the docs here, but have been unable to mark an article as read with either the DELETE or POST methods. Instead, I always see a 200 response status, with a body of simply null. Then, when I query for unread articles, the article continues to show up (the docs do mention that if it doesnt return a list of responses then it didnt go through).

my submitted response body looks like:

{"unread_entries":[1993562351]}

Is there something im missing?

Issue starring entries

Currently my Feedbin client is able to "unstar" entries, but I cannot get starring to work.

My requests look like this:

Unstar (working)

DELETE https://api.feedbin.me/v2/starred_entries.json?starred_entries=102785763 HTTP/1.1
Authorization: Basic c2hhbmVAZ293bGFuZC5tZTplbW1hbnVlbFcd
Accept: application/json, application/xml, text/json, text/x-json, text/javascript, text/xml
User-Agent: MetroReader
Host: api.feedbin.me
Content-Length: 0
Accept-Encoding: gzip, deflate

Star (not working)

POST https://api.feedbin.me/v2/starred_entries.json?starred_entries=102785763 HTTP/1.1
Content-Type: application/json; charset=utf-8
Authorization: Basic c2hhbmVAZ293bGFuZC5tZTplbW1hbnVlbFcd
Accept: application/json, application/xml, text/json, text/x-json, text/javascript, text/xml
User-Agent: MetroReader
Host: api.feedbin.me
Content-Length: 0
Accept-Encoding: gzip, deflate

I'm guessing I've overlooked something in the API documentation. Any tips?

Deleting pages

The Pages API lets me create pages, but there's no way to delete them.

I tried hitting the same API with a DELETE instead of a POST, but no luck.

Error 500 on POST to Subscriptions (aka Create Subscription)

Hi folks,

I'm trying to create a new subscription in Python3, but I always get error 500.

import urllib.parse
import urllib.request

api = 'https://api.feedbin.com/v2/'

manager = urllib.request.HTTPPasswordMgrWithDefaultRealm()
manager.add_password( None, api, 'USERNAME', 'PASSWORD' )

handler = urllib.request.HTTPBasicAuthHandler( manager )
opener  = urllib.request.build_opener( handler )

urllib.request.install_opener( opener )

data   = urllib.parse.urlencode( {
  'feed_url' : 'SOME_FEED_URL'
} ).encode( 'utf-8' )
header = {
  'Content-Type' : 'application/json; charset=utf-8'
}
url    = api + 'subscriptions.json'

request = urllib.request.Request( url, data, header )

try:
  response = urllib.request.urlopen( request )
except urllib.error.URLError as error:
  print( error )
else:
  response = response.read()
  print( response )

Could you give some help? 😄

Issue lost entries

I've used feedbin-api /v2/entries.json to save the ids of some entries that were published on a blog several days ago. But today when I tried to retrieve them by ids, I failed. The result array is not complete. I dont know if feedbin removed them.
2013-12-06 4 15 27
.

Getting entries by tag

Just curious, is there a way to get all entries by a specific tag or tag id?

I use tags to create categories for my feeds, so I'd like to only get posts one tag at a time.

Thanks!

Icons endpoint does not match icons seen in Feedbin

I'm subscribed to these youtube feeds:

https://www.youtube.com/feeds/videos.xml?channel_id=UCOJplhB0wGQWv9OuRmMT-4g
https://www.youtube.com/feeds/videos.xml?channel_id=UC9PBzalIcEQCsiIkq36PyUA
https://www.youtube.com/feeds/videos.xml?channel_id=UC2eEGT06FrWFU6VBnPOR9lg
https://www.youtube.com/feeds/videos.xml?channel_id=UCT6QFE3peNry9PdO5uGj96g
https://www.youtube.com/feeds/videos.xml?channel_id=UC6yzV_xgKn8r77FkcmZyMSg

This is how they show up in Feedbin
Screenshot 2021-02-01 at 21 29 56

However when I call the v2/icons.json endpoint I'm inly getting

{"host":"www.youtube.com","url":"https://favicons.feedbinusercontent.com/22f/22fede5b3794b820911f31de9971009c7498bcdd.png"}

which is the generic Youtube icon and not specific to the feed. Is there another endpoint that I missed or could you add the actual icons somewhere?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.