Browse Source

default

main
Cailean Finn 7 months ago
parent
commit
9684767752
  1. 49
      app.py
  2. 3
      requirements.txt
  3. 22
      templates/base.html

49
app.py

@ -0,0 +1,49 @@
from flask import Flask, render_template
import requests
from bs4 import BeautifulSoup
import urllib.parse
app = Flask(__name__)
# Base URL of your MediaWiki instance
MEDIAWIKI_BASE_URL = 'http://192.168.0.10/mediawiki/'
# Define a route for the homepage
@app.route('/')
def homepage():
# Make a request to MediaWiki API to get a list of all pages
response = requests.get('http://192.168.0.10/mediawiki/api.php', params={'action': 'query', 'list': 'allpages', 'format': 'json'})
data = response.json()
# Extract page titles from API response
pages = [page['title'] for page in data['query']['allpages']]
# Fetch content for each page
page_contents = {}
for page_title in pages:
page_response = requests.get('http://192.168.0.10/mediawiki/api.php', params={'action': 'parse', 'page': page_title, 'format': 'json'})
page_data = page_response.json()
page_html = page_data['parse']['text']['*']
# Preprocess HTML content to fix image URLs
page_html = fix_image_urls(page_html)
# Parse HTML content to extract image URLs
soup = BeautifulSoup(page_html, 'html.parser')
images = soup.find_all('img')
image_urls = [urllib.parse.urljoin(MEDIAWIKI_BASE_URL, img['src']) for img in images]
# Store page content and image URLs
page_contents[page_title] = {'content': page_html, 'images': image_urls}
# Render the base template with the list of pages and their content
return render_template('base.html', pages=page_contents)
def fix_image_urls(html_content):
# Replace relative image URLs with absolute URLs using MEDIAWIKI_BASE_URL
return html_content.replace('src="/mediawiki', 'src="' + MEDIAWIKI_BASE_URL)
# Define other routes and functions as needed for your website
if __name__ == '__main__':
app.run(debug=True)

3
requirements.txt

@ -0,0 +1,3 @@
beautifulsoup4==4.12.3
Flask==3.0.2
Requests==2.31.0

22
templates/base.html

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html>
<head>
<title>My Wiki</title>
</head>
<body>
<h1>Welcome to My Wiki</h1>
<ul>
{% for page_title, page_info in pages.items() %}
<li>
<h2>{{ page_title }}</h2>
<div>{{ page_info.content|safe }}</div>
{% if page_info.images %}
{% for image_url in page_info.images %}
<li><img src="{{ image_url }}" alt="Image"></li>
{% endfor %}
{% endif %}
</li>
{% endfor %}
</ul>
</body>
</html>
Loading…
Cancel
Save