Browse Source

some error preventing elements, for printing and searching

english-french
manetta 5 years ago
parent
commit
ec18109336
  1. 123
      printer.copy.py
  2. 157
      printer.py
  3. 11
      static/css/stylesheet.css
  4. 18
      templates/en/base.html
  5. 17
      templates/en/results.html
  6. 18
      templates/fr/base.html
  7. 23
      templates/fr/results.html

123
printer.copy.py

@ -0,0 +1,123 @@
#!/usr/bin/env python3
import readings
from pprint import pprint
import re, sys
from escpos import escpos
from sys import stdin, stderr, stdout
from time import sleep
import nltk
from nltk.tokenize import RegexpTokenizer
tokenizer = RegexpTokenizer(r'\w+') # initialize tokenizer
try:
printerpath = '/dev/usb/lp0'
stdout = open(printerpath, 'w')
connected = True
print('*receipt printer connected*')
except:
stdout = sys.__stdout__
connected = False
print('*no receipt printer connected*')
def insert_linebreaks(string, linelength):
words = tokenizer.tokenize(string)
count = 0
tmp = ''
new = ''
for x, word in enumerate(words):
length = len(word)
count += len(word)
if x + 1 == len(words):
tmp += word
new += tmp
elif count <= linelength:
tmp += word + ' '
else:
new += tmp + '\n'
tmp = ''
count = 0
return new
def printNow(query, results, results_count):
if connected == True:
print(escpos['reset'], file=stdout, flush=True)
print(escpos['init_printer'], file=stdout, flush=True)
# print(escpos['select_international_character_set'], file=stdout, flush=True)
print(escpos['margin_left'], file=stdout, flush=True)
print(escpos['justify_center'], file=stdout, flush=True)
printed = False
if results_count == None:
results_count = 0
results_count_max = results_count + 5
current_count = 0
for x, document in results.items():
for n, sentence in enumerate(document['matches']):
print('current_count', current_count)
if current_count == results_count:
printed = True
if results_count < results_count_max:
print('results_count', results_count)
results_count += 1
sentence = str(sentence) # Turn Flask Markup object back to normal python string
sentence = sentence.replace('\n', ' ').replace(' ', ' ')
pattern = r'[\s\W\_]'+query+r'[\s\W\_\n]|^'+query+'|'+query+'$'
match = re.search(pattern, sentence, flags=re.IGNORECASE)
# print('match:', match)
if match:
match = match.group()
sentence_splitted = re.compile(match).split(sentence) # find the query in the sentence, and split the sentence up
# print('sentence splitted:', sentence_splitted)
for i, part in enumerate(sentence_splitted):
if n == 0: # first sentence of this document
if i == 0: # start of a new sentence
print('', file=stdout, flush=True)
linebreak = ''' **
** /** **
//** /** **
**************
///**//**//**/
** /** //**
// /** //
// '''
print(linebreak, file=stdout, flush=True) # print line break ascii art
print('\n', file=stdout, flush=True)
title = insert_linebreaks(document['name'], 40)
print(title, file=stdout, flush=True) # print the document name
print('\n', file=stdout, flush=True)
# start of sentence
part = insert_linebreaks(part, 40)
print(part, file=stdout, flush=True) # print current part of sentence
if i + 1 != len(sentence_splitted): # if this part is not the last one
print(escpos['bold'], match, escpos['reset'], file=stdout, flush=True) # print query
# line breaker after each sentence
if i + 1 == len(sentence_splitted):
print('\n | \n', file=stdout, flush=True)
sleep(3)
current_count += 1
print(escpos['paperfeed_1l'], file=stdout, flush=True)
print(escpos['paperfeed_1l'], file=stdout, flush=True)
print(escpos['paperfeed_1l'], file=stdout, flush=True)
sleep(3)
print(escpos['papercut'], file=stdout, flush=True)
print(escpos['reset'], file=stdout, flush=True)
# reset when all results are printed
if printed == False:
results_count = 0
# printNow(query, results, results_count)
return results_count
query = 'noise'
results, _, _ = readings.request_results(query)
# pprint(results)
printNow(query, results, 0)

157
printer.py

