Giter Club home page Giter Club logo

stefansundin / rssbox Goto Github PK

View Code? Open in Web Editor NEW
763.0 19.0 73.0 1.09 MB

:newspaper: I consume the world via RSS feeds, and this is my attempt to keep it that way.

Home Page: https://github.com/stefansundin/rssbox/discussions/64

License: GNU Affero General Public License v3.0

Ruby 67.97% HTML 22.58% Shell 0.61% CSS 0.57% JavaScript 7.25% Dockerfile 1.01% Procfile 0.02%
webapp instagram soundcloud vimeo youtube twitter imgur periscope mixcloud twitch

rssbox's Introduction

RSS Box

This app uses the API of other websites and gives you an RSS feed in return. Quick and simple.

List of public RSS Box instances: #64

To open vlc:// links, see vlc-protocol.

Roll your own

To deploy to Elastic Beanstalk, see .ebextensions/README.md.

To deploy to Kubernetes, see kubernetes/README.md.

A Docker image is available on Docker Hub and Amazon ECR.

Note: Redis is an optional dependency! It is only used for the URL resolution feature.

Configuration

You need to get API keys for the respective services and populate the environment variables, e.g. by using an .env file.

A couple of services do not have official APIs, or do not require API keys, so they will work without any keys.

These services do not require API keys: Instagram, Periscope, Mixcloud, Speedrun, Dailymotion.

Twitter

Warning

The Twitter integration is legacy code and is not maintained. It may be broken or have serious issues.

Caution

Use at your own risk! I am not responsible if RSS Box uses all of your Twitter API quota!

Important

RSS Box uses Twitter API v2.

Go to the Twitter Developer Portal and create a new app.

Once you have the consumer key and consumer secret, run the following to get the bearer token.

curl -X POST -d grant_type=client_credentials -u CONSUMER_KEY:CONSUMER_SECRET https://api.twitter.com/oauth2/token

Copy the access_token and put it in the config.

You need to create a project and add the app to it for it to work.

YouTube

Go to the Google Developer Console, create a project and a server key. Copy the server key. Enable "YouTube Data API v3" in the project.

Vimeo

Go to the Vimeo developer website and create an app. Then create a personal access token.

Instagram

The Instagram support works without a sessionid, although it appears that the Instagram rate limits are much higher when one is used.

I highly recommend that you create a dedicated Instagram account for this. If someone manages to access your sessionid then your account may be compromised!

Login to Instagram and then inspect your browser's cookies (this is easiest accomplished via the browser's developer tools) and copy the value of the sessionid cookie.

Once you've configured RSS Box, be sure to delete the cookie from the browser to avoid it being accidentally invalidated when you sign out. The sessionid should be valid for a long time, but you may have to repeat this procedure if it stops working in the future.

Facebook

Facebook was supported in the past, but I have been unable to obtain API access since they locked it down in 2018. Maybe we can rebuild it some day, but using scraping techniques or something. Discuss here.

SoundCloud

Go to the SoundCloud developer website and create an app. Copy your client id and secret.

Twitch

Go to your Twitch settings and create an app. Copy your client id.

To download Twitch videos, you also need to configure a separate client id.

Imgur

Go to the Imgur settings and create an app. Copy your client id.

rssbox's People

Contributors

stefansundin avatar stu43005 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

rssbox's Issues

API Call problems

I have an instance of RSSBoxinstalled on Heroku but I am having problems getting Twitter and Instagram working. I have Imgur working with its API calls but Twitter is throwing up errors saying the token is invalid or expired (have rebuilt the app on twitter twice) and Instagram is showing "Sorry, a nasty error occurred: undefined method `find' for nil:NilClass"

Instagram Hashtags

Hey Stefan, Any chance you allow Instagram Hashtags on your App?

I don't mind paying subscription fee if that's requirement,

Thank you

Instagram Hashtags

Hey Stefan, If you're not planning to add Instagram Hashtags feature could you please at least with code example help us to add Instagram Hashtags feature on your App?

Thank you

Request: Support for Twitter Lists

The current version brings up my own timeline if I paste in a twitter list - can you add support for these, preferably with the same options provided for the current Twitter section?

rssbox.herokuapp.com will stop working on November 28th (Heroku is shutting down their free tier)

https://blog.heroku.com/next-chapter

