Skip to content

olegsu/rss-sync

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
cmd
 
 
 
 
pkg
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

RSS-Sync

RSS-Sync will sync you rss feed into support targets (Trello atm). I use it as to sync my favourite podcasts and add them to my Trello board so I dont forget to listen.

  • The input to the program is feed.yaml file that describes the rss, targets and the binding between them [FEED].
  • It uses go template as templat engine together with gomplate to extend the functionality
    • {{ .feed }} - to access the feed tol level properties as it parsed using gofeed (items are removed)
    • {{ .item }} - to access the current rss item that matched to the filters
    • {{ .source }} - to access the current source from feed.yaml
    • {{ .binding }} - to access the current binding from feed.yaml
    • {{ .target }} - to access the current target from feed.yaml
  • open-integration pipeline - read more about open-intergration

For example:

targets:
# Unique name of the target
- name: This Week List
    trello:
    # Trello API token - https://trello.com/app-key
    token: '{{ env.Getenv "TRELLO_TOKEN" }}'
    # Trello application ID - https://trello.com/app-key
    application-id: '{{ env.Getenv "TRELLO_APP_ID" }}'
    # Trello board id - get it from the URL
    board-id: '{{ env.Getenv "TRELLO_BOARD_ID" }}'
    # Trello list id - get if from https://trello.com/b/{board-id}.json
    list-id: '{{ env.Getenv "TRELLO_LIST_ID" }}'
    
    # Data about the card to be created
    card:
        title: '[{{ .source.name }}] Listen to: {{ .item.title }}'
        description: "{{ .feed.title }}\nLink: {{ .item.link }}\nDescription: {{ .item.description }}"
        # Lables ID's
        labels: []


sources:
# Unique name of the target
- name: Making History
  # RSS feed url 
  url: https://www.ranlevi.com/feed/mh_network_feed
  # set of filter to run on each RSS item
  # all the filter must to pass in order to pass the item to the target
  filter:
    
    # name of the filter can be anything
    # the value must be "true" at the end of the templating process in order to consider the filter as successful
    # only items that been released in the last 24 hours
    just-released: '{{ ((time.Now).Add (time.Hour -24)).Before (time.Parse "Mon, 02 Jan 2006 15:04:05 -0700" .item.published) }}'

#  In some cased the RSS feed is username-password protected  
#  auth:
#    username: '{{ env.Getenv "USERNAME" }}'
#    password: '{{ env.Getenv "PASSWORD" }}'    

# binding between rss and target 
bindings:
- name: Making History
  rss: Making History
  target: This Week List