Skip to content

olegsu/rss-sync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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