Starting October 26, 2022, we will begin deleting inactive accounts and associated storage for accounts that have been inactive for over a year. Starting November 28, 2022, we plan to stop offering free product plans and plan to start shutting down free dynos and data services. We will be sending out a series of email communications to affected users.

It is the end of an era for RSS Box! Heroku has been great for a long time, but I think it is time to move on. RSS Box has managed to run on the free tier despite receiving some impressive traffic over the years. I made the app publicly available without requiring users to register an account because I wanted to see how well I could make it run. The app has gone down at times because of the load but it has always come back.

I think I have only received one or two donations for RSS Box, so there is no way that I would ever start paying for Heroku. I recommend that everyone switches off of the domain as soon as possible. It is likely that someone else might be able to take over the domain after November 28th, so to avoid getting advertisements or similar in your RSS feeds, please move your subscriptions! The only way I would start paying would be if someone else would donate enough money to keep it running there. Even in that case I would request that you donate that money to me instead so that I can run it somewhere else instead (Heroku is quite expensive compared to other hosting services).

If any of you is hosting your own RSS Box on Heroku and you are considering paying then please: deploy the latest version of the code and remove the Redis addon. It is no longer required and you don't want to pay for something that isn't needed.

About four years ago I launched a second version of RSS Box on Elastic Beanstalk. You can access it here: https://rssbox.us-west-2.elasticbeanstalk.com/. I am paying for this but I have optimized the costs to a level that is acceptable for me, at least for the time being. You can move your subscriptions to this domain if you want, but I can't guarantee how long I will keep it. I dislike Elastic Beanstalk for many reasons so I will probably get rid of this eventually. There will be more frequent downtime than Heroku.

I have experimented with running RSS Box in Kubernetes but that is far too complicated to set up for most users, and I will probably never offer a public version hosted like this. I have also experimented running it on Amazon ECS and I think it is likely that I will use this to replace the Elastic Beanstalk version. I need to make some improvements first though because I would like to offer HTTPS without the need of an expensive load balancer.

So this is the unfortunate news that I wanted to share. If you want to use RSS Box in a way that will last then I recommend that you self-host it.

In the last week or so before November 28th, I may deploy a special version of the app that simply replaces all feeds with a single entry that contains a deprecation message. I will put a warning on the website for now.

If you want to donate to support RSS Box then the easiest option is to use PayPal using this link: https://www.paypal.com/donate/?cmd=_donations&business=KYMVEK692RF5Q&item_name=RSS+Box&no_shipping=1

I am interested in getting a rough sense of how the community is self-hosting it. What platform are you using? Feel free to share your experience in the comments below!

Thanks!

P.S. I never used a custom domain for the Heroku app since that would mean I would have to pay extra for HTTPS. I'm not using it for Elastic Beanstalk even though I could, but I am not sure that I want to. I will be forced to do it for ECS if I spin that up, so at that point I may offer a domain that is more stable and will survive replatforming.

Jekyll Github Pages (github.io)

It's common for people to use Github pages as a free host for their blogs.
Often this is done with Jekyll, which means a common pattern can be identified.

Given a jekyll blog <username>.github.io the posts can be queried by the API
https://api.github.com/repos/<username>/<username>.github.io/contents/posts
(max 1000 files)
Each file will have a path which we can create the page url by concatenating to the original blog with the extension changed from .md to .html
https://<username>.github.io/<path | changesuffix('.html')>

If we need to get creation/modification date the API
https://api.github.com/repos/phra/phra.github.io/commits?path=posts/zwc-fingerprint.md&page=1&per_page=1 (with bigger page size and choosing last for getting creation date).

This would support custom-domain blogs too, provided the user can find the original.
Perhaps doing a redirect check on the final url to support custom domains better would be desirable.

Backup and Restore

Has there been any discussion around the ability to perform backup and restore for a running instance of RSS Box? As far as I can see, currently all the state lives in Redis and so restart (without persistence) would invalidate all your existing feed URLs. Maybe I'm wrong and there's currently a mechanism for retaining these URLs between instances (provided the instances have the same root URL). I haven't looked deeply into if feed URLs are already created from reproducible hashing or anything.

Assuming there isn't currently any way to do this, I could image a JSON back up that outputs paths, original URLs and services could be enough to provide a way to recreate the feeds after a restart.

Twitch integration broken?

