Closed Bug 258102 Opened 17 years ago Closed 16 years ago

Option to import feed subscription-list.

Categories

(MailNews Core :: Feed Reader, enhancement)

x86
Windows XP
enhancement
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: david.bjorklund, Assigned: mscott)

References

Details

Attachments

(5 files, 5 obsolete files)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.3) Gecko/20040902 Firefox/1.0 PR (NOT FINAL)
Build Identifier: 

It would be really nice to be able to export/import the list of feed you are
subscribing to in opml/foaf-format... 

Reproducible: Always
Steps to Reproduce:
*** Bug 258103 has been marked as a duplicate of this bug. ***
Seconded. The main reason I'm not using the RSS reading functionality is that I
have 200 feeds in bloglines.com already
It would also be useful to be able to deal with bugs with duplicate articles - I
could remove all my RSS feeds and then add them again by using the export/import :-)
*** Bug 262938 has been marked as a duplicate of this bug. ***
I have written OPML import/export code. Still a bit rough, and needs cleanup.
I hacked it into newsblog.jar and currently don't have a CVS tree setup, so no 
diff. 
Any suggestions for releasing it? I havn't realy looked into the Thunderbird 
extensions. Looked the Sage and Forumzilla projects but those seem a bit dead.
Re comment 5: if you email it to me (davidf@sjsoft.com) or attach it here I'll
make a diff and attach it...
It's too late for this to make it for 1.0 but we'd love to get some help on
adding support for this for a future release.

either go through davidf to put together a patch or get yourself hooked up with
CVS so you can make a patch yourself. I'd be interested in helping you generate
a good patch for us to check in.
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
Thanks. Will probably be next week before I can get it ready to post. I was 
also looking into import/export of a bookmarks.html with live bookmarks. 
Probably not going to submit that now but code needs some refactoring/cleaning 
to be able to easily add it back later. 
I'll try the CVS route, otherwise ask davidf.
I currently simply added a Import and an Export button to the subscriptions 
dialog, but am OK if someone want's a different GUI.
I'm interested in this too - I've hacked up a Perl script (and URL based
service) to create OPML files from the feeds.rdf file, which you can read about
here: http://www.oreillynet.com/pub/wlg/6038, but as I lament, I'm interested in
going the other way. ajbu@planet.nl - did you ever submit your patch for this?
I'd be interested in poking at your new newsblog.jar.
This is quick. very very quick.
but it works.

Should probably make an opml object instead of the hacking standalone
functions. This should at least provide a band aid until a real solution is
done.
Attached patch fixes to make wordpress happy (obsolete) — Splinter Review
typo in element is fixed
the exported opml xml file can now be imported into wordpress
Attachment #170129 - Attachment is obsolete: true
Attached patch import tooSplinter Review
instead of getting some much needed sleep, I hacked up an import.
- it works with various opml files generated from wordpress and a bunch of
planets.

export is now more friendly.
<outline type="rss" title="feed.title" text="feed.title" xmlUrl="feed.url"
hrmlUrl="feed.url"/>

That should cover all the bases.

