代码之家  ›  专栏  ›  技术社区  ›  ESV Alconja

来自Gallery2的RSS源

  •  0
  • ESV Alconja  · 技术社区  · 16 年前

    在和警察打了几个小时之后 Gallery2 RSS module a Google search for "no feeds have yet been defined" ,这是一个很常见的问题。你有什么小窍门和/或窍门让gallery2rss模块正常工作吗?或者,对于一个相对不懂PHP的开发人员来说,如何调试这个PHP应用程序的问题呢?

    2 回复  |  直到 5 年前
        1
  •  1
  •   ESV Alconja    16 年前

    我对这个问题的最终(希望是暂时的)解决方案是pythoncgi脚本。我的脚本适合任何可能觉得有用的人(尽管这完全是一次黑客攻击)。

    #!/usr/bin/python
    """A CGI script to produce an RSS feed of top-level Gallery2 albums."""
    
    #import cgi
    #import cgitb; cgitb.enable()
    from time import gmtime, strftime
    import MySQLdb
    
    ALBUM_QUERY = '''
        select g_id, g_title, g_originationTimestamp
        from g_Item
        where g_canContainChildren = 1 
        order by g_originationTimestamp desc
        limit 0, 20
        '''
    
    RSS_TEMPLATE = '''Content-Type: text/xml
    
    <?xml version="1.0"?>
    <rss version="2.0">
      <channel>
        <title>TITLE</title>
        <link>http://example.com/gallery2/main.php</link>
        <description>DESCRIPTION</description>
        <ttl>1440</ttl>
    %s
      </channel>
    </rss>
    '''
    
    ITEM_TEMPLATE = '''
        <item>
          <title>%s</title>
          <link>http://example.com/gallery2/main.php?g2_itemId=%s</link>
          <description>%s</description>
          <pubDate>%s</pubDate>
        </item>
    '''
    
    def to_item(row):
        item_id = row[0]
        title = row[1]
        date = strftime("%a, %d %b %Y %H:%M:%S GMT", gmtime(row[2]))
        return ITEM_TEMPLATE % (title, item_id, title, date)
    
    conn = MySQLdb.connect(host = "HOST",
                           user = "USER",
                           passwd = "PASSWORD",
                           db = "DATABASE")
    curs = conn.cursor()
    curs.execute(ALBUM_QUERY)
    print RSS_TEMPLATE % ''.join([ to_item(row) for row in curs.fetchall() ])
    curs.close()
    
        2
  •  -2
  •   Community uzul    7 年前