• R/O
  • SSH

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

コミットメタ情報

リビジョン0917135ab97d1ad31edac3a5e4097c2ef0de696d (tree)
日時2019-02-07 02:39:59
作者Dan Villiom Podlaski Christiansen <dan@mage...>
コミッターDan Villiom Podlaski Christiansen

ログメッセージ

initial commit

変更サマリ

差分

diff -r 000000000000 -r 0917135ab97d .hgignore
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgignore Wed Feb 06 18:39:59 2019 +0100
@@ -0,0 +1,4 @@
1+syntax: glob
2+
3+.venv
4+.\#*
diff -r 000000000000 -r 0917135ab97d Pipfile
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Pipfile Wed Feb 06 18:39:59 2019 +0100
@@ -0,0 +1,21 @@
1+# -*- toml -*-
2+
3+[[source]]
4+name = "pypi"
5+url = "https://pypi.org/simple"
6+verify_ssl = true
7+
8+[scripts]
9+me = "python ./menu.py"
10+pydoc = "python -m pydoc"
11+
12+[dev-packages]
13+
14+[packages]
15+pytesseract = "*"
16+pdf2image = "*"
17+click = "*"
18+pyquery = "*"
19+
20+[requires]
21+python_version = "3.7"
diff -r 000000000000 -r 0917135ab97d Pipfile.lock
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Pipfile.lock Wed Feb 06 18:39:59 2019 +0100
@@ -0,0 +1,124 @@
1+{
2+ "_meta": {
3+ "hash": {
4+ "sha256": "3810c30b16d3c2b53b160f7c74cd1f426e5fd6f4a29d4616ab78b7a3d098143c"
5+ },
6+ "pipfile-spec": 6,
7+ "requires": {
8+ "python_version": "3.7"
9+ },
10+ "sources": [
11+ {
12+ "name": "pypi",
13+ "url": "https://pypi.org/simple",
14+ "verify_ssl": true
15+ }
16+ ]
17+ },
18+ "default": {
19+ "click": {
20+ "hashes": [
21+ "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13",
22+ "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"
23+ ],
24+ "index": "pypi",
25+ "version": "==7.0"
26+ },
27+ "cssselect": {
28+ "hashes": [
29+ "sha256:066d8bc5229af09617e24b3ca4d52f1f9092d9e061931f4184cd572885c23204",
30+ "sha256:3b5103e8789da9e936a68d993b70df732d06b8bb9a337a05ed4eb52c17ef7206"
31+ ],
32+ "version": "==1.0.3"
33+ },
34+ "lxml": {
35+ "hashes": [
36+ "sha256:0dd6589fa75d369ba06d2b5f38dae107f76ea127f212f6a7bee134f6df2d1d21",
37+ "sha256:1afbac344aa68c29e81ab56c1a9411c3663157b5aee5065b7fa030b398d4f7e0",
38+ "sha256:1baad9d073692421ad5dbbd81430aba6c7f5fdc347f03537ae046ddf2c9b2297",
39+ "sha256:1d8736421a2358becd3edf20260e41a06a0bf08a560480d3a5734a6bcbacf591",
40+ "sha256:1e1d9bddc5afaddf0de76246d3f2152f961697ad7439c559f179002682c45801",
41+ "sha256:1f179dc8b2643715f020f4d119d5529b02cd794c1c8f305868b73b8674d2a03f",
42+ "sha256:241fb7bdf97cb1df1edfa8f0bcdfd80525d4023dac4523a241907c8b2f44e541",
43+ "sha256:2f9765ee5acd3dbdcdc0d0c79309e01f7c16bc8d39b49250bf88de7b46daaf58",
44+ "sha256:312e1e1b1c3ce0c67e0b8105317323e12807955e8186872affb667dbd67971f6",
45+ "sha256:3273db1a8055ca70257fd3691c6d2c216544e1a70b673543e15cc077d8e9c730",
46+ "sha256:34dfaa8c02891f9a246b17a732ca3e99c5e42802416628e740a5d1cb2f50ff49",
47+ "sha256:3aa3f5288af349a0f3a96448ebf2e57e17332d99f4f30b02093b7948bd9f94cc",
48+ "sha256:51102e160b9d83c1cc435162d90b8e3c8c93b28d18d87b60c56522d332d26879",
49+ "sha256:56115fc2e2a4140e8994eb9585119a1ae9223b506826089a3ba753a62bd194a6",
50+ "sha256:69d83de14dbe8fe51dccfd36f88bf0b40f5debeac763edf9f8325180190eba6e",
51+ "sha256:99fdce94aeaa3ccbdfcb1e23b34273605c5853aa92ec23d84c84765178662c6c",
52+ "sha256:a7c0cd5b8a20f3093ee4a67374ccb3b8a126743b15a4d759e2a1bf098faac2b2",
53+ "sha256:abe12886554634ed95416a46701a917784cb2b4c77bfacac6916681d49bbf83d",
54+ "sha256:b4f67b5183bd5f9bafaeb76ad119e977ba570d2b0e61202f534ac9b5c33b4485",
55+ "sha256:bdd7c1658475cc1b867b36d5c4ed4bc316be8d3368abe03d348ba906a1f83b0e",
56+ "sha256:c6f24149a19f611a415a51b9bc5f17b6c2f698e0d6b41ffb3fa9f24d35d05d73",
57+ "sha256:d1e111b3ab98613115a208c1017f266478b0ab224a67bc8eac670fa0bad7d488",
58+ "sha256:d6520aa965773bbab6cb7a791d5895b00d02cf9adc93ac2bf4edb9ac1a6addc5",
59+ "sha256:dd185cde2ccad7b649593b0cda72021bc8a91667417001dbaf24cd746ecb7c11",
60+ "sha256:de2e5b0828a9d285f909b5d2e9d43f1cf6cf21fe65bc7660bdaa1780c7b58298",
61+ "sha256:f726444b8e909c4f41b4fde416e1071cf28fa84634bfb4befdf400933b6463af"
62+ ],
63+ "version": "==4.3.0"
64+ },
65+ "pdf2image": {
66+ "hashes": [
67+ "sha256:c417149cb5ca52021203943e0eeb95db53580afebe728086e69671add4daeb08"
68+ ],
69+ "index": "pypi",
70+ "version": "==1.4.1"
71+ },
72+ "pillow": {
73+ "hashes": [
74+ "sha256:051de330a06c99d6f84bcf582960487835bcae3fc99365185dc2d4f65a390c0e",
75+ "sha256:0ae5289948c5e0a16574750021bd8be921c27d4e3527800dc9c2c1d2abc81bf7",
76+ "sha256:0b1efce03619cdbf8bcc61cfae81fcda59249a469f31c6735ea59badd4a6f58a",
77+ "sha256:163136e09bd1d6c6c6026b0a662976e86c58b932b964f255ff384ecc8c3cefa3",
78+ "sha256:18e912a6ccddf28defa196bd2021fe33600cbe5da1aa2f2e2c6df15f720b73d1",
79+ "sha256:24ec3dea52339a610d34401d2d53d0fb3c7fd08e34b20c95d2ad3973193591f1",
80+ "sha256:267f8e4c0a1d7e36e97c6a604f5b03ef58e2b81c1becb4fccecddcb37e063cc7",
81+ "sha256:3273a28734175feebbe4d0a4cde04d4ed20f620b9b506d26f44379d3c72304e1",
82+ "sha256:4c678e23006798fc8b6f4cef2eaad267d53ff4c1779bd1af8725cc11b72a63f3",
83+ "sha256:4d4bc2e6bb6861103ea4655d6b6f67af8e5336e7216e20fff3e18ffa95d7a055",
84+ "sha256:505738076350a337c1740a31646e1de09a164c62c07db3b996abdc0f9d2e50cf",
85+ "sha256:5233664eadfa342c639b9b9977190d64ad7aca4edc51a966394d7e08e7f38a9f",
86+ "sha256:5d95cb9f6cced2628f3e4de7e795e98b2659dfcc7176ab4a01a8b48c2c2f488f",
87+ "sha256:7eda4c737637af74bac4b23aa82ea6fbb19002552be85f0b89bc27e3a762d239",
88+ "sha256:801ddaa69659b36abf4694fed5aa9f61d1ecf2daaa6c92541bbbbb775d97b9fe",
89+ "sha256:825aa6d222ce2c2b90d34a0ea31914e141a85edefc07e17342f1d2fdf121c07c",
90+ "sha256:9c215442ff8249d41ff58700e91ef61d74f47dfd431a50253e1a1ca9436b0697",
91+ "sha256:a3d90022f2202bbb14da991f26ca7a30b7e4c62bf0f8bf9825603b22d7e87494",
92+ "sha256:a631fd36a9823638fe700d9225f9698fb59d049c942d322d4c09544dc2115356",
93+ "sha256:a6523a23a205be0fe664b6b8747a5c86d55da960d9586db039eec9f5c269c0e6",
94+ "sha256:a756ecf9f4b9b3ed49a680a649af45a8767ad038de39e6c030919c2f443eb000",
95+ "sha256:b117287a5bdc81f1bac891187275ec7e829e961b8032c9e5ff38b70fd036c78f",
96+ "sha256:ba04f57d1715ca5ff74bb7f8a818bf929a204b3b3c2c2826d1e1cc3b1c13398c",
97+ "sha256:cd878195166723f30865e05d87cbaf9421614501a4bd48792c5ed28f90fd36ca",
98+ "sha256:cee815cc62d136e96cf76771b9d3eb58e0777ec18ea50de5cfcede8a7c429aa8",
99+ "sha256:d1722b7aa4b40cf93ac3c80d3edd48bf93b9208241d166a14ad8e7a20ee1d4f3",
100+ "sha256:d7c1c06246b05529f9984435fc4fa5a545ea26606e7f450bdbe00c153f5aeaad",
101+ "sha256:e9c8066249c040efdda84793a2a669076f92a301ceabe69202446abb4c5c5ef9",
102+ "sha256:f227d7e574d050ff3996049e086e1f18c7bd2d067ef24131e50a1d3fe5831fbc",
103+ "sha256:fc9a12aad714af36cf3ad0275a96a733526571e52710319855628f476dcb144e"
104+ ],
105+ "version": "==5.4.1"
106+ },
107+ "pyquery": {
108+ "hashes": [
109+ "sha256:07987c2ed2aed5cba29ff18af95e56e9eb04a2249f42ce47bddfb37f487229a3",
110+ "sha256:4771db76bd14352eba006463656aef990a0147a0eeaf094725097acfa90442bf"
111+ ],
112+ "index": "pypi",
113+ "version": "==1.4.0"
114+ },
115+ "pytesseract": {
116+ "hashes": [
117+ "sha256:11c20321595b6e2e904b594633edf1a717212b13bac7512986a2d807b8849770"
118+ ],
119+ "index": "pypi",
120+ "version": "==0.2.6"
121+ }
122+ },
123+ "develop": {}
124+}
diff -r 000000000000 -r 0917135ab97d menu.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/menu.py Wed Feb 06 18:39:59 2019 +0100
@@ -0,0 +1,56 @@
1+#!/usr/bin/env python3.7
2+
3+import locale
4+import re
5+import time
6+import urllib
7+
8+import click
9+import pdf2image
10+import pyquery
11+import pytesseract
12+
13+DEFAULT_URL = 'http://www.firma-catering.dk/frokostordning/ugens-menu'
14+
15+
16+@click.command()
17+@click.argument('url', default=DEFAULT_URL)
18+def main(url):
19+ locale.setlocale(locale.LC_ALL, 'da_DK.UTF-8')
20+
21+ weeknum = str(int(time.strftime('%V')))
22+ weekday = time.strftime('%A')
23+ date = time.strftime('%e %b').strip().lower()
24+
25+ doc = pyquery.PyQuery(url=url)
26+
27+ for el in doc.find('a[title]'):
28+ expected = f'Uge {weeknum}'
29+ title = el.get('title')
30+
31+ if title == expected:
32+ url = el.get('href')
33+ break
34+ else:
35+ raise click.ClickException('Not found!')
36+
37+ with urllib.request.urlopen(url) as fp:
38+ image, = pdf2image.convert_from_bytes(fp.read())
39+
40+ text = pytesseract.image_to_string(image,
41+ lang='dan',
42+ config='--psm 6')
43+
44+ click.echo(f'Dagens [menu]({url}) i Århus:\n')
45+
46+ for line in text.splitlines():
47+ if line.startswith(weekday):
48+ line = line[len(weekday):].strip()
49+
50+ if line.startswith(date):
51+ line = line[len(date):].strip()
52+
53+ click.echo(line)
54+
55+if __name__ == '__main__':
56+ main()
diff -r 000000000000 -r 0917135ab97d menu.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/menu.sh Wed Feb 06 18:39:59 2019 +0100
@@ -0,0 +1,10 @@
1+#!/bin/sh -e
2+
3+cd $(dirname $0)
4+
5+if ! test -d .venv
6+then
7+ PIPENV_VENV_IN_PROJECT=1 pipenv sync
8+fi
9+
10+exec pipenv run me "$@"