Note: I have no idea what the doImport() code does, I just stole if from
doAdd()
Attachment #170130 - Attachment is obsolete: true
(In reply to comment #12)

Justin, do you have anything that we can use with the stock TB1.0 release? I'm
assuming that you're patching against the current CVS code, since I can't find a
"subscriptions.js" on my machine.
(In reply to comment #13)
> (In reply to comment #12)
> 
> Justin, do you have anything that we can use with the stock TB1.0 release? I'm
> assuming that you're patching against the current CVS code, since I can't find a
> "subscriptions.js" on my machine.

Oh, duh. I found the newsblog.jar. Still, a stand-alone installable .xpi would
be awesome.
Attached file patched newsblog jar
I am patching against the 1.0 branch of tbird

I am using my local builds of tbird, it makes hacking much more sane.

Taking the time to do an xpi for code/features that will hopefully end up in
the next release of tbird seems a waste of time. Translation: I am way too lazy
to do that.

However, here is the jar of my 'working', patched newsblog. Be sure to backup
your current jar.
Attached patch OPML Import/Export Patch (obsolete) — Splinter Review
I applied Justin's patch and noticed that the htmlURL attribute in the exported
OPML files was using the feed's URL. This value is supposed to be the value
found in a feed-level link element. The attached patch incorporates all of
Justin's changes, prefers @text to @title on import (@text is actually in the
OPML spec), stores the Feed's "link" in the RDF store, addresses all Atom
elements by their fully-qualified name, and exports @htmlURL correctly.

Feed.js could use some refactoring, but this patch was already kind of large. I
tested with my own rather large OPML file, which includes roughly equivalent
proportions of Atom, RSS1, and RSS2.
Robert, if you think your patch is ready for review, why don't you ask for
review/super-review? Otherwise, it'll just sit here indefinitely. 
(In reply to comment #17)
> Robert, if you think your patch is ready for review, why don't you ask for
> review/super-review? Otherwise, it'll just sit here indefinitely. 

His patch just builds on top of mine. And this code is intended as a quick fix,
not something to put into the main tree. Unless I am underestimating the value
of my patch. I do think it goes about it the right way. 
This patch will make a lot more sense when bug281237 is taken care of.
Depends on: 281237
(In reply to comment #18)

> of my patch. I do think it goes about it the right way. 

This was suppose to say, "I do NOT think it goes about it the right way."  very
bad typo.
I patching this in stages would be best. We'll need Feed objects to have a link
property, so users don't experience data loss when they round-trip their OPML
files.
Attachment #171330 - Attachment is obsolete: true
Attachment #173900 - Flags: review?
Attachment #173900 - Flags: review? → review?(mscott)
Comment on attachment 173900 [details] [diff] [review]
Step 1: Store HTML alternate links for Feeds

Thanks for the patch Robert this first step,  looks pretty good. The only thing
I changed was:

aNewLink = rdf.GetLiteral(aNewLink || "");
to
aNewLink = rdf.GetLiteral(aNewLink);

aNewLink should already be an empty string if getNodeValue  was unable to find
a link value in the DOM. 

I also got rid of some extra braces around a single statement if clause.

I just checked this in so we can move onto the next step.
Attachment #173900 - Flags: review?(mscott) → review+
This patch handles "flat" opml files, where the children of the body element
are all outline elements that have an xmlUrl and no content. 

I decided to store them without validating them over the network, because that
could be quite a hassle if some feeds have auth, are momentarily unreachable,
etc.
Attachment #174086 - Flags: review?(mscott)
forgot to turn off debug()
Attachment #174086 - Attachment is obsolete: true
Attachment #174087 - Flags: review?(mscott)
Attachment #174086 - Flags: review?(mscott)
Comment on attachment 174087 [details] [diff] [review]
Step 2: Import Flat OPML files w/ localized interface

+	     feed.createFolder();
+	     var folder = feed.folder ? feed.folder :
gFeedSubscriptionsWindow.mRSSServer.rootMsgFolder.getChildNamed(feed.name);
+  

I don't think we ever want to set the folder for a feed to the root folder
(which is really the server folder). if feed.createFolder failed to actually
create a new folder for us, we should probably give up on subscribing to that
particular feed.

I'm going to modify my copy of the patch to address that and I'll post a new
one here.
This is basically Robert's patch with some modifications including:

1) adding folder accessors to a Feed item and removing duplicated calls to
rootMsgFolder.getChildNamed.
2) Fixed createFolder to not call cleanupParsingState
3) On the OPML files I tested, many had .opml extensions so I added code to
handle that. Furthermore, many of them used "url" attributes in the outliner
elements instead of "xmlurl" so I made the import code handle that case as
well. 
4) Changed the alert text warnings a little bit and we now throw up an alert
dialog if during import, we failed to actually find or import a new feed.
5) Localized the file picker title string
6) Trivial formatting nits such as removing braces for single line if clauses,
adding a space between commas in function method args.

Thanks for the good patch Robert and ajbu!
Attachment #174087 - Attachment is obsolete: true
I've checked in this last patch.

Some things to think about going forward:

1) Should we import the list under some parent feed folder so the huge list
doesn't  show up as invididual top level rss folders but instead are all
children of a folder named after the title of the OPML file?
2) Should we put all of the feeds in the OPML list into a single folder?

How do other RSS readers handle this on import?
Target Milestone: --- → Thunderbird1.1
The 'OPML Import' button looks tacky, Can't it just be Import Feeds or something
like that? What does OPML even stand for and I bet most users also do not know
this and will wonder the same thing. 

Your right the button should say 'Import Feeds'

I suspect the dialog should say OPML though otherwise how will a user know what
kind of file we can import from? 

I'll fix the button right now.
The dialog is good. 
Are you going to add the option to import feeds from the Tools->Import dialog?
Status: ASSIGNED → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
The summmary says export/import, but the patch only covers import - or am I
overlooking something here?
(In reply to comment #31)
> The summmary says export/import, but the patch only covers import - or am I
> overlooking something here?

Only if I am as well...
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
let's treat export as a separate bug.

Bug #283735

marking this closed again.
Status: REOPENED → RESOLVED
Closed: 16 years ago16 years ago
Resolution: --- → FIXED
Summary: Option to export/import feed subscription-list. → Option to import feed subscription-list.
Attachment #174087 - Flags: review?(mscott)
Hi, are there sample OPML files we in QA could use to test (verify) this
feature? it'd be great to add to our basic functional tests for tbird --thanks!
(In reply to comment #34)
> Hi, are there sample OPML files we in QA could use to test (verify) this
> feature? it'd be great to add to our basic functional tests for tbird --thanks!

http://planet.mozilla.org
http://blogs.msdn.com
The OPML import should support groups of feeds, as in other newsreaders. Should
display the same way as nested folders in email accounts. See file for test
case.
Second #36 for nested folders - this one is a big deal when you manage more then
a few feeds. Should a new bug be opened?
Component: RSS → Feed Reader
Product: Thunderbird → MailNews Core
Target Milestone: Thunderbird1.1 → ---
I'm seeing this problem in 2014.
Platorm: Ubuntu 13.10

Process: 
Export using RSSOwl Ver: 2.2.0 Mac

Import using Thunderbird on Ubuntu 13.10

Result: Thunderbird created about a hundred folders corresponding to my news feeds but not rss content or functionality.  Just a bunch of folders.  #nothelpful
(In reply to doug from comment #38)
> I'm seeing this problem in 2014.

Doug, this bug was fixed almost 5 years ago and was actually a new feature within Thunderbird, it is highly unlikely to be your issue.

> Result: Thunderbird created about a hundred folders corresponding to my news
> feeds but not rss content or functionality.  Just a bunch of folders. 

Please file a new bug, preferably with examples of what does/doesn't work so that there is a test case for us to reproduce against.
ok... thanks.
You need to log in before you can comment on or make changes to this bug.