Ok, now the code (almost impossible to type backticks in Spanish keyboard -just had to find it in internet and copy/paste it ):
(*
Based on script by Chuck Lane October 2, 2013
Updated and optimized for DEVONthink 3 by Christian Grunenberg April 30, 2019
Some changes by RFOG to set news to Inoreader Favorites and put the journal in a specific database, June 7, 2019
*)
property headerColor : {40000, 20000, 0}
property blackColor : {0, 0, 0}
property dateColor : {30000, 30000, 30000}
property numHeadlines : 10
property quoteOfDayUrl : "feed://feeds.feedburner.com/quotationspage/qotd"
property inoreaderUrl : "feed://www.inoreader.com/stream/user/1005968576/tag/user-favorites"
property genericNewsUrl : "feed://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml"
property desiredDatabase : "~/Databases/RFOG.dtBase2"
set theDate to current date
-- TIME FORMAT: Strip out the seconds but keep the AM/PM indicator
set theTime to time string of theDate
if (theTime contains "AM" or theTime contains "PM") then
if character 5 of theTime is ":" then
set theTime to (characters 1 through 4 of theTime) & (characters 8 through 10 of theTime) as string
else
set theTime to (characters 1 through 5 of theTime) & (characters 9 through 11 of theTime) as string
end if
else if character 5 of theTime is ":" then
set theTime to (characters 1 through 4 of theTime)
else
set theTime to (characters 1 through 5 of theTime)
end if
-- MONTH FORMAT
set theMonth to month of theDate as string
set numMonth to (month of theDate as integer) as string
if the (length of numMonth) < 2 then set numMonth to "0" & numMonth
-- DAY FORMAT
set theDay to day of theDate as string
set shortDay to theDay -- shortDay won't have a leading zero
if the (length of theDay) < 2 then set theDay to "0" & theDay
set suffixList to {"st", "nd", "rd"}
set theIndex to last character of theDay as integer
if (theIndex > 0) and (theIndex < 4) and the first character of theDay is not "1" then
set daySuffix to item theIndex of suffixList
else
set daySuffix to "th"
end if
-- WEEKDAY FORMAT
set longWeekday to weekday of theDate as string
set shortWeekday to characters 1 thru 3 of longWeekday
-- YEAR FORMAT
set theYear to year of theDate as string
tell application id "DNtp"
try
activate
set theDatabase to open database desiredDatabase
set myGroup to create location "/Journal/" & theYear & "/" & numMonth in theDatabase
set recordName to theYear & "-" & numMonth & "-" & theDay & " " & shortWeekday
if not (exists child recordName of myGroup) then
set myRecord to create record with {name:recordName, rich text:"", type:rtfd, tags:theYear & "," & theMonth} in myGroup
tell text of myRecord
make paragraph at beginning with properties {alignment:center, font:"Zapfino", size:18, color:dateColor} with data (theMonth & space & shortDay & daySuffix & "," & space & longWeekday & return)
bold first paragraph
unbold last character
set properties of last character to {font:"Avenir", size:14}
--Show the daily quote
set myQuote to my getQuote()
set the last character to the last character & myQuote & return
set alignment of last character to left
--Show specified number of news headlines
set myNews to my getDevonthinkFavorites()
set myNewsSize to count of myNews
if (myNewsSize = 0) then
set myNews to my getNews()
end if
set the last character to the last character & "HEADLINES:" & return
bold last paragraph
unbold last character
repeat with i from 1 to (count of items of myNews) by 2
set the last character to the last character & item i of myNews & return
set the URL of the last paragraph to item (i + 1) of myNews
end repeat
end tell
else -- Record already exists, just add new weather/time header
set myRecord to child recordName in myGroup
end if
tell text of myRecord
set the last character to the last character & return & return
make new paragraph at end with data ((theTime & return) as string)
set properties of last paragraph to {font:"Avenir", size:16, alignment:left, superscript:4, color:headerColor}
italicize last paragraph
set properties of last character to {font:"Avenir", size:16, alignment:left, superscript:0, color:blackColor}
set last character to last character & "■ "
end tell
on error errMsg number errNum
display alert (localized string "An error occured when adding the note. ") & errMsg
end try
end tell
on getDevonthinkFavorites()
set myNews to {}
tell application id "DNtp"
try
set getNewsSource to download markup from inoreaderUrl
set feedItems to get items of feed getNewsSource
set feedSize to count of feedItems
if (feedSize < numHeadlines) then
set numHeadlines to feedSize
end if
--display alert feedSize
set getNewsFeed to items 1 thru numHeadlines of feedItems
repeat with theItems in getNewsFeed
set end of myNews to title of theItems
set end of myNews to link of theItems
end repeat
end try
return myNews
end tell
end getDevonthinkFavorites
on getQuote()
tell application id "DNtp"
try
set myQuote to ""
set getSource to download markup from quoteOfDayUrl
set getFeed to get items of feed getSource
if items of getFeed is not {} then
set randItem to some item of getFeed
set myQuote to description of randItem & return & "= " & title of randItem & " =" & return
end if
end try
return myQuote
end tell
end getQuote
--Get the news headlines
on getNews()
set myNews to {}
tell application id "DNtp"
try
set getNewsSource to download markup from genericNewsUrl
set getNewsFeed to items 1 thru numHeadlines of (get items of feed getNewsSource)
repeat with theItems in getNewsFeed
set end of myNews to title of theItems
set end of myNews to link of theItems
end repeat
end try
return myNews
end tell
end getNews
Nope. That marks as with > and does not format the text as code.
BTW, bug fixing version (I really hate languages like AppleScript). Now if no favs in Inoreader, the news are taken right:
(*
Based on script by Chuck Lane October 2, 2013
Updated and optimized for DEVONthink 3 by Christian Grunenberg April 30, 2019
Some changes by RFOG to set news to Inoreader Favorites and put the journal in a specific database, June 7, 2019
June 8, 2019: Some bug fixing when Inoreader has no favs.
*)
property headerColor : {40000, 20000, 0}
property blackColor : {0, 0, 0}
property dateColor : {30000, 30000, 30000}
property numHeadlines : 10
property quoteOfDayUrl : "feed://feeds.feedburner.com/quotationspage/qotd"
property inoreaderUrl : "feed://www.inoreader.com/stream/user/1005968576/tag/user-favorites"
property genericNewsUrl : "feed://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml"
property desiredDatabase : "~/Databases/RFOG.dtBase2"
set theDate to current date
-- TIME FORMAT: Strip out the seconds but keep the AM/PM indicator
set theTime to time string of theDate
if (theTime contains "AM" or theTime contains "PM") then
if character 5 of theTime is ":" then
set theTime to (characters 1 through 4 of theTime) & (characters 8 through 10 of theTime) as string
else
set theTime to (characters 1 through 5 of theTime) & (characters 9 through 11 of theTime) as string
end if
else if character 5 of theTime is ":" then
set theTime to (characters 1 through 4 of theTime)
else
set theTime to (characters 1 through 5 of theTime)
end if
-- MONTH FORMAT
set theMonth to month of theDate as string
set numMonth to (month of theDate as integer) as string
if the (length of numMonth) < 2 then set numMonth to "0" & numMonth
-- DAY FORMAT
set theDay to day of theDate as string
set shortDay to theDay -- shortDay won't have a leading zero
if the (length of theDay) < 2 then set theDay to "0" & theDay
set suffixList to {"st", "nd", "rd"}
set theIndex to last character of theDay as integer
if (theIndex > 0) and (theIndex < 4) and the first character of theDay is not "1" then
set daySuffix to item theIndex of suffixList
else
set daySuffix to "th"
end if
-- WEEKDAY FORMAT
set longWeekday to weekday of theDate as string
set shortWeekday to characters 1 thru 3 of longWeekday
-- YEAR FORMAT
set theYear to year of theDate as string
tell application id "DNtp"
try
activate
set theDatabase to open database desiredDatabase
set myGroup to create location "/Journal/" & theYear & "/" & numMonth in theDatabase
set recordName to theYear & "-" & numMonth & "-" & theDay & " " & shortWeekday
if not (exists child recordName of myGroup) then
set myRecord to create record with {name:recordName, rich text:"", type:rtfd, tags:theYear & "," & theMonth} in myGroup
tell text of myRecord
make paragraph at beginning with properties {alignment:center, font:"Zapfino", size:18, color:dateColor} with data (theMonth & space & shortDay & daySuffix & "," & space & longWeekday & return)
bold first paragraph
unbold last character
set properties of last character to {font:"Avenir", size:14}
--Show the daily quote
set myQuote to my getQuote()
set the last character to the last character & myQuote & return
set alignment of last character to left
--Show specified number of news headlines
set myNews to my getDevonthinkFavorites()
set myNewsSize to count of myNews
if (myNewsSize = 0) then
set myNews to my getNews()
end if
set the last character to the last character & "HEADLINES:" & return
bold last paragraph
unbold last character
repeat with i from 1 to (count of items of myNews) by 2
set the last character to the last character & item i of myNews & return
set the URL of the last paragraph to item (i + 1) of myNews
end repeat
end tell
else -- Record already exists, just add new weather/time header
set myRecord to child recordName in myGroup
end if
tell text of myRecord
set the last character to the last character & return & return
make new paragraph at end with data ((theTime & return) as string)
set properties of last paragraph to {font:"Avenir", size:16, alignment:left, superscript:4, color:headerColor}
italicize last paragraph
set properties of last character to {font:"Avenir", size:16, alignment:left, superscript:0, color:blackColor}
set last character to last character & "■ "
end tell
on error errMsg number errNum
display alert (localized string "An error occured when adding the note. ") & errMsg
end try
end tell
on getDevonthinkFavorites()
set myNews to {}
tell application id "DNtp"
try
set getNewsSource to download markup from inoreaderUrl
set feedItems to get items of feed getNewsSource
set feedSize to count of feedItems
if (feedSize < numHeadlines) then
set localNumHeadlines to feedSize
else
set localNumHeadlines to numHeadlines
end if
if (numHeadlines = 0) then
--display alert numHeadlines
return myNews
end if
set getNewsFeed to items 1 thru localNumHeadlines of feedItems
repeat with theItems in getNewsFeed
set end of myNews to title of theItems
set end of myNews to link of theItems
end repeat
end try
return myNews
end tell
end getDevonthinkFavorites
on getQuote()
tell application id "DNtp"
try
set myQuote to ""
set getSource to download markup from quoteOfDayUrl
set getFeed to get items of feed getSource
if items of getFeed is not {} then
set randItem to some item of getFeed
set myQuote to description of randItem & return & "= " & title of randItem & " =" & return
end if
end try
return myQuote
end tell
end getQuote
--Get the news headlines
on getNews()
set myNews to {}
tell application id "DNtp"
try
set getNewsSource to download markup from genericNewsUrl
set feedItems to get items of feed getNewsSource
set feedSize to count of feedItems
if (feedSize < numHeadlines) then
set localNumHeadlines to feedSize
else
set localNumHeadlines to numHeadlines
end if
if (numHeadlines = 0) then
return myNews
end if
--display alert numHeadlines
set getNewsFeed to items 1 thru localNumHeadlines of feedItems
repeat with theItems in getNewsFeed
set end of myNews to title of theItems
set end of myNews to link of theItems
end repeat
end try
return myNews
end tell
end getNews