Hmm. I misremembered bookmarks as being available as a convert action, sorry. Scripting it is:
on performSmartRule(theRecords)
tell application id "DNtp"
repeat with eachRecord in theRecords
set theURL to eachRecord's URL
set theDestination to get record with uuid "insert-destination-group-UUID"
set newRecord to create record with {type:bookmark, URL:theURL} in theDestination
end repeat
end tell
end performSmartRule
@ryanjamurphy - That works really well - extremely useful.
Thanks
Question - let’s suppose I use this to convert multiple RRS feeds into a combined “RSS Bookmarks” group. Any idea on how I can adjust the script to at the name of the feed (or even better a nickname I choose) as a custom metadata item?
Custom metadata would be easy. After the set newRecord ... line, you could just get the data you want to use in the metadata column and add it using a set newRecord's custom meta data ... command (that might not be exactly it—writing that from memory).
on performSmartRule(theRecords)
tell application id "DNtp"
repeat with eachRecord in theRecords
set theName to eachRecord's name
set curParent to (parent 1 of eachRecord)
set curParentName to curParent's name
set theNewName to "[" & curParentName & "]" & " - " & theName
set theURL to eachRecord's URL
set theDestination to get record with uuid "D6DB704A-2C06-41CC-8A58-5799D334C772"
set newRecord to create record with {name:theNewName, type:bookmark, URL:theURL} in theDestination
end repeat
end tell
end performSmartRule
Here’s what I have so far. This converts each RSS item to a [feedname] - [itemtitle] format, and dumps everything in a folder. Which is cool. And I suppose that instead of naming, I could do meta tagging with the feed name.
But as DT3 doesn’t seem to allow multi-sort (i.e. by meta tag and then by date), it would be nice to be able to have each of the feeds wind up in their own folders, just like it is now.
Is that even remotely possible to do for a hundred or more feeds without a ton of “look up the group ID, code an exception” sort of stuff?
I’d be happy to just make a new item right in the same location, but it seems that you can’t create an item in an RSS group (which makes a lot of sense technically).
Yeah, for sure! You’d have to script the dynamic naming of groups, but it should be pretty easy. Set theGroup to create new record with properties {name: some-variable, type: group}.
on performSmartRule(theRecords)
tell application id "DNtp"
repeat with eachRecord in theRecords
set theName to eachRecord's name
set curParent to (parent 1 of eachRecord)
set curParentName to curParent's name
set theNewName to "[" & curParentName & "]" & " - " & theName
set theURL to eachRecord's URL
set theDestination to (get record at "/@ Articles")
if not (exists record at "/@ Articles/" & curParentName) then
set theGroup to create record with {name:curParentName, type:group} in theDestination
else
set theGroup to (get record at "/@ Articles/" & curParentName)
end if
set newRecord to create record with {name:theNewName, type:bookmark, URL:theURL} in theGroup
add custom meta data curParentName for "RSSSource" to newRecord
end repeat
end tell
end performSmartRule
Basically, it grabs the parent name of each item in an RSS feed (each RSS item should only have one parent, by its nature), checks to see if the folder “@ Articles” already has the feed name as a folder, and if not, creates one. Then the article gets written, tagged with the name of the feed.
The only real issue I can foresee would be if two feeds legitimately had the same name - then they’d both land in the same folder. But I think I’m okay with that.
Trying to tag @rkaplan in case this is helpful code.
And if there’s anything glaringly obvious that I’m missing, corrections are always appreciated.
Hm. A slight tangent, but this might be a useful way to actually create useful offline files for the kinds of sites that offer useless summary data in RSS.
Once the bookmark is created, it should be possible to convert it into a webarchive, HTML, or even PDF file containing the item’s actual content, rather than the summary. It’d involve a bit of work, though—I just tried it on an academic journal and the result included all the mess of the site’s sidebars, banners, footers, and so on. But there might be something there…
Thank you - this looks very interesting - I will try it out this weekend.
I agree separating them into groups is very helpful for academic research. But when I am just combining general news feeds it is helpful to combine them together in one group with a tag to identify them. Looks like the examples here allow for both options.
Question - what are you using to trigger the smart rule? I am experimenting with “On News” and “On Save” and “On Import” in the RSS group and I am not sure I quite have it right with any of those.
@ryanjamurphy - Is there a way to tweak that Script so that the “Name” field appears in the standard system font rather than the hyperlink font used as a default with bookmarks?
This is how the records are listed as an RSS feed - this is fairly easy to read:
Preferences -> General -> Appearance -> “Highlight links in views” will disable the blue/underline across the whole app. Oddly, it doesn’t seem to make it exactly the same font as the regular list views (mine is less bold) - but the blue goes away.
I almost can’t imagine that it would be possible to specify the display font for a link on a per-item basis.
I don’t recall DT2 having Smart Rules, so you’d have to run the script yourself manually or via a scheduler such as a cronjob or Keyboard Maestro. You’d also have to modify how the script selects which items to act on, perhaps via creating a smart group and targeting only the items in it.
@ryanjamurphy and others - Are you using this script regularly?
I have found this to be extremely helpful and have begun using it (along with a few tweaks I will share when complete) routinely to track/read news during the day. Unfortunately DT3 has started to crash/abort randomly a few times a day while I am reading news from these bookmarks using the DT3 browser.
Devontech support is looking into what might be the cause. Has anyone else experienced this? Is the issue related to reading bookmarks in general through the DT3 browser or is there something about the bookmarks created from this script that may cause the crashes?
I actually don’t have enough feeds that offer bad summaries to put this to use. I only contributed here because I thought of a solution when I read the post.