Sure. Add instances of your Feed class in the admin. Then in your
standalone script, the one that runs under your regular django
environment, do this:
from ubermicro.shows.models import Feed
feeds = Feed.objects.all()
for feed in feeds:
f = feedparser.parse(feed.link)
for item in f['entries']:
# continue as below
So you'll add Feeds in the admin, but your standalone script will add
FeedItems automatically; you'll probably just leave those alone in the
admin. Part of the standalone script should clear old FeedItems from
the database when you don't need them anymore.
E
On May 29, 2008, at 5:08 PM, sebastian stephenson wrote:
>
> well umm. can I add urls though the admin interface?
> On 28 May 2008, at 19:42, Eric Abrahamsen wrote:
>
>>
>> What I was originally suggesting you do (which of course might not
>> turn out to be the best solution) is use feedparser to read feed
>> urls,
>> and save those feeds into your database. That way, you wouldn't be
>> using feedparser at all in your views, just regular database queries.
>>
>> If your models include Feed and FeedItem (FeedItem having a
>> foreignkey
>> to a Feed), then feed parser will do something like this:
>>
>> f = feedparser.parse('http://somefeed.url')
>> feed = Feed.objects.get(link=f.feed.link) # f.feed provides
>> information corresponding to one Feed instance
>> for item in f['entries']: # entries are all the items under a
>> particular feed
>> it, created = FeedItem.objects.get_or_create(title=item.title,
>> link=item.link, desc=item.description, date=item.date_parsed,
>> id=item.id, feed=feed)
>>
>> Repeat the above for every url in your list of feed urls. Note: this
>> code goes in your standalone script running on a cron job, NOT in
>> your
>> views or whatever other normal part of your django code base. That
>> will put RSS feed items into your database, your views.py pulls them
>> out again as per normal django methods:
>>
>> feed = Feed.objects.get(link=somelinkvalue)
>> items = feed.feeditem_set.all()
>> return render_to_response(template, {'items':items})
>>
>> That's how it ought it work, in my opinion. Note that it's late here,
>> and I've been drinking, so there may be some inaccuracies in the
>> above. I concur with the general consensus, that you need to start
>> with some simple CGI scripts and python basics, and move up from
>> there. That said, good luck!
>>
>> E
>>
>>
>> On May 28, 2008, at 11:45 PM, sebey wrote:
>>
>>>
>>> please much suggestions thank you
>>>
>>> On May 28, 4:37 pm, sebastian stephenson <[EMAIL PROTECTED]> wrote:
>>>> great finally some help thank you so much!
>>>> On 28 May 2008, at 15:20, Rajesh Dhawan wrote:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>> On May 28, 6:30 am, sebey <[EMAIL PROTECTED]> wrote:
>>>>>> from django.http import HttpResponse
>>>>>> import feedparser
>>>>>> from ubermicro.shows.models import show
>>>>
>>>>>> def show_page(request):
>>>>>> """this is where we take what we need form the rss feeds in the
>>>>>> data base"""
>>>>>> query = show.objects.filter(show_feed__contains="http://")
>>>>>> podcast = feedparser.parse(query)
>>>>
>>>>> It seems that you are making feedparser parse an instance of a
>>>>> Django
>>>>> ORM query. I think what you want to do is to make it parse a URL.
>>>>> May
>>>>> be something like this:
>>>>
>>>>> for q in query:
>>>>> podcast = feedparser.parse(q.show_feed)
>>>>> if podcast.entries:
>>>>> show_latest_title = podcast.entries[0].title
>>>>
>>>>> This will do it for all objects in your query. So you will have to
>>>>> collect that list of titles etc. in a collection of some kind
>>>>> (list,
>>>>> dict, etc.) and pass it on to your template.
>>>>
>>>>>> #show_about = podcast.feed.description
>>>>>> show_latest_title = podcast.entries[0].title
>>>>
>>>>> The above statement assumes that there is at least one entry in
>>>>> the
>>>>> feed. That may not be always true. So, you should consider testing
>>>>> that first. Something like:
>>>>
>>>>> if podcast.entries:
>>>>> show_latest_title = podcast.entries[0].title
>>>>
>>>>>> #show_latest = podcast.entries[0].description
>>>>
>>>>>> return HttpResponse(show_latest_title)
>>>>
>>>>>> this code is what I think its doing is that I am grabing the rss
>>>>>> url
>>>>>> then using feedparser (http://www.feedparser.org) to get rss
>>>>>> element
>>>>>> such as <description> and such but every time I try to do this I
>>>>>> get
>>>>>> this error
>>>>
>>>>>> Traceback (most recent call last):
>>>>>> File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
>>>>>> python2.5/
>>>>>> site-packages/django/core/handlers/base.py" in get_response
>>>>>> 77. response = callback(request, *callback_args,
>>>>>> **callback_kwargs)
>>>>>> File "/Users/sebey/Sites/ubermicro/../ubermicro/shows/views.py"
>>>>>> in
>>>>>> show_page
>>>>>> 10. show_latest_title = podcast.entries[0].title
>>>>
>>>>>> IndexError at /shows/
>>>>>> list index out of range
>>>>>> I am to django programing web dev etc. but I guess that the query
>>>>>> I am
>>>>>> useing is not correct so I what should I do thanks
>>>>
>>>>> -Rajesh
>>>>
>>>> see ya
>>>>
>>>> sebey
>>>>
>>
>>
>>>
>
> see ya
>
> sebey
>
>
>
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---