1
0
mirror of https://github.com/projekteuler/projekteuler.git synced 2025-12-10 08:46:41 +01:00

closes #28 - adding a .py script to download the original problems texts, saving it localy as a json and displaying it in the translation view

This commit is contained in:
Paul Würtz 2020-04-24 03:42:16 +02:00
parent e791d2527e
commit 4b8a8856de
3 changed files with 35 additions and 5 deletions

View File

@ -0,0 +1,20 @@
import requests, json
from bs4 import BeautifulSoup
URL = "https://projecteuler.net/problem={}"
def getBS(url):
r = requests.get(url)
data = r.text
return BeautifulSoup(data,"lxml")
problems = {}
for i in range(1, 701):
print(i)
problem = getBS(URL.format(i))
problem_tag = problem.find("div", {"class":"problem_content"})
problem_title = problem.find("h2").text
problem_html = str(problem_tag).replace("project/images/", "https://projecteuler.net/project/images/")
problems[i] = {"title":problem_title, "problem":problem_html}
open("problems.json", "w"). write(json.dumps(problems, ensure_ascii=False, indent=4))

View File

@ -1,9 +1,15 @@
require "json"
class TranslationsController < ApplicationController class TranslationsController < ApplicationController
before_action :set_problem, only: [:new, :create] before_action :set_problem, only: [:new, :create]
before_action :set_accept, only: [:create] before_action :set_accept, only: [:create]
# GET /translations/new # GET /translations/new
def new def new
file = File.open "app/controllers/problems.json"
problem_json = JSON.load file
@original_title = problem_json[@problem.id.to_s]["title"]
@original_problem = problem_json[@problem.id.to_s]["problem"]
@translation = @problem.translations.build @translation = @problem.translations.build
if @problem.is_translated? if @problem.is_translated?
@translation.title = @problem.translation.title @translation.title = @problem.translation.title

View File

@ -4,11 +4,7 @@
</div> </div>
<div class='card-body'> <div class='card-body'>
<ul> <ul>
<li>Als Basis für jede Übersetzung dient der HTML-Quelltext von projecteuler.net. <li>Als Basis für jede Übersetzung dient der <%= link_to "Text von projecteuler.net", @problem.original_url, target: '_blank' %>.</li>
Dazu gehen Sie auf die entsprechende <%= link_to "Problem-Seite", @problem.original_url, target: '_blank' %>.
Dort öffnen Sie den HTML-Quelltext (z.B. mit <code>Strg+U</code> in Firefox) und kopieren alles zwischen <code>&lt;div class=&quot;problem_content&quot; role=&quot;problem&quot;&gt;</code> und <code>&lt;/div&gt;</code>.
Diesen Quelltext fügen Sie auf dieser Seite ein.
In Zukunft sollen diese Schritte automatisch passieren.</li>
<li>Der HTML-Quelltext sollte im Allgemeinen unverändert bleiben.</li> <li>Der HTML-Quelltext sollte im Allgemeinen unverändert bleiben.</li>
<li>Querverweise zu anderen Problemen sollten in der Form <code>/problem=??</code> erfolgen.</li> <li>Querverweise zu anderen Problemen sollten in der Form <code>/problem=??</code> erfolgen.</li>
<li>Wenn Grafiken oder Dateien verwendet werden, sollte die URL <code>https://projecteuler.net/...</code> verwendet werden.</li> <li>Wenn Grafiken oder Dateien verwendet werden, sollte die URL <code>https://projecteuler.net/...</code> verwendet werden.</li>
@ -16,3 +12,11 @@
</ul> </ul>
</div> </div>
</div> </div>
<div class="card mt-3 mb-3">
<div class="card-header">
Originaler Text der Aufgabe <i>"<%= @original_title %>"<i>
</div>
<div class='card-body'>
<%= raw(@original_problem) %>
</div>
</div>