import base64
imgstring = "data:image/jpeg;base64,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"
imgdata = base64.b64decode(imgstring.split('base64,')[1])
filename = 'some_image.jpg'
with open(filename, 'wb') as f:
f.write(imgdata)
class ItemService:
def enrich_with_data(self, session: requests.Session, items: list[Item]) -> list[Item]:
for item in items:
response = self.repository.get_additional_data(session, item)
item_info = response.json()['iteminfo']
item.full_item_name = item_info['full_item_name']
#print(item.full_item_name)
return items, item.full_item_name
lst = {
"applist": {
"apps": [{
"appid": 1941401,
"name": "ASD"
}, {
"appid": 2170321,
"name": "SDF"
}, {
"appid": 1825161,
"name": "DFG"
}]
}
}
def find_name(appid):
if res := list(filter(lambda x: x['appid'] == appid, lst['applist']['apps'])):
return res[0]['name']
return None
kb.row(KeyboardButton('Когда', 'Помощь'))
kb.row(KeyboardButton('Когда'), KeyboardButton('Помощь'))
from random import randint
attempts = []
for i in range(10):
res = []
while True:
res.append(randint(0, 1))
if len(res) >= 3 and (res[-1]==res[-2]==res[-3]):
break
s = ''.join(['О' if s else 'Р' for s in res])
print(f'{s} (попыток: {len(s)})')
attempts.append(len(s))
print(f'Среднее количество попыток: {sum(attempts) / len(attempts)}.')
if k == 10:
continue
async def send_random_quote(message_id):
x= quotes[randint(0,388)]
await bot.send_message(message_id, x)
scheduler.add_job(send_random_quote,'cron',day_of_week='mon-sun', hour=19,minute=6,kwargs={'message_id': callback_query.from_user.id})
app = FastAPI()
app_api = FastAPI()
app.mount("/api", app_api)
app.mount("/", StaticFiles(directory="static", html=True), name="static")
@app.get('/', response_class=HTMLResponse)
async def main_page():
return HTMLResponse('index.html')
@app_api.post('/login', response_class=JSONResponse)
async def login(
username: str = Body(...),
password: str = Body(...)
):
...
reader = csv.reader(open("ip.csv"))
def _sort(s):
if s.lower() == 'last checked':
return 0
res = 0
s = s.split('ago')[0].strip()
if 'hour' in s:
_s = s.split('hour')
res += int(_s[0]) * 60 * 60
s = _s[1].strip()
if 'mins' in s:
_s = s.split('mins')
res += int(_s[0]) * 60
s = _s[1].strip()
if 'min' in s:
_s = s.split('min')
res += int(_s[0]) * 60
s = _s[1].strip()
if 'secs' in s:
_s = s.split('secs')
res += int(_s[0])
return res
sort_reader = sorted(reader, key=lambda x: _sort(x[7]))