@ -2,7 +2,7 @@
import readings import readings
from pprint import pprint from pprint import pprint
import re, sys import re, sys, glob
from escpos import escpos from escpos import escpos
from sys import stdin, stderr, stdout from sys import stdin, stderr, stdout
from time import sleep from time import sleep
@ -11,14 +11,19 @@ import nltk
from nltk.tokenize import RegexpTokenizer from nltk.tokenize import RegexpTokenizer
tokenizer = RegexpTokenizer(r'\w+') # initialize tokenizer tokenizer = RegexpTokenizer(r'\w+') # initialize tokenizer
connected = True connected = True
def check_printer_path():
printers = glob.glob('/dev/usb/lp*')
if printers:
return printers[0]
else:
return None
def char_swap(some_string): def char_swap(some_string):
swaps = [('','-'), ('','"'),('','"'),('ù','u'), ("","'"), ('à','a'), ('â','a'),('é','e'),('è','e'),('î','i')] swaps = [('','-'), ('','"'),('','"'),('ù','u'), ("","'"), ('à','a'), ('â','a'),('é','e'),('è','e'),('î','i')]
for swap in swaps: for swap in swaps:
some_string = some_string.replace(swap[0], swap[1]) some_string = some_string.replace(swap[0], swap[1])
#print(swap, some_string)
return some_string return some_string
def insert_linebreaks(string, linelength): def insert_linebreaks(string, linelength):
@ -40,53 +45,44 @@ def insert_linebreaks(string, linelength):
else: else:
tmp += ch tmp += ch
count += 1 count += 1
#print('string <<<', string)
#print('new >>>', new)
return new return new
def printNow(query, results, results_count): def printNow(query, results, results_count):
if connected == True: if connected == True:
printerpath = '/dev/usb/lp1' printerpath = check_printer_path()
stdout = open(printerpath, 'w') try:
#print('printingNow') print_pointer = open(printerpath, 'w') if printerpath else sys.__stdout__
print(escpos['reset'], file=stdout, flush=True) print(escpos['reset'], file=print_pointer, flush=True)
print(escpos['init_printer'], file=stdout, flush=True) print(escpos['init_printer'], file=print_pointer, flush=True)
#print(escpos['select_INT_character_set'], file=stdout, flush=True) print(escpos['margin_left'], file=print_pointer, flush=True)
#print(escpos['select_character_code_table'], file=stdout, flush=True) print(escpos['justify_center'], file=print_pointer, flush=True)
print(escpos['margin_left'], file=stdout, flush=True)
print(escpos['justify_center'], file=stdout, flush=True) printed = False
printed = False if results_count == None or results_count == 'None':
results_count = 0
if results_count == None or results_count == 'None': results_count_max = results_count + 5
results_count = 0 current_count = 0
results_count_max = results_count + 5 for x, document in results.items():
current_count = 0 for n, sentence in enumerate(document['matches']):
for x, document in results.items(): if current_count == results_count:
for n, sentence in enumerate(document['matches']): printed = True
#print('current_count', current_count) if results_count < results_count_max:
if current_count == results_count: results_count += 1
printed = True sentence = str(sentence) # Turn Flask Markup object back to normal python string
if results_count < results_count_max: sentence = char_swap(sentence)
#print('results_count', results_count) query = char_swap(query)
results_count += 1 sentence = sentence.replace('\n', ' ').replace(' ', ' ')
sentence = str(sentence) # Turn Flask Markup object back to normal python string pattern = r'[\s\W\_]'+query+r'[\s\W\_\n]|^'+query+'|'+query+'$'
print(type(sentence)) match = re.search(pattern, sentence, flags=re.IGNORECASE)
sentence = char_swap(sentence) if match:
query = char_swap(query) match = match.group()
sentence = sentence.replace('\n', ' ').replace(' ', ' ') sentence_splitted = re.compile(match).split(sentence) # find the query in the sentence, and split the sentence up
pattern = r'[\s\W\_]'+query+r'[\s\W\_\n]|^'+query+'|'+query+'$' for i, part in enumerate(sentence_splitted):
match = re.search(pattern, sentence, flags=re.IGNORECASE) if n == 0: # first sentence of this document
# print('match:', match) if i == 0: # start of a new sentence
if match: print('', file=print_pointer, flush=True)
match = match.group() linebreak = ''' **
sentence_splitted = re.compile(match).split(sentence) # find the query in the sentence, and split the sentence up
# print('sentence splitted:', sentence_splitted)
for i, part in enumerate(sentence_splitted):
if n == 0: # first sentence of this document
if i == 0: # start of a new sentence
print('', file=stdout, flush=True)
linebreak = ''' **
** /** ** ** /** **
//** /** ** //** /** **
************** **************
@ -94,38 +90,43 @@ def printNow(query, results, results_count):
** /** //** ** /** //**
// /** // // /** //
// ''' // '''
print(linebreak, file=stdout, flush=True) # print line break ascii art print(linebreak, file=print_pointer, flush=True) # print line break ascii art
print('\n', file=stdout, flush=True) print('\n', file=print_pointer, flush=True)
title = insert_linebreaks(document['name'], 13) title = insert_linebreaks(document['name'], 13)
print(escpos['largefont'], title, escpos['normalfont'], file=stdout, flush=True) # print the document name print(escpos['largefont'], title, escpos['normalfont'], file=print_pointer, flush=True) # print the document name
print('\n', file=stdout, flush=True) print('\n', file=print_pointer, flush=True)
# start of sentence # start of sentence
part = insert_linebreaks(part, 35) part = insert_linebreaks(part, 35)
print(part, file=stdout, flush=True) # print current part of sentence print(part, file=print_pointer, flush=True) # print current part of sentence
if i + 1 != len(sentence_splitted): # if this part is not the last one if i + 1 != len(sentence_splitted): # if this part is not the last one
print(escpos['bold'], match, escpos['reset'], file=stdout, flush=True) # print query print(escpos['bold'], match, escpos['reset'], file=print_pointer, flush=True) # print query
# line breaker after each sentence # line breaker after each sentence
if i + 1 == len(sentence_splitted): if i + 1 == len(sentence_splitted):
print('\n | \n', file=stdout, flush=True) print('\n | \n', file=print_pointer, flush=True)
sleep(3) sleep(3)
current_count += 1 current_count += 1
print(escpos['paperfeed_1l'], file=stdout, flush=True) print(escpos['paperfeed_1l'], file=print_pointer, flush=True)
print(escpos['paperfeed_1l'], file=stdout, flush=True) print(escpos['paperfeed_1l'], file=print_pointer, flush=True)
print(escpos['paperfeed_1l'], file=stdout, flush=True) print(escpos['paperfeed_1l'], file=print_pointer, flush=True)
sleep(3) sleep(3)
print(escpos['papercut'], file=stdout, flush=True) print(escpos['papercut'], file=print_pointer, flush=True)
print(escpos['reset'], file=stdout, flush=True) print(escpos['reset'], file=print_pointer, flush=True)
# reset when all results are printed # reset when all results are printed
if printed == False: if printed == False:
results_count = 0 results_count = 0
# printNow(query, results, results_count) # printNow(query, results, results_count)
return results_count return results_count
except:
e = sys.exc_info()[0]
print("Could not print: {}".format(e))
return 0
# query = 'noise' # query = 'noise'
# results, _, _ = readings.request_results(query) # results, _, _ = readings.request_results(query)

11
static/css/stylesheet.css

@ -77,6 +77,17 @@ i{
.blink{ .blink{
animation: 2s linear 1s infinite blink; animation: 2s linear 1s infinite blink;
} }
.blink a.printing{
animation: 0.5s linear 0.5s infinite blink;
}
.blink a.printing:before,
.blink a.printing::before {
content: "printing ...";
position: fixed;
top: 187px;
right: 299px;
font-size: 85%;
}
#wrapper{ #wrapper{
position: absolute; position: absolute;

18
templates/en/base.html

@ -35,7 +35,23 @@
<form action="" method="GET"> <form action="" method="GET">
<input id="query" name="q" value="{{query}}"/> <input id="query" name="q" value="{{query}}"/>
<input id="submit" type="submit" value="search"/> <input id="submit" type="submit" value="search"/>
</form> </form>
<script>
(function () {
var searching = false,
button = document.querySelector('#search #submit');
button.addEventListener('click', function (e) {
if (!searching) {
searching = true;
}
else {
e.preventDefault();
alert('Already searching ...');
}
})
})();
</script>
</div> </div>
{% endblock %} {% endblock %}
{% block nav %} {% block nav %}

17
templates/en/results.html

@ -5,6 +5,23 @@
<div id="print" class="blink {{ connection }}"> <div id="print" class="blink {{ connection }}">
<a href="?q={{ query }}&print=now&results_count={{ results_count }}"><img src="/static/images/epson.png"></a> <a href="?q={{ query }}&print=now&results_count={{ results_count }}"><img src="/static/images/epson.png"></a>
</div> </div>
<script>
(function () {
var printing = false,
button = document.querySelector('#print a');
button.addEventListener('click', function (e) {
if (!printing) {
printing = true;
button.classList.add('printing');
}
else {
e.preventDefault();
alert('Already printing ...');
}
})
})();
</script>
{% endblock %} {% endblock %}
{% block results %} {% block results %}

18
templates/fr/base.html

@ -35,7 +35,23 @@
<form action="" method="GET"> <form action="" method="GET">
<input id="query" name="q" value="{{query}}"/> <input id="query" name="q" value="{{query}}"/>
<input id="submit" type="submit" value="search"/> <input id="submit" type="submit" value="search"/>
</form> </form>
<script>
(function () {
var searching = false,
button = document.querySelector('#search #submit');
button.addEventListener('click', function (e) {
if (!searching) {
searching = true;
}
else {
e.preventDefault();
alert('Already searching ...');
}
})
})();
</script>
</div> </div>
{% endblock %} {% endblock %}
{% block nav %} {% block nav %}

23
templates/fr/results.html

@ -2,9 +2,26 @@
{% block title %}{{ query }} - cyber/technofeminist cross-readings{% endblock %} {% block title %}{{ query }} - cyber/technofeminist cross-readings{% endblock %}
{% block nav %} {% block nav %}
<div id="print" class="blink {{ connection }}"> <div id="print" class="blink {{ connection }}">
<a href="?q={{ query }}&print=now&results_count={{ results_count }}"><img src="/static/images/epson.png"></a> <a href="?q={{ query }}&print=now&results_count={{ results_count }}"><img src="/static/images/epson.png"></a>
</div> </div>
<script>
(function () {
var printing = false,
button = document.querySelector('#print a');
button.addEventListener('click', function (e) {
if (!printing) {
printing = true;
button.classList.add('printing');
}
else {
e.preventDefault();
alert('Already printing ...');
}
})
})();
</script>
{% endblock %} {% endblock %}
{% block results %} {% block results %}

Loading…
Cancel
Save