File tree Expand file tree Collapse file tree 3 files changed +21
-12
lines changed
Expand file tree Collapse file tree 3 files changed +21
-12
lines changed Original file line number Diff line number Diff line change @@ -141,8 +141,8 @@ Cron jobs:
141141
142142 # Update translation stats
143143 ./manage.py fetch_translations
144- # Update planet posts
145- ./manage.py fetch_planet
144+ # Update blog posts
145+ ./manage.py fetch_blog
146146
147147 File releases scan:
148148
Original file line number Diff line number Diff line change 2121#
2222from django .core .management .base import BaseCommand , CommandError
2323import feedparser
24- from urllib .request import urlopen
24+ import urllib .request
2525
26+ def fetch_url (url : str ) -> feedparser .FeedParserDict :
27+ """Helper for fetch blog posts"""
28+ try :
29+ request = urllib .request .Request (url )
30+ request .add_header ('User-Agent' , 'phpMyAdmin/website blog post fetcher' )
31+ handle = urllib .request .urlopen (request )
32+ content = handle .read ()
33+ except IOError as err :
34+ content = str (err )
35+ if hasattr (err , 'fp' ):
36+ content = err .fp .read ()
37+ raise CommandError (f'[{ url } ] { err .code } : { content } ' )
38+ return feedparser .parse (content )
2639
2740class FeedCommand (BaseCommand ):
28- url = None
41+ url : str = ''
2942
3043 def process_feed (self , feed ):
3144 raise NotImplementedError ()
3245
3346 def handle (self , * args , ** options ):
34- handle = urlopen (self .url )
35- data = handle .read ()
36- parsed = feedparser .parse (data )
37- if parsed .bozo == 1 :
38- raise CommandError (parsed .bozo_exception )
39- else :
40- self .process_feed (parsed )
47+ parsed = fetch_url (self .url )
48+ self .process_feed (parsed )
Original file line number Diff line number Diff line change 2424from news .management .commands import FeedCommand
2525from news .models import Planet
2626
27- URL = 'https://planet.phpmyadmin.net/rss20 .xml'
27+ URL = 'https://blog.williamdes.eu/tags/phpmyadmin/atom .xml'
2828
2929
3030class Command (FeedCommand ):
@@ -33,6 +33,7 @@ class Command(FeedCommand):
3333
3434 def process_feed (self , feed ):
3535 for entry in feed .entries :
36+
3637 params = {
3738 'title' : entry .title ,
3839 'date' : parser .parse (entry .published ),
You can’t perform that action at this time.
0 commit comments