To me it seems like the Twitch integration is not working anymore. The Readme points to https://www.twitch.tv/settings/connections, but it seems the application management has moved to https://dev.twitch.tv/console/apps/. It's possible to create an app there and you also get a clientid, but if you set that clientid Twitch complains about the Oauth token:

 2020-06-25T15:38:46.102522+00:00 app[web.1]: 2020-06-25 15:38:46 - TwitchError - 401: {"error":"Unauthorized","status":401,"message":"OAuth token is missing"}:

That's when trying to get a feed for a user.

Did Twitch break the rss box API access, or am I misunderstanding what data needs to be provided?

Exclude photo from Twitter Videos

Hey Stefan, I presume this might be Importer issue but is there any chance to exclude featured image from Twitter videos?

I can remove them with CSS but then in some cases when video is not fetched the image is missing due to CSS,

Thank you

Heroku Update

How do I update to the latest version on my Heroku deployment?

Instagram shows only first posts

It seems Instagram fetches only the first 12 posts.

For subsequent fetches it might not matter as long as the amount of new posts in between fetches is smaller than 12. But for the initial fetch it does, as old posts are missing.

For 3 columns per row this equals 4 rows, which leads me to suspect it might be the default amount of posts visible on the screen without scrolling down to load more.

A quick glance through the code at https://github.com/stefansundin/rssbox/blob/master/app/services/instagram.rb seems to confirm the logic to scroll down might be missing?

Running e6ee86f on Heroku using INSTAGRAM_SESSIONID of newly created account.

Autoplay Videos

Hey Stefan, Is it possible to autoplay Twitter and Instagram videos but mute them?

Thank you

Instagram Photo no found

I use content from instagram to publish in my other social media account automatically by using RSSBOX and IFTTT. but it seems doesn't work anymore. help me!

PWA support?

Microsoft Edge already lets me pin websites to taskbar (on the chromium version) , but having this site installable would be really convenient.

Twitter update interval?

Hello,

I have a RSSBox instance running on the free plan on Heroku.

The first time I add a feed into Feedly it works great however after reading everything yesterday the feeds are no longer updating.

Whats the default refresh time? Is it possible to modify it?

Thanks!

Website is overloaded

site rssbox.herokuapp.com has been going up and down constantly since yesteday night

