mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig.space.git
synced 2025-12-13 16:26:50 +00:00
Update meetups and telegram
This commit is contained in:
@@ -49,7 +49,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Einundzwanzig Berlin",
|
"name": "Einundzwanzig Berlin",
|
||||||
"url": "https://t.me/joinchat/vUYgAbXeCnIzMWRi",
|
"url": "https://t.me/Einundzwanzig_Berlin",
|
||||||
"top": 26,
|
"top": 26,
|
||||||
"left": 65,
|
"left": 65,
|
||||||
"country": "DE",
|
"country": "DE",
|
||||||
@@ -129,7 +129,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Einundzwanzig Düsseldorf",
|
"name": "Einundzwanzig Düsseldorf",
|
||||||
"url": "https://t.me/joinchat/pwUMGpOQzDZiZDRi",
|
"url": "https://t.me/einundzwanzig_duesseldorf",
|
||||||
"top": 38,
|
"top": 38,
|
||||||
"left": 16,
|
"left": 16,
|
||||||
"country": "DE",
|
"country": "DE",
|
||||||
@@ -201,7 +201,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Einundzwanzig Frankfurt am Main",
|
"name": "Einundzwanzig Frankfurt am Main",
|
||||||
"url": "https://t.me/joinchat/Ox2zR68PzuQ2OTYy",
|
"url": "/https://t.me/einundzwanzigffm",
|
||||||
"top": 51,
|
"top": 51,
|
||||||
"left": 26,
|
"left": 26,
|
||||||
"country": "DE",
|
"country": "DE",
|
||||||
|
|||||||
@@ -73,10 +73,6 @@
|
|||||||
transform: scale(.75);
|
transform: scale(.75);
|
||||||
animation-name: pulse;
|
animation-name: pulse;
|
||||||
}
|
}
|
||||||
|
|
||||||
& .members {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ block main
|
|||||||
Hier gibt es ein [Video-Tutorial](https://www.youtube.com/watch?v=BNJc9LExEzU), wie ein neuer Pull Request erstellt werden kann.
|
Hier gibt es ein [Video-Tutorial](https://www.youtube.com/watch?v=BNJc9LExEzU), wie ein neuer Pull Request erstellt werden kann.
|
||||||
Die Werte für `top/left` geben prozentual die Position des Ortes auf der Karte an.
|
Die Werte für `top/left` geben prozentual die Position des Ortes auf der Karte an.
|
||||||
|
|
||||||
|
Wir können auch die Anzahl der Gruppenmitglieder hier anzeigen lassen.
|
||||||
|
Voraussetzung dafür ist, dass die Gruppe öffentlich ist und einen Linknamen hat (a la `t.me/Einundzwanzig_ORT`, kann nur vom Ersteller der Gruppe angepasst werden).
|
||||||
|
Tipp: Mit Bots wie [Shieldy](https://t.me/shieldy_bot) kann man die Spammer draußen halten.
|
||||||
|
|
||||||
Die Vorlage für das Telegram-Gruppenbild findest du im [Media Kit](/media).
|
Die Vorlage für das Telegram-Gruppenbild findest du im [Media Kit](/media).
|
||||||
|
|
||||||
#map
|
#map
|
||||||
@@ -28,24 +32,24 @@ block main
|
|||||||
ul.meetups
|
ul.meetups
|
||||||
each m in filterOfficial(meetups, true)
|
each m in filterOfficial(meetups, true)
|
||||||
li.official(class=clss(m) style=style(m))
|
li.official(class=clss(m) style=style(m))
|
||||||
a(href=m.url target="_blank" rel="nofollow noopener" title=m.members ? `${m.members} Mitglieder` : null)
|
a(href=m.url target="_blank" rel="nofollow noopener")
|
||||||
.dot(style=`animation-delay:${((j*2000) + random(3000))}ms;animation-duration:${meetups.length*2}s;`)
|
.dot(style=`animation-delay:${((j*2000) + random(3000))}ms;animation-duration:${meetups.length*2}s;`)
|
||||||
= m.name.replace('Einundzwanzig ', '')
|
= m.name.replace('Einundzwanzig ', '')
|
||||||
if m.members
|
if m.members
|
||||||
= ' '
|
= ' '
|
||||||
span.members= `(${m.members} Mitglieder)`
|
small.members= `(${m.members})`
|
||||||
- j++
|
- j++
|
||||||
|
|
||||||
h2 Weitere Meetups
|
h2 Weitere Meetups
|
||||||
ul.meetups
|
ul.meetups
|
||||||
each m in filterOfficial(meetups, false)
|
each m in filterOfficial(meetups, false)
|
||||||
li(class=clss(m) style=style(m))
|
li(class=clss(m) style=style(m))
|
||||||
a(href=m.url target="_blank" rel="nofollow noopener" title=m.members ? `${m.members} Mitglieder` : null)
|
a(href=m.url target="_blank" rel="nofollow noopener")
|
||||||
.dot(style=`animation-delay:${((j*2000) + random(3000))}ms;animation-duration:${meetups.length*2}s;`)
|
.dot(style=`animation-delay:${((j*2000) + random(3000))}ms;animation-duration:${meetups.length*2}s;`)
|
||||||
= m.name.replace('Bitcoin ', '')
|
= m.name.replace('Bitcoin ', '')
|
||||||
if m.members
|
if m.members
|
||||||
= ' '
|
= ' '
|
||||||
span.members= `(${m.members} Mitglieder)`
|
small.members= `(${m.members})`
|
||||||
- j++
|
- j++
|
||||||
|
|
||||||
img#dach(src=assetPath('/img/dach.svg') alt="DE, AT, CH")
|
img#dach(src=assetPath('/img/dach.svg') alt="DE, AT, CH")
|
||||||
@@ -55,11 +59,11 @@ block main
|
|||||||
ul.meetups
|
ul.meetups
|
||||||
each m in filterUnmapped(meetups)
|
each m in filterUnmapped(meetups)
|
||||||
li(class=clss(m) style=style(m))
|
li(class=clss(m) style=style(m))
|
||||||
a(href=m.url target="_blank" rel="nofollow noopener" title=m.members ? `${m.members} Mitglieder` : null)
|
a(href=m.url target="_blank" rel="nofollow noopener")
|
||||||
= m.name
|
= m.name
|
||||||
if m.members
|
if m.members
|
||||||
= ' '
|
= ' '
|
||||||
span.members= `(${m.members} Mitglieder)`
|
small.members= `(${m.members})`
|
||||||
|
|
||||||
script.
|
script.
|
||||||
document.getElementById('dach').onclick = e => {
|
document.getElementById('dach').onclick = e => {
|
||||||
|
|||||||
@@ -18,3 +18,6 @@ block main
|
|||||||
each group in telegram
|
each group in telegram
|
||||||
li
|
li
|
||||||
a(href=group.url rel="nofollow noopener" target="_blank")= group.name
|
a(href=group.url rel="nofollow noopener" target="_blank")= group.name
|
||||||
|
if group.members
|
||||||
|
= ' '
|
||||||
|
small.members= `(${group.members} Mitglieder)`
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ renderPage('meetups', 'meetups', { navCurrent: 'meetups', meetups: meetupsSorted
|
|||||||
renderPage('spenden', 'spenden', { navCurrent: 'spenden', spendenregister, spendenuebersicht })
|
renderPage('spenden', 'spenden', { navCurrent: 'spenden', spendenregister, spendenuebersicht })
|
||||||
renderPage('media', 'media', { navCurrent: 'media' })
|
renderPage('media', 'media', { navCurrent: 'media' })
|
||||||
renderPage('soundboard', 'soundboard', { navCurrent: 'soundboard', soundboard })
|
renderPage('soundboard', 'soundboard', { navCurrent: 'soundboard', soundboard })
|
||||||
renderPage('telegram', 'telegram', { navCurrent: 'telegram', telegram })
|
renderPage('telegram', 'telegram', { navCurrent: 'telegram', telegram: site.telegram })
|
||||||
renderPage('events', 'events', { navCurrent: 'events' })
|
renderPage('events', 'events', { navCurrent: 'events' })
|
||||||
renderPage('events/satoshis-bleibe-2022', 'events/satoshis-bleibe-2022', { navCurrent: 'events'})
|
renderPage('events/satoshis-bleibe-2022', 'events/satoshis-bleibe-2022', { navCurrent: 'events'})
|
||||||
renderPage('events/bitcoin-im-laendle-2022', 'events/bitcoin-im-laendle-2022', { navCurrent: 'events' })
|
renderPage('events/bitcoin-im-laendle-2022', 'events/bitcoin-im-laendle-2022', { navCurrent: 'events' })
|
||||||
|
|||||||
@@ -4,12 +4,32 @@ const request = require('sync-request')
|
|||||||
|
|
||||||
const meta = require('../content/meta.json')
|
const meta = require('../content/meta.json')
|
||||||
const meetups = require('../content/meetups.json')
|
const meetups = require('../content/meetups.json')
|
||||||
|
const telegram = require('../content/telegram.json')
|
||||||
const soundboard = require('../content/soundboard.json')
|
const soundboard = require('../content/soundboard.json')
|
||||||
|
|
||||||
const { TELEGRAM_BOT_TOKEN } = process.env
|
const { TELEGRAM_BOT_TOKEN } = process.env
|
||||||
|
|
||||||
const dir = (...path) => resolve(__dirname, '..', ...path)
|
const dir = (...path) => resolve(__dirname, '..', ...path)
|
||||||
const writeJSON = (file, data) => writeFileSync(file, JSON.stringify(data, null, 2))
|
const writeJSON = (file, data) => writeFileSync(file, JSON.stringify(data, null, 2))
|
||||||
|
const getTelegramMembersCount = url => {
|
||||||
|
if (TELEGRAM_BOT_TOKEN) {
|
||||||
|
if (url.startsWith('https://t.me/')) {
|
||||||
|
[, , telegramId] = url.match(/:\/\/t\.me\/(?!(\+|joinchat))(.*)/) || []
|
||||||
|
if (telegramId) {
|
||||||
|
try {
|
||||||
|
const jsonBody = request(
|
||||||
|
'GET',
|
||||||
|
`https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/getChatMemberCount?chat_id=@${telegramId}`
|
||||||
|
).getBody('utf8')
|
||||||
|
const { ok, result } = JSON.parse(jsonBody)
|
||||||
|
if (ok) {
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
} catch (err) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let recentBlocks = []
|
let recentBlocks = []
|
||||||
try {
|
try {
|
||||||
@@ -22,41 +42,26 @@ try {
|
|||||||
const block = recentBlocks.length && recentBlocks[0].height
|
const block = recentBlocks.length && recentBlocks[0].height
|
||||||
const date = (new Date()).toJSON().split('T')[0]
|
const date = (new Date()).toJSON().split('T')[0]
|
||||||
|
|
||||||
|
// Telegram
|
||||||
|
const telegramData = telegram.map(t =>
|
||||||
|
Object.assign(t, {
|
||||||
|
members: getTelegramMembersCount(t.url),
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
// Meetups
|
// Meetups
|
||||||
const meetup = meetups.map(m => {
|
const meetupsData = meetups.map(m => Object.assign(m, {
|
||||||
const copy = Object.assign({}, m)
|
members: getTelegramMembersCount(m.url)
|
||||||
|
}))
|
||||||
|
|
||||||
if (TELEGRAM_BOT_TOKEN) {
|
writeJSON(dir('dist', 'meetups.json'), meetupsData)
|
||||||
let { telegramId } = m
|
|
||||||
if (!telegramId && m.url.startsWith('https://t.me/')) {
|
|
||||||
[,, telegramId] = m.url.match(/:\/\/t\.me\/(?!(\+|joinchat))(.*)/) || []
|
|
||||||
if (telegramId) {
|
|
||||||
try {
|
|
||||||
const jsonBody = request(
|
|
||||||
'GET',
|
|
||||||
`https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/getChatMemberCount?chat_id=@${telegramId}`
|
|
||||||
).getBody('utf8')
|
|
||||||
const { ok, result } = JSON.parse(jsonBody)
|
|
||||||
if (ok) {
|
|
||||||
copy.telegramId = telegramId
|
|
||||||
copy.members = result
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return copy
|
|
||||||
})
|
|
||||||
|
|
||||||
writeJSON(dir('dist', 'meetups.json'), meetup)
|
|
||||||
|
|
||||||
writeJSON(dir('generated', 'site-data.json'), {
|
writeJSON(dir('generated', 'site-data.json'), {
|
||||||
date,
|
date,
|
||||||
block,
|
block,
|
||||||
meta,
|
meta,
|
||||||
meetups: meetup,
|
meetups: meetupsData,
|
||||||
|
telegram: telegramData
|
||||||
})
|
})
|
||||||
|
|
||||||
// Soundboard
|
// Soundboard
|
||||||
|
|||||||
Reference in New Issue
Block a user