Skip to content

Commit 1b3f90d

Browse files
authored
Merge pull request #24 from hmlendea/language
Determine content language
2 parents 8f750a4 + 56a8c33 commit 1b3f90d

File tree

4 files changed

+206
-5
lines changed

4 files changed

+206
-5
lines changed

dynamic_tags.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import re
22

3-
def get(text):
3+
def get(text, language):
44
tags = ''
55

66
# Build your own custom dynamic tags. For example:

mastodon-rss-bot.py

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,33 @@
3838
rss_feed_domain = re.sub('^[a-z]*://', '', rss_feed_url)
3939
rss_feed_domain = re.sub('/.*$', '', rss_feed_domain)
4040

41+
def determine_content_language(text):
42+
language = 'en'
43+
44+
if ('ă' in text or 'â' in text or 'î' in text or 'ș' in text or 'ț' in text):
45+
language = 'ro'
46+
else:
47+
language = 'en'
48+
49+
if language != 'en':
50+
if (' and ' in text or
51+
' its ' in text or
52+
' of ' in text or
53+
' the ' in text or
54+
' was ' in text):
55+
language = 'en'
56+
57+
if language != 'ro':
58+
if (' de la ' in text or
59+
' miliarde ' in text):
60+
language = 'ro'
61+
62+
if (does_substring_exist('Ambasadorul', text, tags) or
63+
does_substring_exist('interzis', text, tags)):
64+
language = 'ro'
65+
66+
return language
67+
4168
if not os.path.isfile("app_" + mastodon_instance + '.secret'):
4269
if Mastodon.create_app(
4370
rss_feed_domain,
@@ -137,7 +164,8 @@
137164
feed_entry_title = re.sub('[\"\'] property.*$', '', feed_entry_title)
138165
feed_entry_title = re.sub(' [\|-] .*$', '', feed_entry_title)
139166

140-
toot_body = text_replacements.apply(feed_entry_title)
167+
toot_language = determine_content_language(feed_entry_title)
168+
toot_body = text_replacements.apply(feed_entry_title, toot_language)
141169

142170
media_urls = []
143171
media_urls_posted = []
@@ -223,7 +251,7 @@
223251
toot_body += '\nby ' + feed_entry.authors[0].name
224252

225253
all_tags_to_add = ''
226-
dynamic_tags_to_add = dynamic_tags.get(toot_body)
254+
dynamic_tags_to_add = dynamic_tags.get(toot_body, toot_language)
227255

228256
if tags_to_add: all_tags_to_add += ' ' + tags_to_add
229257
if dynamic_tags_to_add: all_tags_to_add += ' ' + dynamic_tags_to_add
@@ -249,7 +277,8 @@
249277
media_ids = toot_media,
250278
sensitive = False,
251279
visibility = 'public',
252-
spoiler_text = None)
280+
spoiler_text = None,
281+
language = toot_language)
253282

