add json api
This commit is contained in:
parent
4aa40b69f6
commit
bd3d868312
8185
bootstrap.css
vendored
Normal file
8185
bootstrap.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
168
food.html
Normal file
168
food.html
Normal file
@ -0,0 +1,168 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="description" content="Sammelwebsite für das Essen der Uni Bamberg">
|
||||
<meta name="keywords" content="OFU, Otto-Friedrich, Universität, Bamberg">
|
||||
<link rel="stylesheet" href=" bootstrap.css ">
|
||||
<title>Essen an der OFU</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Food for Students</h1>
|
||||
<p>Last execute: Sunday, 24.09.2017</p>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h2>Cafeteria Erba-Insel</h2>
|
||||
|
||||
<p><span>24.07.</span><span>Rinderhacksteak an Cognacsoße und Spätzle</span></p>
|
||||
|
||||
<p><span>25.07.</span><span>Gemüseschnitzel mit Kräutercreme und Kartoffeln</span></p>
|
||||
|
||||
<p><span>26.07.</span><span>Penne-Nudeln mit Hackfleischsoße</span></p>
|
||||
|
||||
<p><span>27.07.</span><span>Kaiserschmarrn mit Apfelmus</span></p>
|
||||
|
||||
</div>
|
||||
<div class="col">
|
||||
<h2>Cafeteria Markusplatz</h2>
|
||||
|
||||
<p><span>24.07.</span><span>Vegetarisches Chili sin Carne</span></p>
|
||||
|
||||
<p><span>25.07.</span><span>Gemüseschnitzel mit Kräutercreme und Kartoffeln</span></p>
|
||||
|
||||
<p><span>26.07.</span><span>Überbackene Zucchini an Paprikasoße mit Püree</span></p>
|
||||
|
||||
<p><span>27.07.</span><span>Kaiserschmarrn mit Apfelmus</span></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h2>Speiseplan für Austraße Bamberg</h2>
|
||||
|
||||
<h3>Montag 18.09.</h3>
|
||||
|
||||
<p>Rindergeschnetzeltes "Provencial"</p>
|
||||
|
||||
<p>Pizza "Speciale"</p>
|
||||
|
||||
<p>Gebackene Kartoffeltaschen "Kräuterfrischkäse" an Salatgarnitur</p>
|
||||
|
||||
|
||||
<h3>Dienstag 19.09.</h3>
|
||||
|
||||
<p>Hähnchenpiccata an Tomatenragout</p>
|
||||
|
||||
<p>Schweinenackensteak vom Grill mit hausgemachter Kräuterbutter</p>
|
||||
|
||||
<p>Pizza "Speciale"</p>
|
||||
|
||||
<p>Kokos Gemüsecurry "Thai Style" mit Wildreis</p>
|
||||
|
||||
|
||||
<h3>Mittwoch 20.09.</h3>
|
||||
|
||||
<p>Rindfleisch mit Meerrettich</p>
|
||||
|
||||
<p>Griechischer Teller "Kreta" mit Suflaki, Calamari, Bifteki und hausgemachtem Kräuterdip</p>
|
||||
|
||||
<p>Nudelpfanne "Mediterrane"</p>
|
||||
|
||||
|
||||
<h3>Donnerstag 21.09.</h3>
|
||||
|
||||
<p>Lasagne von der Pute</p>
|
||||
|
||||
<p>Apfelstrudel "Tiroler Art" mit Vanillesoße</p>
|
||||
|
||||
<p>Wedges mit Kräuterquark</p>
|
||||
|
||||
|
||||
<h3>Freitag 22.09.</h3>
|
||||
|
||||
<p>Pangasiusfilet an fränkischer Silvanersoße mit Gemüsestreifen</p>
|
||||
|
||||
<p>Rindergeschnetzeltes "Provencial"</p>
|
||||
|
||||
<p>Schweinerückensteak mit Champignonrahmsoße</p>
|
||||
|
||||
<p>Blumenkohlkäsemedaillon mit Pestosoße</p>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col">
|
||||
<h2>Speiseplan für Feldkirchenstraße Bamberg</h2>
|
||||
|
||||
<h3>Montag 18.09.</h3>
|
||||
|
||||
<p>Rindergeschnetzeltes "Provencial"</p>
|
||||
|
||||
<p>Schwarzer Heilbutt an Krebsrahmsoße</p>
|
||||
|
||||
<p>Pizza "Speciale"</p>
|
||||
|
||||
<p>Gebackene Kartoffeltaschen "Kräuterfrischkäse" an Salatgarnitur</p>
|
||||
|
||||
|
||||
<h3>Dienstag 19.09.</h3>
|
||||
|
||||
<p>Hähnchenpiccata an Tomatenragout</p>
|
||||
|
||||
<p>Pizza "Speciale"</p>
|
||||
|
||||
<p>Schweinenackensteak vom Grill mit hausgemachter Kräuterbutter</p>
|
||||
|
||||
<p>Kokos Gemüsecurry "Thai Style" mit Wildreis</p>
|
||||
|
||||
|
||||
<h3>Mittwoch 20.09.</h3>
|
||||
|
||||
<p>Hähnchenpiccata an Tomatenragout</p>
|
||||
|
||||
<p>Rindfleisch mit Meerrettich</p>
|
||||
|
||||
<p>Griechischer Teller "Kreta" mit Suflaki, Calamari, Bifteki und hausgemachtem Kräuterdip</p>
|
||||
|
||||
<p>Kokos Gemüsecurry "Thai Style" mit Wildreis</p>
|
||||
|
||||
<p>Nudelpfanne "Mediterrane"</p>
|
||||
|
||||
|
||||
<h3>Donnerstag 21.09.</h3>
|
||||
|
||||
<p>Lasagne von der Pute</p>
|
||||
|
||||
<p>Apfelstrudel "Tiroler Art" mit Vanillesoße</p>
|
||||
|
||||
<p>Wedges mit Kräuterquark</p>
|
||||
|
||||
|
||||
<h3>Freitag 22.09.</h3>
|
||||
|
||||
<p>Lasagne von der Pute</p>
|
||||
|
||||
<p>Pangasiusfilet an fränkischer Silvanersoße mit Gemüsestreifen</p>
|
||||
|
||||
<p>Schweinerückensteak mit Champignonrahmsoße</p>
|
||||
|
||||
<p>Blumenkohlkäsemedaillon mit Pestosoße</p>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h2>Feki.de Happy Hour Guide for Food</h2>
|
||||
<h3>Sunday, 24.09.2017</h3>
|
||||
|
||||
<p>Leider gibt es heute keine Happy Hours :(</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
154
ofu-food.html
154
ofu-food.html
@ -1,10 +1,144 @@
|
||||
<!doctype html><html lang="de"><head><meta charset="utf-8"><meta name="description" content="Sammelwebsite für das Essen der Uni Bamberg"><meta name="keywords" content="OFU, Otto-Friedrich, Universität, Bamberg"><link rel="stylesheet" href="bootstrap.css"><title>Essen an der OFU</title></head><body><p>Last execute: 23.09.2017</p><div class="container"><h2>Cafeteria Erba-Insel</h2><p class="bodytext">24.07. Rinderhacksteak an Cognacsoße und Spätzle<br/>25.07. Gemüseschnitzel mit Kräutercreme und Kartoffeln<br/>26.07. Penne-Nudeln mit Hackfleischsoße<br/>27.07. Kaiserschmarrn mit Apfelmus</p><h2>Cafeteria Markusplatz</h2><p class="bodytext">24.07. Vegetarisches Chili sin Carne<br/>25.07. Gemüseschnitzel mit Kräutercreme und Kartoffeln<br/>26.07. Überbackene Zucchini an Paprikasoße mit Püree<br/>27.07. Kaiserschmarrn mit Apfelmus</p><div><h2>Mensa Austraße</h2><h5>Montag 18.09.</h5><div class="title">Rindergeschnetzeltes "Provencial"</div><a href="https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/speiseplaene.html?tx_thmensamenu_pi2%5Bmensen%5D=2&tx_thmensamenu_pi2%5Baction%5D=show&tx_thmensamenu_pi2%5Bcontroller%5D=Speiseplan&cHash=511e047953ee1370c3b82c11a04624bb#toggle">Zusatzstoffe / Allergene & sonstige Informationen</a><div class="title">Pizza "Speciale"</div><a href="https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/speiseplaene.html?tx_thmensamenu_pi2%5Bmensen%5D=2&tx_thmensamenu_pi2%5Baction%5D=show&tx_thmensamenu_pi2%5Bcontroller%5D=Speiseplan&cHash=511e047953ee1370c3b82c11a04624bb#toggle">Zusatzstoffe / Allergene & sonstige Informationen</a><div class="title">Gebackene Kartoffeltaschen "Kräuterfrischkäse" an Salatgarnitur</div><a href="https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/speiseplaene.html?tx_thmensamenu_pi2%5Bmensen%5D=2&tx_thmensamenu_pi2%5Baction%5D=show&tx_thmensamenu_pi2%5Bcontroller%5D=Speiseplan&cHash=511e047953ee1370c3b82c11a04624bb#toggle">Zusatzstoffe / Allergene & sonstige Informationen</a></div><div><h2>Feki Mensa</h2><h5>Montag 18.09.</h5><div class="title">Rindergeschnetzeltes "Provencial"</div><a href="https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/speiseplaene.html?tx_thmensamenu_pi2%5Bmensen%5D=3&tx_thmensamenu_pi2%5Baction%5D=show&tx_thmensamenu_pi2%5Bcontroller%5D=Speiseplan&cHash=c3fe5ebb35e5fba3794f01878e798b7c#toggle">Zusatzstoffe / Allergene & sonstige Informationen</a><div class="title">Schwarzer Heilbutt an Krebsrahmsoße</div><a href="https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/speiseplaene.html?tx_thmensamenu_pi2%5Bmensen%5D=3&tx_thmensamenu_pi2%5Baction%5D=show&tx_thmensamenu_pi2%5Bcontroller%5D=Speiseplan&cHash=c3fe5ebb35e5fba3794f01878e798b7c#toggle">Zusatzstoffe / Allergene & sonstige Informationen</a><div class="title">Pizza "Speciale"</div><a href="https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/speiseplaene.html?tx_thmensamenu_pi2%5Bmensen%5D=3&tx_thmensamenu_pi2%5Baction%5D=show&tx_thmensamenu_pi2%5Bcontroller%5D=Speiseplan&cHash=c3fe5ebb35e5fba3794f01878e798b7c#toggle">Zusatzstoffe / Allergene & sonstige Informationen</a><div class="title">Gebackene Kartoffeltaschen "Kräuterfrischkäse" an Salatgarnitur</div><a href="https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/speiseplaene.html?tx_thmensamenu_pi2%5Bmensen%5D=3&tx_thmensamenu_pi2%5Baction%5D=show&tx_thmensamenu_pi2%5Bcontroller%5D=Speiseplan&cHash=c3fe5ebb35e5fba3794f01878e798b7c#toggle">Zusatzstoffe / Allergene & sonstige Informationen</a></div><h2>Feki.de Happy Hour Guide</h2><div class="tab-pane" id="food" role="tabpanel">
|
||||
<h2>Aktuelle HappyHours</h2>
|
||||
<table class="table">
|
||||
</table>
|
||||
<p>Leider sind gerade keine HappyHours :( </p>
|
||||
<h2>Kommende HappyHours</h2>
|
||||
<table class="table">
|
||||
</table>
|
||||
<p>Leider kommen keine HappyHours mehr :( </p>
|
||||
</div></div></body></html>
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="description" content="Sammelwebsite für das Essen der Uni Bamberg">
|
||||
<meta name="keywords" content="OFU, Otto-Friedrich, Universität, Bamberg">
|
||||
<link rel="stylesheet" href=" bootstrap.css ">
|
||||
<title>Essen an der OFU</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Food for Students</h1>
|
||||
<p>Last execute: Sunday, 24.09.2017</p>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h2>Cafeteria Erba-Insel</h2>
|
||||
|
||||
<p><span>Essen am 24.07.</span><span>['Rinderhacksteak an Cognacsoße und Spätzle']</span></p>
|
||||
|
||||
<p><span>Essen am 25.07.</span><span>['Gemüseschnitzel mit Kräutercreme und Kartoffeln']</span></p>
|
||||
|
||||
<p><span>Essen am 26.07.</span><span>['Penne-Nudeln mit Hackfleischsoße']</span></p>
|
||||
|
||||
<p><span>Essen am 27.07.</span><span>['Kaiserschmarrn mit Apfelmus']</span></p>
|
||||
|
||||
</div>
|
||||
<div class="col">
|
||||
<h2>Cafeteria Markusplatz</h2>
|
||||
|
||||
<p><span>Essen am 24.07.</span><span>['Vegetarisches Chili sin Carne']</span></p>
|
||||
|
||||
<p><span>Essen am 25.07.</span><span>['Gemüseschnitzel mit Kräutercreme und Kartoffeln']</span></p>
|
||||
|
||||
<p><span>Essen am 26.07.</span><span>['Überbackene Zucchini an Paprikasoße mit Püree']</span></p>
|
||||
|
||||
<p><span>Essen am 27.07.</span><span>['Kaiserschmarrn mit Apfelmus']</span></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h2>Speiseplan für Austraße Bamberg</h2>
|
||||
|
||||
<h3>Montag 18.09.</h3>
|
||||
|
||||
<p>menu</p>
|
||||
|
||||
<p>date</p>
|
||||
|
||||
|
||||
<h3>Dienstag 19.09.</h3>
|
||||
|
||||
<p>menu</p>
|
||||
|
||||
<p>date</p>
|
||||
|
||||
|
||||
<h3>Mittwoch 20.09.</h3>
|
||||
|
||||
<p>menu</p>
|
||||
|
||||
<p>date</p>
|
||||
|
||||
|
||||
<h3>Donnerstag 21.09.</h3>
|
||||
|
||||
<p>menu</p>
|
||||
|
||||
<p>date</p>
|
||||
|
||||
|
||||
<h3>Freitag 22.09.</h3>
|
||||
|
||||
<p>menu</p>
|
||||
|
||||
<p>date</p>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col">
|
||||
<h2>Speiseplan für Feldkirchenstraße Bamberg</h2>
|
||||
|
||||
<h3>Montag 18.09.</h3>
|
||||
|
||||
<p>menu</p>
|
||||
|
||||
<p>date</p>
|
||||
|
||||
|
||||
<h3>Dienstag 19.09.</h3>
|
||||
|
||||
<p>menu</p>
|
||||
|
||||
<p>date</p>
|
||||
|
||||
|
||||
<h3>Mittwoch 20.09.</h3>
|
||||
|
||||
<p>menu</p>
|
||||
|
||||
<p>date</p>
|
||||
|
||||
|
||||
<h3>Donnerstag 21.09.</h3>
|
||||
|
||||
<p>menu</p>
|
||||
|
||||
<p>date</p>
|
||||
|
||||
|
||||
<h3>Freitag 22.09.</h3>
|
||||
|
||||
<p>menu</p>
|
||||
|
||||
<p>date</p>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h2>Feki.de Happy Hour Guide for Food</h2>
|
||||
<h3>Sunday, 24.09.2017</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Location</th>
|
||||
<th>Time</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
506
ofu-food/.idea/workspace.xml
generated
506
ofu-food/.idea/workspace.xml
generated
@ -9,16 +9,86 @@
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="CoverageDataManager">
|
||||
<SUITE FILE_PATH="coverage/ofu_food$foodplan_parser_controler.coverage" NAME="foodplan-parser-controler Coverage Results" MODIFIED="1506206083609" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||
<SUITE FILE_PATH="coverage/ofu_food$mensa_page_parser.coverage" NAME="mensa-page-parser Coverage Results" MODIFIED="1506198388515" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||
<SUITE FILE_PATH="coverage/ofu_food$fekide_happyhour_page_parser.coverage" NAME="fekide-happyhour-page-parser Coverage Results" MODIFIED="1506204094485" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||
<SUITE FILE_PATH="coverage/ofu_food$ofu_food.coverage" NAME="ofu-food Coverage Results" MODIFIED="1506193420790" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||
<SUITE FILE_PATH="coverage/ofu_food$cafete_page_parser.coverage" NAME="cafete-page-parser Coverage Results" MODIFIED="1506201552685" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||
<SUITE FILE_PATH="coverage/ofu_food$generator_food_page.coverage" NAME="generator-food-page Coverage Results" MODIFIED="1506210188852" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="DockManager">
|
||||
<window id="1">
|
||||
<content type="file-editors">
|
||||
<state>
|
||||
<leaf>
|
||||
<file leaf-file-name="erba-cafete.json" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/Json_Files/erba-cafete.json">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="feki-mensa.json" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/Json_Files/feki-mensa.json">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="252" lean-forward="false" selection-start-line="0" selection-start-column="106" selection-end-line="0" selection-end-column="252" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</state>
|
||||
</content>
|
||||
</window>
|
||||
</component>
|
||||
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<file leaf-file-name="ofu-food.py" pinned="false" current-in-tab="true">
|
||||
<file leaf-file-name="ofu-food.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/ofu-food.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="2860">
|
||||
<caret line="143" column="29" lean-forward="false" selection-start-line="143" selection-start-column="29" selection-end-line="143" selection-end-column="29" />
|
||||
<state relative-caret-position="180">
|
||||
<caret line="15" column="14" lean-forward="false" selection-start-line="15" selection-start-column="14" selection-end-line="15" selection-end-column="62" />
|
||||
<folding>
|
||||
<element signature="e#0#15#0" expanded="true" />
|
||||
<element signature="e#43#58#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="food.jinja" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/templates/food.jinja">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1460">
|
||||
<caret line="73" column="60" lean-forward="false" selection-start-line="73" selection-start-column="60" selection-end-line="73" selection-end-column="60" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="foodplan-parser-controler.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/foodplan-parser-controler.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="160">
|
||||
<caret line="8" column="18" lean-forward="true" selection-start-line="8" selection-start-column="18" selection-end-line="8" selection-end-column="65" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="generator-food-page.py" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/generator-food-page.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="120">
|
||||
<caret line="6" column="2" lean-forward="false" selection-start-line="6" selection-start-column="2" selection-end-line="6" selection-end-column="2" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
@ -26,10 +96,23 @@
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FileTemplateManagerImpl">
|
||||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="Python Script" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/ofu-food.py" />
|
||||
<option value="$PROJECT_DIR$/cafete-page-parser.py" />
|
||||
<option value="$PROJECT_DIR$/mensa-page-parser.py" />
|
||||
<option value="$PROJECT_DIR$/fekide-happyhour-page-parser.py" />
|
||||
<option value="$PROJECT_DIR$/templates/food.jinja" />
|
||||
<option value="$PROJECT_DIR$/foodplan-parser-controler.py" />
|
||||
<option value="$PROJECT_DIR$/generator-food-page.py" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
@ -40,7 +123,8 @@
|
||||
<sorting>DEFINITION_ORDER</sorting>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds">
|
||||
<option name="y" value="27" />
|
||||
<option name="x" value="995" />
|
||||
<option name="y" value="2187" />
|
||||
<option name="width" value="1920" />
|
||||
<option name="height" value="1053" />
|
||||
</component>
|
||||
@ -72,6 +156,34 @@
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="ofu-food" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="ofu-food" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="templates" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="ofu-food" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="ofu-food" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="Json_Files" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="Scratches" />
|
||||
@ -92,6 +204,261 @@
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="RunManager" selected="Python.generator-food-page">
|
||||
<configuration default="false" name="mensa-page-parser" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="ofu-food" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/mensa-page-parser.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="foodplan-parser-controler" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="ofu-food" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/foodplan-parser-controler.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="cafete-page-parser" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="ofu-food" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/cafete-page-parser.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="fekide-happyhour-page-parser" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="ofu-food" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/fekide-happyhour-page-parser.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="generator-food-page" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="ofu-food" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/generator-food-page.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="DjangoTestsConfigurationType" factoryName="Django tests">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="ofu-food" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
|
||||
<option name="TARGET" value="" />
|
||||
<option name="SETTINGS_FILE" value="" />
|
||||
<option name="CUSTOM_SETTINGS" value="false" />
|
||||
<option name="USE_OPTIONS" value="false" />
|
||||
<option name="OPTIONS" value="" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="JavaScriptTestRunnerJest" factoryName="Jest">
|
||||
<node-interpreter value="project" />
|
||||
<working-dir value="" />
|
||||
<envs />
|
||||
<scope-kind value="ALL" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="JavaScriptTestRunnerProtractor" factoryName="Protractor">
|
||||
<config-file value="" />
|
||||
<node-interpreter value="project" />
|
||||
<envs />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="PyBehaveRunConfigurationType" factoryName="Behave">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="ofu-food" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
|
||||
<option name="ADDITIONAL_ARGS" value="" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="PyLettuceRunConfigurationType" factoryName="Lettuce">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="ofu-food" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
|
||||
<option name="ADDITIONAL_ARGS" value="" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="PythonConfigurationType" factoryName="Python">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="ofu-food" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
|
||||
<option name="SCRIPT_NAME" value="" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="Tox" factoryName="Tox">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
|
||||
<module name="ofu-food" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="js.build_tools.npm" factoryName="npm">
|
||||
<command value="run" />
|
||||
<scripts />
|
||||
<node-interpreter value="project" />
|
||||
<envs />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="tests" factoryName="Doctests">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="ofu-food" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
|
||||
<option name="SCRIPT_NAME" value="" />
|
||||
<option name="CLASS_NAME" value="" />
|
||||
<option name="METHOD_NAME" value="" />
|
||||
<option name="FOLDER_NAME" value="" />
|
||||
<option name="TEST_TYPE" value="TEST_SCRIPT" />
|
||||
<option name="PATTERN" value="" />
|
||||
<option name="USE_PATTERN" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="tests" factoryName="Unittests">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="ofu-food" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
|
||||
<option name="_new_additionalArguments" value="""" />
|
||||
<option name="_new_target" value=""."" />
|
||||
<option name="_new_targetType" value=""PATH"" />
|
||||
<method />
|
||||
</configuration>
|
||||
<list size="5">
|
||||
<item index="0" class="java.lang.String" itemvalue="Python.mensa-page-parser" />
|
||||
<item index="1" class="java.lang.String" itemvalue="Python.foodplan-parser-controler" />
|
||||
<item index="2" class="java.lang.String" itemvalue="Python.cafete-page-parser" />
|
||||
<item index="3" class="java.lang.String" itemvalue="Python.fekide-happyhour-page-parser" />
|
||||
<item index="4" class="java.lang.String" itemvalue="Python.generator-food-page" />
|
||||
</list>
|
||||
<recent_temporary>
|
||||
<list size="5">
|
||||
<item index="0" class="java.lang.String" itemvalue="Python.generator-food-page" />
|
||||
<item index="1" class="java.lang.String" itemvalue="Python.foodplan-parser-controler" />
|
||||
<item index="2" class="java.lang.String" itemvalue="Python.fekide-happyhour-page-parser" />
|
||||
<item index="3" class="java.lang.String" itemvalue="Python.cafete-page-parser" />
|
||||
<item index="4" class="java.lang.String" itemvalue="Python.mensa-page-parser" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
<component name="ShelveChangesManager" show_recycled="false">
|
||||
<option name="remove_strategy" value="false" />
|
||||
</component>
|
||||
@ -106,14 +473,14 @@
|
||||
<servers />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="0" y="27" width="1920" height="1053" extended-state="7" />
|
||||
<frame x="995" y="2187" width="1920" height="1053" extended-state="7" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32896176" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
@ -129,6 +496,27 @@
|
||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
</layout>
|
||||
<layout-to-restore>
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32896176" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
</layout-to-restore>
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="processedProjectFiles" value="true" />
|
||||
@ -137,19 +525,117 @@
|
||||
<option name="myLimit" value="2678400000" />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager />
|
||||
<breakpoint-manager>
|
||||
<option name="time" value="1" />
|
||||
</breakpoint-manager>
|
||||
<watches-manager />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/Json_Files/austr-mensa.json">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/food.html">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Json_Files/feki-mensa.json">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="252" lean-forward="false" selection-start-line="0" selection-start-column="106" selection-end-line="0" selection-end-column="252" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Json_Files/erba-cafete.json">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/templates/food.jinja">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1460">
|
||||
<caret line="73" column="60" lean-forward="false" selection-start-line="73" selection-start-column="60" selection-end-line="73" selection-end-column="60" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/ofu-food.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="2860">
|
||||
<caret line="143" column="29" lean-forward="false" selection-start-line="143" selection-start-column="29" selection-end-line="143" selection-end-column="29" />
|
||||
<state relative-caret-position="180">
|
||||
<caret line="15" column="14" lean-forward="false" selection-start-line="15" selection-start-column="14" selection-end-line="15" selection-end-column="62" />
|
||||
<folding>
|
||||
<element signature="e#43#58#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/foodplan-parser-controler.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="160">
|
||||
<caret line="8" column="18" lean-forward="true" selection-start-line="8" selection-start-column="18" selection-end-line="8" selection-end-column="65" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Json_Files/feki-happyhour-guide.json">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="23" lean-forward="false" selection-start-line="0" selection-start-column="20" selection-end-line="0" selection-end-column="23" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/fekide-happyhour-page-parser.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="660">
|
||||
<caret line="48" column="19" lean-forward="false" selection-start-line="48" selection-start-column="19" selection-end-line="48" selection-end-column="19" />
|
||||
<folding>
|
||||
<element signature="e#0#15#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/cafete-page-parser.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="336">
|
||||
<caret line="40" column="4" lean-forward="false" selection-start-line="40" selection-start-column="4" selection-end-line="44" selection-end-column="7" />
|
||||
<folding>
|
||||
<element signature="e#0#15#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/mensa-page-parser.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="416">
|
||||
<caret line="46" column="43" lean-forward="false" selection-start-line="46" selection-start-column="34" selection-end-line="46" selection-end-column="43" />
|
||||
<folding>
|
||||
<element signature="e#0#15#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/generator-food-page.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="120">
|
||||
<caret line="6" column="2" lean-forward="false" selection-start-line="6" selection-start-column="2" selection-end-line="6" selection-end-column="2" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
</project>
|
||||
1
ofu-food/Json_Files/austr-mensa.json
Normal file
1
ofu-food/Json_Files/austr-mensa.json
Normal file
@ -0,0 +1 @@
|
||||
{"name": "Speiseplan f\u00fcr Austra\u00dfe Bamberg", "weekmenu": [{"date": "Montag 18.09.", "menu": ["Rindergeschnetzeltes \"Provencial\"", "Pizza \"Speciale\"", "Gebackene Kartoffeltaschen \"Kr\u00e4uterfrischk\u00e4se\" an Salatgarnitur"]}, {"date": "Dienstag 19.09.", "menu": ["H\u00e4hnchenpiccata an Tomatenragout", "Schweinenackensteak vom Grill mit hausgemachter Kr\u00e4uterbutter", "Pizza \"Speciale\"", "Kokos Gem\u00fcsecurry \"Thai Style\" mit Wildreis"]}, {"date": "Mittwoch 20.09.", "menu": ["Rindfleisch mit Meerrettich", "Griechischer Teller \"Kreta\" mit Suflaki, Calamari, Bifteki und hausgemachtem Kr\u00e4uterdip", "Nudelpfanne \"Mediterrane\""]}, {"date": "Donnerstag 21.09.", "menu": ["Lasagne von der Pute", "Apfelstrudel \"Tiroler Art\" mit Vanilleso\u00dfe", "Wedges mit Kr\u00e4uterquark"]}, {"date": "Freitag 22.09.", "menu": ["Pangasiusfilet an fr\u00e4nkischer Silvanerso\u00dfe mit Gem\u00fcsestreifen", "Rindergeschnetzeltes \"Provencial\"", "Schweiner\u00fcckensteak mit Champignonrahmso\u00dfe", "Blumenkohlk\u00e4semedaillon mit Pestoso\u00dfe"]}]}
|
||||
1
ofu-food/Json_Files/erba-cafete.json
Normal file
1
ofu-food/Json_Files/erba-cafete.json
Normal file
@ -0,0 +1 @@
|
||||
{"name": "Cafeteria Erba-Insel", "weekmenu": [{"date": "24.07.", "menu": ["Rinderhacksteak an Cognacso\u00dfe und Sp\u00e4tzle"]}, {"date": "25.07.", "menu": ["Gem\u00fcseschnitzel mit Kr\u00e4utercreme und Kartoffeln"]}, {"date": "26.07.", "menu": ["Penne-Nudeln mit Hackfleischso\u00dfe"]}, {"date": "27.07.", "menu": ["Kaiserschmarrn mit Apfelmus"]}]}
|
||||
1
ofu-food/Json_Files/feki-happyhour-guide.json
Normal file
1
ofu-food/Json_Files/feki-happyhour-guide.json
Normal file
@ -0,0 +1 @@
|
||||
{"happyhours": [], "day": "Sunday, 24.09.2017"}
|
||||
1
ofu-food/Json_Files/feki-mensa.json
Normal file
1
ofu-food/Json_Files/feki-mensa.json
Normal file
@ -0,0 +1 @@
|
||||
{"name": "Speiseplan f\u00fcr Feldkirchenstra\u00dfe Bamberg", "weekmenu": [{"date": "Montag 18.09.", "menu": ["Rindergeschnetzeltes \"Provencial\"", "Schwarzer Heilbutt an Krebsrahmso\u00dfe", "Pizza \"Speciale\"", "Gebackene Kartoffeltaschen \"Kr\u00e4uterfrischk\u00e4se\" an Salatgarnitur"]}, {"date": "Dienstag 19.09.", "menu": ["H\u00e4hnchenpiccata an Tomatenragout", "Pizza \"Speciale\"", "Schweinenackensteak vom Grill mit hausgemachter Kr\u00e4uterbutter", "Kokos Gem\u00fcsecurry \"Thai Style\" mit Wildreis"]}, {"date": "Mittwoch 20.09.", "menu": ["H\u00e4hnchenpiccata an Tomatenragout", "Rindfleisch mit Meerrettich", "Griechischer Teller \"Kreta\" mit Suflaki, Calamari, Bifteki und hausgemachtem Kr\u00e4uterdip", "Kokos Gem\u00fcsecurry \"Thai Style\" mit Wildreis", "Nudelpfanne \"Mediterrane\""]}, {"date": "Donnerstag 21.09.", "menu": ["Lasagne von der Pute", "Apfelstrudel \"Tiroler Art\" mit Vanilleso\u00dfe", "Wedges mit Kr\u00e4uterquark"]}, {"date": "Freitag 22.09.", "menu": ["Lasagne von der Pute", "Pangasiusfilet an fr\u00e4nkischer Silvanerso\u00dfe mit Gem\u00fcsestreifen", "Schweiner\u00fcckensteak mit Champignonrahmso\u00dfe", "Blumenkohlk\u00e4semedaillon mit Pestoso\u00dfe"]}]}
|
||||
1
ofu-food/Json_Files/markus-cafete.json
Normal file
1
ofu-food/Json_Files/markus-cafete.json
Normal file
@ -0,0 +1 @@
|
||||
{"name": "Cafeteria Markusplatz", "weekmenu": [{"date": "24.07.", "menu": ["Vegetarisches Chili sin Carne"]}, {"date": "25.07.", "menu": ["Gem\u00fcseschnitzel mit Kr\u00e4utercreme und Kartoffeln"]}, {"date": "26.07.", "menu": ["\u00dcberbackene Zucchini an Paprikaso\u00dfe mit P\u00fcree"]}, {"date": "27.07.", "menu": ["Kaiserschmarrn mit Apfelmus"]}]}
|
||||
BIN
ofu-food/__pycache__/cafete-page-parser.cpython-35.pyc
Normal file
BIN
ofu-food/__pycache__/cafete-page-parser.cpython-35.pyc
Normal file
Binary file not shown.
BIN
ofu-food/__pycache__/fekide-happyhour-page-parser.cpython-35.pyc
Normal file
BIN
ofu-food/__pycache__/fekide-happyhour-page-parser.cpython-35.pyc
Normal file
Binary file not shown.
BIN
ofu-food/__pycache__/mensa-page-parser.cpython-35.pyc
Normal file
BIN
ofu-food/__pycache__/mensa-page-parser.cpython-35.pyc
Normal file
Binary file not shown.
60
ofu-food/cafete-page-parser.py
Normal file
60
ofu-food/cafete-page-parser.py
Normal file
@ -0,0 +1,60 @@
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
import json
|
||||
|
||||
SPEISEPLAN_NAME_SELECTOR = '.csc-default .csc-header .csc-firstHeader'
|
||||
|
||||
|
||||
def loadPage(url: str):
|
||||
return requests.get(url).content
|
||||
|
||||
|
||||
def getFoodplanName(soup):
|
||||
foodplan_name = soup.select(SPEISEPLAN_NAME_SELECTOR)[0].getText()
|
||||
return foodplan_name
|
||||
|
||||
|
||||
def getRightLine(lines):
|
||||
for line in list(lines):
|
||||
if str(line).__contains__("<br/>"):
|
||||
return line
|
||||
return ""
|
||||
|
||||
|
||||
def getFoodPerDay(soup):
|
||||
days = []
|
||||
lines = soup.select('.csc-default .bodytext')
|
||||
line = getRightLine(lines)
|
||||
foods = str(line).strip('<p class="bodytext">').strip('</').split("<br/>")
|
||||
for food in foods:
|
||||
dayObj = {}
|
||||
day = str(food).split()[0]
|
||||
foodName = str(food).replace(day, "").strip()
|
||||
dayObj['date'] = day
|
||||
dayObj['menu'] = [foodName]
|
||||
days.append(dayObj)
|
||||
return days
|
||||
|
||||
|
||||
def parsePage(url: str):
|
||||
pagecontent = {}
|
||||
# {mensaspeiseplan:
|
||||
# {name:"",
|
||||
# weekmenu: [day:{date:, menu:[,,,]}]
|
||||
# }
|
||||
# }
|
||||
|
||||
page = loadPage(url)
|
||||
mensaSpeiseplan = {}
|
||||
soup = BeautifulSoup(page, "lxml")
|
||||
foodplan_name = getFoodplanName(soup)
|
||||
|
||||
days = getFoodPerDay(soup)
|
||||
mensaSpeiseplan['weekmenu'] = days
|
||||
mensaSpeiseplan['name'] = foodplan_name
|
||||
mensaSpeiseplanJson = json.dumps(mensaSpeiseplan)
|
||||
return mensaSpeiseplanJson
|
||||
|
||||
|
||||
# LINK_ERBA_CAFETE = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/sonderspeiseplaene/cafeteria-erba-insel.html"
|
||||
# parsePage(LINK_ERBA_CAFETE)
|
||||
53
ofu-food/fekide-happyhour-page-parser.py
Normal file
53
ofu-food/fekide-happyhour-page-parser.py
Normal file
@ -0,0 +1,53 @@
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
import datetime
|
||||
import json
|
||||
|
||||
SPEISEPLAN_NAME_SELECTOR = '.csc-default .csc-header .csc-firstHeader'
|
||||
|
||||
|
||||
def loadPage(url: str):
|
||||
return requests.get(url).content
|
||||
|
||||
|
||||
def getDay():
|
||||
return datetime.datetime.today().strftime("%A, %d.%m.%Y")
|
||||
|
||||
|
||||
def getHappyHours(soup):
|
||||
happyhours = []
|
||||
happyhourstable = soup.select('#food .table tr')
|
||||
for tableline in happyhourstable:
|
||||
happyhour = {}
|
||||
linesoup = BeautifulSoup(str(tableline), "lxml")
|
||||
location = linesoup.find("td", {"class": "location"}).getText()
|
||||
time = linesoup.find("td", {"class": "time"}).getText()
|
||||
description = linesoup.find("td", {"class": "description"}).getText()
|
||||
description = str(description).strip()
|
||||
|
||||
happyhour['location'] = location
|
||||
happyhour['time'] = time
|
||||
happyhour['description'] = description
|
||||
happyhours.append(happyhour)
|
||||
return happyhours
|
||||
|
||||
|
||||
def parsePage(url: str):
|
||||
pagecontent = {}
|
||||
# {
|
||||
# happyhours:[{happyhour:{location: "",time: "",description: ""},,,,]
|
||||
# }
|
||||
happyhours = []
|
||||
|
||||
page = loadPage(url)
|
||||
soup = BeautifulSoup(page, "lxml")
|
||||
happyhours = getHappyHours(soup)
|
||||
pagecontent['happyhours'] = happyhours
|
||||
pagecontent['day'] = getDay()
|
||||
|
||||
jsondata = json.dumps(pagecontent)
|
||||
return jsondata
|
||||
|
||||
|
||||
# LINK_FEKIDE_GUIDE = "https://www.feki.de/happyhour/wochenuebersicht"
|
||||
# parsePage(LINK_FEKIDE_GUIDE)
|
||||
68
ofu-food/foodplan-parser-controler.py
Normal file
68
ofu-food/foodplan-parser-controler.py
Normal file
@ -0,0 +1,68 @@
|
||||
import importlib
|
||||
|
||||
mensapageparser = importlib.import_module('mensa-page-parser')
|
||||
cafetepageparser = importlib.import_module('cafete-page-parser')
|
||||
fekidehappyhourpageparser = importlib.import_module('fekide-happyhour-page-parser')
|
||||
|
||||
# JSON_OUTPUT_DIR = "./Json_Files/"
|
||||
# PI
|
||||
JSON_OUTPUT_DIR = "/media/data_1/www/pub-html/ofu-food/api/json/"
|
||||
|
||||
LINK_FEKI_MENSA = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/speiseplaene.html?tx_thmensamenu_pi2%5Bmensen%5D=3&tx_thmensamenu_pi2%5Baction%5D=show&tx_thmensamenu_pi2%5Bcontroller%5D=Speiseplan&cHash=c3fe5ebb35e5fba3794f01878e798b7c"
|
||||
LINK_AUSTR_MENSA = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/speiseplaene.html?tx_thmensamenu_pi2%5Bmensen%5D=2&tx_thmensamenu_pi2%5Baction%5D=show&tx_thmensamenu_pi2%5Bcontroller%5D=Speiseplan&cHash=511e047953ee1370c3b82c11a04624bb"
|
||||
LINK_ERBA_CAFETE = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/sonderspeiseplaene/cafeteria-erba-insel.html"
|
||||
LINK_MARKUS_CAFETE = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/sonderspeiseplaene/cafeteria-markusplatz.html"
|
||||
LINK_FEKIDE_GUIDE = "https://www.feki.de/happyhour"
|
||||
|
||||
|
||||
def writeToFile(jsonfile, filename):
|
||||
with open((JSON_OUTPUT_DIR + filename),"w") as file:
|
||||
file.write(jsonfile)
|
||||
|
||||
|
||||
def main():
|
||||
try:
|
||||
fekiMensaJson = mensapageparser.parsePage(LINK_FEKI_MENSA)
|
||||
|
||||
except IndexError:
|
||||
print("Error")
|
||||
fekiMensaJson = {}
|
||||
|
||||
try:
|
||||
austrMensaJson = mensapageparser.parsePage(LINK_AUSTR_MENSA)
|
||||
except IndexError:
|
||||
print("Error")
|
||||
austrMensaJson = {}
|
||||
|
||||
try:
|
||||
erbaCafeteJson = cafetepageparser.parsePage(LINK_ERBA_CAFETE)
|
||||
except IndexError:
|
||||
print("Error")
|
||||
erbaCafeteJson = {}
|
||||
|
||||
try:
|
||||
markusCafeteJson = cafetepageparser.parsePage(LINK_MARKUS_CAFETE)
|
||||
except IndexError:
|
||||
print("Error")
|
||||
markusCafeteJson = {}
|
||||
|
||||
try:
|
||||
fekidehappyhourJson = fekidehappyhourpageparser.parsePage(LINK_FEKIDE_GUIDE)
|
||||
except IndexError:
|
||||
print("Error")
|
||||
fekidehappyhourJson = {}
|
||||
|
||||
print(fekiMensaJson)
|
||||
print(austrMensaJson)
|
||||
print(erbaCafeteJson)
|
||||
print(markusCafeteJson)
|
||||
print(fekidehappyhourJson)
|
||||
|
||||
writeToFile(fekiMensaJson, "feki-mensa.json")
|
||||
writeToFile(austrMensaJson, "austr-mensa.json")
|
||||
writeToFile(erbaCafeteJson, "erba-cafete.json")
|
||||
writeToFile(markusCafeteJson, "markus-cafete.json")
|
||||
writeToFile(fekidehappyhourJson, "feki-happyhour-guide.json")
|
||||
|
||||
|
||||
main()
|
||||
57
ofu-food/generator-food-page.py
Normal file
57
ofu-food/generator-food-page.py
Normal file
@ -0,0 +1,57 @@
|
||||
import jinja2
|
||||
import json
|
||||
import datetime
|
||||
|
||||
CSSFILE = "bootstrap.css"
|
||||
|
||||
# JSON_FILES_PATH = "./Json_Files/"
|
||||
# OUTPUT = "../food.html"
|
||||
|
||||
# PI
|
||||
JSON_FILES_PATH = "/media/data_1/www/pub-html/ofu-food/api/json/"
|
||||
CSSFILE_SRC = "../bootstrap-4.0.0-beta-dist/css/bootstrap.css"
|
||||
CSSFILE_DEST = "/media/data_1/www/pub-html/ofu-food/bootstrap.css"
|
||||
OUTPUT = "/media/data_1/www/pub-html/ofu-food/food.html"
|
||||
|
||||
|
||||
def getJsonFromFile(path):
|
||||
with open(path, "r") as file:
|
||||
return json.load(file)
|
||||
|
||||
|
||||
def main():
|
||||
erbaJson = getJsonFromFile(JSON_FILES_PATH + "erba-cafete.json")
|
||||
markusJson = getJsonFromFile(JSON_FILES_PATH + "markus-cafete.json")
|
||||
fekiJson = getJsonFromFile(JSON_FILES_PATH + "feki-mensa.json")
|
||||
austrJson = getJsonFromFile(JSON_FILES_PATH + "austr-mensa.json")
|
||||
fekideJson = getJsonFromFile(JSON_FILES_PATH + "feki-happyhour-guide.json")
|
||||
print(austrJson)
|
||||
templateVars = {
|
||||
"cssfile": CSSFILE,
|
||||
"executiontime": datetime.datetime.today().strftime("%A, %d.%m.%Y"),
|
||||
"erbaCafeteTitle": erbaJson['name'],
|
||||
"erbaWeekmenu": erbaJson['weekmenu'],
|
||||
"markusCafeteTitle": markusJson['name'],
|
||||
"markusWeekmenu": markusJson['weekmenu'],
|
||||
"austrMensaTitle": austrJson['name'],
|
||||
"austrWeekmenu": austrJson['weekmenu'],
|
||||
"fekiMensaTitle": fekiJson['name'],
|
||||
"fekiWeekmenu": fekiJson['weekmenu'],
|
||||
"happyHourDay": fekideJson['day'],
|
||||
"happyhours": fekideJson['happyhours'],
|
||||
}
|
||||
templateLoader = jinja2.FileSystemLoader(searchpath="./")
|
||||
templateEnv = jinja2.Environment(loader=templateLoader)
|
||||
|
||||
TEMPLATE_FILE = "templates/food.jinja"
|
||||
template = templateEnv.get_template(TEMPLATE_FILE)
|
||||
|
||||
# Template Vars: cssfile, executiontime, erbaCafeteTitle, erbaWeekmenu, markusCafeteTitle, markusWeekmenu, austrMensaTitle, austrWeekmenu, fekiMensaTitle, fekiWeekmenu, happyHourDay, happyhours
|
||||
|
||||
html = template.render(templateVars)
|
||||
|
||||
with open(OUTPUT, "w") as file:
|
||||
file.write(html)
|
||||
|
||||
|
||||
main()
|
||||
48
ofu-food/mensa-page-parser.py
Normal file
48
ofu-food/mensa-page-parser.py
Normal file
@ -0,0 +1,48 @@
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
import json
|
||||
|
||||
|
||||
def loadPage(url: str):
|
||||
return requests.get(url).content
|
||||
|
||||
|
||||
def getMenuDay(soup):
|
||||
return soup.find("div", {"class": "day"}).h5.contents[0]
|
||||
|
||||
|
||||
def getFoodPerDay(soup):
|
||||
days = []
|
||||
for day in soup.select('.currentweek .day'):
|
||||
dayObj = {}
|
||||
daysoup = BeautifulSoup(str(day), "lxml")
|
||||
day = getMenuDay(daysoup)
|
||||
dayMenu = [e.getText() for e in daysoup.select('.menuwrap .menu .left .title')]
|
||||
|
||||
dayObj['date'] = day
|
||||
dayObj['menu'] = dayMenu
|
||||
days.append(dayObj)
|
||||
return days
|
||||
|
||||
|
||||
def parsePage(url: str):
|
||||
pagecontent = {}
|
||||
# {mensaspeiseplan:
|
||||
# {name:"",
|
||||
# weekmenu: [day:{date:, menu:[,,,]}]
|
||||
# }
|
||||
# }
|
||||
mensaSpeiseplan = {}
|
||||
page = loadPage(url)
|
||||
soup = BeautifulSoup(page, "lxml")
|
||||
foodplan_name = getFoodplanName(soup)
|
||||
days = getFoodPerDay(soup)
|
||||
mensaSpeiseplan['weekmenu'] = days
|
||||
mensaSpeiseplan['name'] = foodplan_name
|
||||
mensaSpeiseplanJson = json.dumps(mensaSpeiseplan)
|
||||
return mensaSpeiseplanJson
|
||||
|
||||
|
||||
def getFoodplanName(soup):
|
||||
foodplan_name = soup.select('.mensamenu h2')[0].getText()
|
||||
return foodplan_name
|
||||
@ -3,16 +3,18 @@
|
||||
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
import urllib
|
||||
import datetime
|
||||
from shutil import copyfile
|
||||
|
||||
OUTPUTFILE = "../ofu-food.html"
|
||||
CSSFILE_DEST = "../bootstrap.css"
|
||||
CSSFILE_WEB = "bootstrap.css"
|
||||
|
||||
# OUTPUTFILE = "/media/data_1/www/pub-html/ofu-food.html"
|
||||
# CSSFILE = "/media/data_1/www/pub-html/bootstrap.css"
|
||||
|
||||
# OUTPUTFILE = "../ofu-food.html"
|
||||
OUTPUTFILE = "/media/data_1/www/pub-html/ofu-food.html"
|
||||
CSSFILE_SRC = "../bootstrap-4.0.0-beta-dist/css/bootstrap.css"
|
||||
CSSFILE = "/media/data_1/www/pub-html/bootstrap.css"
|
||||
|
||||
LINK_FEKI_MENSA = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/speiseplaene.html?tx_thmensamenu_pi2%5Bmensen%5D=3&tx_thmensamenu_pi2%5Baction%5D=show&tx_thmensamenu_pi2%5Bcontroller%5D=Speiseplan&cHash=c3fe5ebb35e5fba3794f01878e798b7c"
|
||||
LINK_AUSTR_MENSA = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/speiseplaene.html?tx_thmensamenu_pi2%5Bmensen%5D=2&tx_thmensamenu_pi2%5Baction%5D=show&tx_thmensamenu_pi2%5Bcontroller%5D=Speiseplan&cHash=511e047953ee1370c3b82c11a04624bb"
|
||||
LINK_ERBA_CAFETE = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/sonderspeiseplaene/cafeteria-erba-insel.html"
|
||||
@ -25,7 +27,7 @@ def getHtmlHeader():
|
||||
head += '<meta charset="utf-8">'
|
||||
head += '<meta name="description" content="Sammelwebsite für das Essen der Uni Bamberg">'
|
||||
head += '<meta name="keywords" content="OFU, Otto-Friedrich, Universität, Bamberg">'
|
||||
head += '<link rel="stylesheet" href="' + CSSFILE + '">'
|
||||
head += '<link rel="stylesheet" href="' + CSSFILE_WEB + '">'
|
||||
head += '<title>Essen an der OFU</title>'
|
||||
head += '</head>'
|
||||
return head
|
||||
@ -42,12 +44,28 @@ def getFoodHtml(erbaHtml, markusHtml, austrHtml, fekiHtml, happyHourHtml):
|
||||
html += '<body>'
|
||||
html += getExecuteTime()
|
||||
html += '<div class="container">'
|
||||
html += '<div class="row">'
|
||||
html += '<div class="col">'
|
||||
html += str(erbaHtml)
|
||||
html += '</div>'
|
||||
html += '<div class="col">'
|
||||
html += str(markusHtml)
|
||||
html += '</div>'
|
||||
html += '</div>'
|
||||
html += '<div class="row">'
|
||||
html += '<div class="col">'
|
||||
html += str(austrHtml)
|
||||
html += '</div>'
|
||||
html += '<div class="col">'
|
||||
html += str(fekiHtml)
|
||||
html += '</div>'
|
||||
html += '</div>'
|
||||
html += '<div class="row">'
|
||||
html += '<div class="col">'
|
||||
html += str(happyHourHtml)
|
||||
html += '</div>'
|
||||
html += '</div>'
|
||||
html += '</div>'
|
||||
html += '</body>'
|
||||
html += '</html>'
|
||||
return html
|
||||
@ -144,4 +162,4 @@ def main():
|
||||
|
||||
|
||||
main()
|
||||
copyfile(CSSFILE_SRC, CSSFILE)
|
||||
copyfile(CSSFILE_SRC, CSSFILE_DEST)
|
||||
|
||||
81
ofu-food/templates/food.jinja
Normal file
81
ofu-food/templates/food.jinja
Normal file
@ -0,0 +1,81 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="description" content="Sammelwebsite für das Essen der Uni Bamberg">
|
||||
<meta name="keywords" content="OFU, Otto-Friedrich, Universität, Bamberg">
|
||||
<link rel="stylesheet" href=" {{ cssfile }} ">
|
||||
<title>Essen an der OFU</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Food for Students</h1>
|
||||
<p>Last execute: {{ executiontime }}</p>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h2>{{ erbaCafeteTitle }}</h2>
|
||||
{% for menu in erbaWeekmenu %}
|
||||
<p><span>{{ menu.date }}</span><span>{{ menu.menu[0] }}</span></p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="col">
|
||||
<h2>{{ markusCafeteTitle }}</h2>
|
||||
{% for menu in markusWeekmenu %}
|
||||
<p><span>{{ menu.date }}</span><span>{{ menu.menu[0] }}</span></p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h2>{{ austrMensaTitle }}</h2>
|
||||
{% for dayMenu in austrWeekmenu %}
|
||||
<h3>{{ dayMenu.date }}</h3>
|
||||
{% for singleFood in dayMenu.menu %}
|
||||
<p>{{ singleFood }}</p>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="col">
|
||||
<h2>{{ fekiMensaTitle }}</h2>
|
||||
{% for dayMenu in fekiWeekmenu %}
|
||||
<h3>{{ dayMenu.date }}</h3>
|
||||
{% for singleFood in dayMenu.menu %}
|
||||
<p>{{ singleFood }}</p>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h2>Feki.de Happy Hour Guide for Food</h2>
|
||||
<h3>{{ happyHourDay }}</h3>
|
||||
{% if happyhours %}
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Location</th>
|
||||
<th>Time</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for happyhour in happyhours %}
|
||||
<tr>
|
||||
<td>{{ happyhour.location }}</td>
|
||||
<td>{{ happyhour.time }}</td>
|
||||
<td>{{ happyhour.description }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<p>Leider gibt es heute keine Happy Hours :(</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user