Application error
An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details. You can do this from the Heroku CLI with the command
rssbox instagram is DOWN (https://rssbox.herokuapp.com/)
503 - Service Unavailable (The service is temporarily overloaded.)

Audio from Twitter video embedded posts

Hi, I would like to know is it possible to mute Audio from Twitter video autoplays or at least disable Twitter video autoplays? I'm getting this issue on Chrome and IE but I think Firefox mute embedded Twitter videos,

Thank you

Quora feeds?

Would you consider being able to RSS quora.com tags and/or users?

This endpoint should not be used by a robot.

This endpoint should not be used by a robot. RSS Box is open source so you should instead reimplement the thing you need in your own application.

I set up and used the domain in the existing Heroku. I deleted the domain setting.
I created a new RSS Box. And I set the same domain. Such a phrase is displayed and does not work.
It works well at Heroku app url.

Help me.

Implement caching [$500]

Bounty: https://www.bountysource.com/issues/92164470-implement-caching

The publicly hosted RSS Box has become hard to use recently as its popularity has increased and more people have started using it. As discussed in other issues, Twitter and Instagram are unusable most of the time.

I have complained that some people are abusing the service (which is true), but there is a way to resolve the issue without requiring everyone to self-host their own instance, and that is to implement a caching system. Currently, every request for a feed will cause a request to go upstream to the service (e.g. Twitter). A caching system would allow the application to reuse previously fetched data. I have been thinking of the best way to add it for a while, but I have not had enough incentive to actually code it. I am hoping that a $500 bounty will provide enough incentive for me to add it quickly.

The way this works is that anyone who is interested to contribute can chip in, and if it is successfully funded, then I can add the feature and get the bounty. I have spent a lot of time working on this project on my own, and made it available to everyone for free. This is an opportunity for you to show your appreciation while also helping to add a very important feature that is desperately needed.

Previously, I have tried to find a good CDN solution to use, but a CDN has a couple of drawbacks, especially cost. By instead coding a caching system directly into the application and making it backed by a regular file-system, it should provide a solution that is free and robust.

The initial features will be:

  • caching system backed by a file-system (configurable path)
  • ability to cache arbitrary data, not only HTTP requests
  • resolve current Twitter and Instagram issues

Potential improvements after initial release (not required for bounty):

  • cache size management (e.g. max cache size, LRU cache eviction, etc)
  • add file locking (this will prevent simultaneous requests from causing extra outbound requests to e.g. Twitter and Instagram)
  • throttle abusive/spammy users (the more requests you make, the longer the cache is held, which hopefully disincentives spammy users)

This is the first time that I attempt to use bountysource.com. Please let me know what you think about this attempt, and please feel free to discuss it below.

Twitter abuse

After years of having no real issues, someone has recently started fetching a ton of Twitter feeds, 3x-4x the normal volume. Just have a look here.

Screen Shot 2020-04-12 at 10 53 27 PM

I am only able to do 1500 Twitter API calls per 15 minutes, and I am running out all the time now. So if you're wondering why you are getting "There was a problem talking to Twitter. Please try again in a moment.", this is why.

I will most likely have to start blocking certain Twitter users to get this situation under control. So if you are refreshing a feed too often, it may stop working. So if you want to keep a feed usable, then it is in your best interest to not hammer it.

Heroku suspended my account

I have no idea why, but Heroku suspended my account.

Reason for suspension: violation of the Heroku Acceptable Use Policy.

My guess is that Instagram lawyers sent a request to them to take it down. It would have been nice if they had asked me first since I would have removed the Instagram feature (it doesn't really work anyways). The reason why I suspect Instagram first is because of this: https://news.ycombinator.com/item?id=22209892

I emailed Heroku support to try to get some kind of answer. If this turns out to be the case then I may take preemptive steps to make this repository safer since I don't want to deal with any kind of DMCA situation here on GitHub.

Fucking Heroku, can't trust them. I had another app also running there, and they just shut everything down. Don't host anything important on their service. This is your official warning.

Talking to Instagram

Hi,

Thank you for your app. I tried to deploy a instance on Heroku and when i put an URL or a username, i have this error : There was a problem talking to Instagram. Please try again in a moment.

What does it mean technically ? How to solved it ?

Thank you.

Regards

problems

There was a problem talking to Instagram. Please try again in a moment.

this since 17 hours ago...

Arm docker image

Is it possible to have an ARM image of this, so we can run it on our singelboard computers like the raspberry pi?

It only shows one picture in Twitter feed

Hello sir,
The service works great for twitter but I noticed that there's a bug or something that prevents the service from grabing more than 1 picture for any tweet that has multiple pictures in it. It means that any tweet with more than 1 picture only shows one picture (probably the first one) in the feed reader.
The feed reader I use is : Feedbro for Firefox.
Sorry for my English.

SoundCloud Suggest

Thank you so much. I hate social media feeds and want to see only certain people. Your service made me feel comfortable.

  1. SoundCloud Artwork Image
    Can you change this so that I can get a bigger resolution image?

Original: https://i1.sndcdn.com/artworks-938bAJxMPyaV-0-large.jpg
Change: https://i1.sndcdn.com/artworks-938bAJxMPyaV-0-original.jpg

  1. Download does not work. Displays the ffmpeg command as it is.

  2. Can you provide the download button as an option?
    I want to hide the download button from RSS Feed Reader or Discord or Slack.
    When post it on a discord it's only text sent.

RSS unaltered titles entries

Hey there. Is it possible to have unaltered titles entries?

E.g., for YouTube (maybe other services too?) to have two tags like < original-title > and < title > for the entries within a feed? I don't really need the duration of a livestream and "(started)"/"(completed)". If your awesome RSSbox will show me original titles as well, that would be nice.

Private Instagram Feeds?

Is this even possible in the current framework? I would assume you would have to store login details somewhere?

The App is crashing

Hey Stefan, Your App is crashing on my Heroku account. I wonder would you be kind to add autoplay, loop and mute features on your App for Twitter feeds and possibly Instagram feeds so I can move all my feeds to your Heroku App,

Thank you

problems

There was a problem talking to Instagram. Please try again in a moment.

this since 17 hours ago...

Facebook

I do not get it ....
Is it that i have created the facebook app wrong?

i just created a new app in facebook develoer site did not add anything else then a name
got the FACEBOOK_APP_ID and FACEBOOK_APP_ID in the dockerenv

https://graph.facebook.com/v2.12/aftonbladet returned code 400.

does it need some sort of access token?

as well i should tell that i run the docker from my laptop ... maybe facebook needs it to be called from an real domain address?

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.