254283
if "id" in toot:
255284
db.execute("INSERT INTO entries VALUES ( ? , ? , ? , ? , ? )",

tests.py

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
import text_replacements
2+
import dynamic_tags
3+
4+
def test_replacement(text, expected_result):
5+
actual_result = text_replacements.apply(text)
6+
actual_lines = actual_result.replace('\1', '‎').splitlines()
7+
expected_lines = expected_result.replace('\1', '‎').splitlines()
8+
9+
lines_count = len(text.splitlines())
10+
11+
for i in range(lines_count):
12+
if i < len(actual_lines):
13+
actual_line = actual_lines[i].lstrip()
14+
else:
15+
actual_line = ''
16+
17+
if i < len(expected_lines):
18+
expected_line = expected_lines[i].lstrip()
19+
else:
20+
expected_line = ''
21+
22+
length_delta = len(expected_line) - len(actual_line)
23+
24+
if actual_line != expected_line:
25+
print('Test failed!')
26+
print(' > Actual : ' + actual_line)
27+
print(' > Expected: ' + expected_line)
28+
if length_delta > 0: print('LENGTH DELTA: ' + str(length_delta))
29+
30+
for i in range(min(len(actual_line), len(expected_line))):
31+
if actual_line[i] != expected_line[i]:
32+
print('FIRST DIFFERENCE: ' + actual_line[i] + ' (char at index ' + str(i) + ')')
33+
break
34+
35+
dynamic_tags.get('asasasa')
36+
test_replacement("""100 de metri liber Campionatul Mondial de natație din Japonia
37+
a CN Zaporijie
38+
abc def / Analiză Kathimerini
39+
Ambasada americană din Irak.
40+
ambasadorul american la Bruxelles
41+
Anglia. Poliția a arestat
42+
Apple a lansat Apple Music Classical în Apple Music
43+
Belarusului
44+
București
45+
Bulevardul Iuliu Maniu
46+
bursa americană
47+
cancelarul german la Cotroceni
48+
Carpații Meridionali și de Curbură
49+
Clujean dezgustat de condițiile de la Kaufland Mănăștur!
50+
CN Zaporijia
51+
Comandantul-șef al Armatei Ucrainene declară că războiul cu Rusia se îndreaptă către etapa pozițională, a luptelor de uzură, care ar putea aduce beneficii rușilor. Cere aliaților noi capacități și tehnologii-cheie, cu accent pe puterea aeriană de foc.
52+
Comisia Juridică a Camerei Deputaților
53+
Congresul american
54+
conturilor Ministerului Finanțelor
55+
de la Consiliul Europei
56+
Europa caută să lupte împotriva valului de vehicule electrice chinezești, dar europenii le iubesc.
57+
formațiune islamică
58+
Guvernul german confirmă
59+
Indo-Pacifică
60+
în jurul parcării Operei ABCD
61+
învățăturile Coranului sunt înțelepte
62+
Maroc. Poliția declară
63+
Marea Britanie. Poliția intensifică
64+
Ministerul Rus al Apărării
65+
ministrul israelian al apărării
66+
occident\1ali afurisiți
67+
Oceanul Atlantic, nu Oceanul Indian
68+
Oceanul Atlantic de Nord
69+
Pământul străbate un nor de praf lăsat de comenta Halley
70+
Parchetul European
71+
Pentru a ajunge pe Pământ.
72+
Piețele europene avansează
73+
Platforma X e nașpa
74+
Președinta Comisiei Europene condamnă
75+
Președinta Parlamentului European: deputații din Ucraina și Republica Moldova ar putea să primească statutul de observatori
76+
Președintele bielorus i-a cerut ministrului rus al Apărării
77+
Președintele Ecuadorului a cerut
78+
Președintele Serbiei a dizolvat
79+
președintele Taiwanului și cel al Camerei Reprezentanților
80+
prezentate de armata israeliană
81+
Primăria Craiova caută artiști
82+
Reportaj The Guardian: Ambiția României pentru o nouă și vastă rezervație naturală, ca un ”Yellowstone al Europei”
83+
Șeful Armatei Române
84+
serviciile de informații rusești
85+
serviciile speciale italiene
86+
serviciul ucrainean de securitate
87+
Serviciul Român de Informații
88+
sistemele HIMARS, rachete
89+
Statele Unite. Guvernul lansează
90+
Steagul Franței
91+
Studiu. “Semnele vitale” ale Pământului sunt tot mai slabe
92+
SUA. Congresul
93+
Târgu Mureș
94+
Tokmak-Melitopol
95+
Trafic blocat pe DN2, în aproprierea localității Traian
96+
Urs semnalat în Râmnicu Vâlcea
97+
WP: Unul dintre""",
98+
"""100 de metri liber 🏆#CampionatulMondialDeNatație din 🇯🇵#Japonia
99+
a centralei nucleare ☢️#Zaporijie
100+
Analiză 📰#Kathimerini: abc def
101+
📜#AmbasadaAmericii din 🇮🇶#Irak.
102+
📜#AmbasadorulAmericii la #Bruxelles
103+
🏴󠁧󠁢󠁥󠁮󠁧󠁿#Anglia. 👮#PolițiaEngleză a arestat
104+
🍏#Apple a lansat 🎵#AppleMusicClassical în 🎵#AppleMusic
105+
🇧🇾#Belarus\1ului
106+
#București
107+
#BulevardulIuliuManiu
108+
📈#BursaAmericană
109+
#CancelarulGermaniei la 🏰#Cotroceni
110+
🏔️#CarpațiiMeridionali & 🏔️#CarpațiiDeCurbură
111+
#Cluj\1ean dezgustat de condițiile de la 🛒#Kaufland #Mănăștur!
112+
centrala nucleară ☢️#Zaporijia
113+
Comandantul-șef al Armatei Ucrainene declară că războiul cu 🇷🇺#Rusia se îndreaptă către etapa pozițională, a luptelor de uzură, care ar putea aduce beneficii rușilor. Cere aliaților noi capacități & tehnologii-cheie, cu accent pe puterea aeriană de foc.
114+
#ComisiaJuridicăACamereiDeputaților
115+
#CongresulAmerican
116+
conturilor de la 📈#MinisterulFinanțelor
117+
de la #ConsiliulEuropean
118+
🌍#Europa caută să lupte împotriva valului de vehicule electrice chinezești, dar 🌍#europe\1nii le iubesc.
119+
formațiune ☪️#islam\1ică
120+
🇩🇪#GuvernulGermaniei confirmă
121+
🌏#IndoPacific\1ă
122+
în jurul parcării de la Opera ABCD
123+
învățăturile ☪️#Coran\1ului sunt înțelepte
124+
🇲🇦#Maroc. 👮#PolițiaMarocană declară
125+
🇬🇧#RegatulUnit. 👮#PolițiaBritanică intensifică
126+
🛡️#MinisterulApărării din 🇷🇺#Rusia
127+
🛡️#MinistrulApărării din 🇮🇱#Israel
128+
🌍#occident\1ali afurisiți
129+
🌊#OceanulAtlantic, nu 🌊#OceanulIndian
130+
🌊#OceanulAtlanticDeNord
131+
🌍#Terra străbate un nor de praf lăsat de comenta ☄️#Halley
132+
⚖️#ParchetulEuropean
133+
Pentru a ajunge pe 🌍#Terra.
134+
📈#PiețeleEuropene avansează
135+
🐦#Twitter e nașpa
136+
Președinta pentru #ComisiaEuropeană (@EU_Commission@social.network.europa.eu) condamnă
137+
Președinta pentru #ParlamentulEuropean: deputații din 🇺🇦#Ucraina & Republica 🇲🇩#Moldova ar putea să primească statutul de observatori
138+
#PreședinteleBelarusului a cerut de la 🛡️#MinistrulApărării din 🇷🇺#Rusia
139+
#PreședinteleEcuadorului a cerut
140+
#PreședinteleSerbiei a dizolvat
141+
#PreședinteleTaiwanului & cel pentru #CameraReprezentanților
142+
prezentate de 🪖#armataIsraeliană
143+
🏛️#PrimăriaCraiova caută artiști
144+
Reportaj 📰#TheGuardian: Ambiția României pentru o nouă & vastă rezervație naturală, ca un ”🌋#Yellowstone al 🌍#Europe\1i”
145+
Șeful pentru 🪖#ArmataRomână
146+
🕵🏻‍♂️#ServiciileRuseDeInformații
147+
🕵🏻‍♂️#ServiciileSpecialeItaliene
148+
🕵🏻‍♂️#ServiciulUcraineanDeSecuritate
149+
🕵🏻‍♂️#ServiciulRomânDeInformații
150+
sistemele 🚀#HIMARS, rachete
151+
🇺🇸#GuvernulStatelorUnite lansează
152+
🇫🇷#SteagulFranței
153+
Studiu. “Semnele vitale” ale Terrei sunt tot mai slabe
154+
🇺🇸#SUA. #CongresulAmerican
155+
#TârguMureș
156+
#Tokmak-#Melitopol
157+
Trafic blocat pe 🛣️#DN2, în aproprierea localității Traian
158+
Urs semnalat în #RâmnicuVâlcea
159+
📰#WashingtonPost: Unul dintre.""")
160+
161+
test_replacement("""Everything Everywhere all at Once
162+
Game of Thrones
163+
Harry Potter
164+
Israel is one quarter the size of the state of Maine.
165+
The city of Arad, located in western Romania, is home to the Arad Fortress, which was built in the late 18th century and is now a museum.
166+
The religion of the majority of the population is Eastern Orthodox.""",
167+
"""🎞️#EverythingEverywhereAllAtOnce
168+
🎞️#GameOfThrones
169+
🎞️#HarryPotter
170+
🇮🇱#Israel is one quarter the size of the state of #Maine.
171+
The city of #Arad, located in western 🇷🇴#Romania, is home to the #AradFortress, which was built in the late #18Century and is now a museum.
172+
The religion of the majority of the population is ☦️#Orthodox.""")

text_replacements.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import re
22

3-
def apply(text):
3+
def apply(text, language):
44
# Apply your custom text replacements. For example:
55
# text = text.replace('Oradea', 'Oradea')
66
# text = re.sub('Rom[aâ]nia', '🇷🇴#Romania', text)

0 commit comments

Comments
 (0)