lyrpy 1.0.0__py3-none-any.whl → 2024.0.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of lyrpy might be problematic. Click here for more details.

Files changed (47) hide show
  1. {SRC/LIB/lyrpy → lyr}/LUConsole.py +1 -1
  2. lyr/LUConst.py +45 -0
  3. {SRC/LIB/lyrpy → lyr}/LUDateTime.py +4 -2
  4. {SRC/LIB/lyrpy → lyr}/LUDecotators.py +3 -2
  5. {SRC/LIB/lyrpy → lyr}/LUDict.py +1 -0
  6. {SRC/LIB/lyrpy → lyr}/LUDoc.py +4 -5
  7. {SRC/LIB/lyrpy → lyr}/LUErrors.py +1 -0
  8. {SRC/LIB/lyrpy → lyr}/LUFile.py +66 -120
  9. {SRC/LIB/lyrpy → lyr}/LUFileUtils.py +45 -60
  10. {SRC/LIB/lyrpy → lyr}/LULog.py +232 -307
  11. {SRC/LIB/lyrpy → lyr}/LUObjects.py +4 -4
  12. {SRC/LIB/lyrpy → lyr}/LUObjectsYT.py +22 -39
  13. {SRC/LIB/lyrpy → lyr}/LUParserARG.py +3 -2
  14. {SRC/LIB/lyrpy → lyr}/LUParserINI.py +9 -14
  15. {SRC/LIB/lyrpy → lyr}/LUParserREG.py +1 -5
  16. {SRC/LIB/lyrpy → lyr}/LUQThread.py +4 -6
  17. {SRC/LIB/lyrpy → lyr}/LUQTimer.py +5 -5
  18. {SRC/LIB/lyrpy → lyr}/LUSheduler.py +23 -24
  19. {SRC/LIB/lyrpy → lyr}/LUThread.py +6 -7
  20. {SRC/LIB/lyrpy → lyr}/LUTimer.py +3 -5
  21. {SRC/LIB/lyrpy → lyr}/LUVersion.py +1 -4
  22. {SRC/LIB/lyrpy → lyr}/LUYouTube.py +7 -6
  23. {SRC/LIB/lyrpy → lyr}/LUos.py +5 -15
  24. {SRC/LIB/lyrpy → lyr}/__init__.py +2 -2
  25. {SRC/LIB/lyrpy → lyr}/__main__.py +19 -20
  26. lyrpy-2024.0.2.data/data/data/text.txt +1 -0
  27. lyrpy-2024.0.2.dist-info/METADATA +44 -0
  28. lyrpy-2024.0.2.dist-info/RECORD +38 -0
  29. {lyrpy-1.0.0.dist-info → lyrpy-2024.0.2.dist-info}/WHEEL +1 -1
  30. lyrpy-2024.0.2.dist-info/top_level.txt +1 -0
  31. SRC/LIB/__init__.py +0 -0
  32. SRC/LIB/lyrpy/LUConst.py +0 -358
  33. SRC/LIB/lyrpy/LUTelegram.py +0 -428
  34. SRC/__init__.py +0 -0
  35. TESTS/__init__.py +0 -0
  36. TESTS/test_main.py +0 -10
  37. lyrpy-1.0.0.dist-info/METADATA +0 -24
  38. lyrpy-1.0.0.dist-info/RECORD +0 -42
  39. lyrpy-1.0.0.dist-info/top_level.txt +0 -2
  40. {SRC/LIB/lyrpy → lyr}/LUNetwork.py +0 -0
  41. {SRC/LIB/lyrpy → lyr}/LUNumUtils.py +0 -0
  42. {SRC/LIB/lyrpy → lyr}/LUProc.py +0 -0
  43. {SRC/LIB/lyrpy → lyr}/LUStrDecode.py +0 -0
  44. {SRC/LIB/lyrpy → lyr}/LUStrUtils.py +0 -0
  45. {SRC/LIB/lyrpy → lyr}/LUSupport.py +0 -0
  46. {SRC/LIB/lyrpy → lyr}/LUsys.py +0 -0
  47. {lyrpy-1.0.0.dist-info/licenses → lyrpy-2024.0.2.dist-info}/LICENSE +0 -0
@@ -1,428 +0,0 @@
1
- """LUTelegram.py"""
2
- # -*- coding: UTF-8 -*-
3
- __annotations__ = """
4
- =======================================================
5
- Copyright (c) 2025
6
- Author:
7
- Lisitsin Y.R.
8
- Project:
9
- lyrpy
10
-
11
- Module:
12
- LUTelegram.py
13
-
14
- =======================================================
15
- """
16
-
17
- from fontTools.misc.cython import returns
18
- #------------------------------------------
19
- # БИБЛИОТЕКИ python
20
- #------------------------------------------
21
-
22
- #------------------------------------------
23
- # БИБЛИОТЕКИ сторонние
24
- #------------------------------------------
25
-
26
- #------------------------------------------
27
- # БИБЛИОТЕКА telethon
28
- #------------------------------------------
29
- # import telethon
30
- import telethon.sync
31
- import telethon.tl.types
32
-
33
- from telethon.sync import TelegramClient
34
- from telethon.tl.types import PeerUser, PeerChat, PeerChannel
35
- import re
36
- import asyncio
37
-
38
- # from telethon.tl.functions.messages import GetDialogsRequest
39
- # from telethon.tl.types import InputPeerEmpty
40
- # from telethon.tl.types import User
41
- # # класс, позволяющий нам подключаться к клиенту мессенджера и работать с ним;
42
- # from telethon.sync import TelegramClient
43
- # # PeerChannel - специальный тип, определяющий объекты типа «канал/чат»,
44
- # # с помощью которого можно обратиться к нужному каналу для парсинга сообщений.
45
- # from telethon.tl.types import Channel, PeerChannel, PeerChat, PeerUser, Message, User, MessageMediaPhoto, MessageMediaDocument
46
- # # конструктор для работы с InputPeer, который передаётся в качестве аргумента в GetDialogsRequest;
47
- # from telethon.tl.types import InputMessagesFilterPhotos
48
- # # функция, позволяющая работать с сообщениями в чате;
49
- # # метод, позволяющий получить сообщения пользователей из чата и работать с ним;
50
- # from telethon.tl.functions.messages import GetHistoryRequest
51
- # from telethon import TelegramClient, events, sync
52
- # import telethon.errors
53
- # import telethon.client.messages as messages
54
- #------------------------------------------
55
- # БИБЛИОТЕКА pyrogram
56
- #------------------------------------------
57
- # from pyrogram import Client
58
- import pyrogram
59
-
60
- #------------------------------------------
61
- # БИБЛИОТЕКИ LU
62
- #------------------------------------------
63
-
64
- LIB_name = ''
65
-
66
- # ------------------------------------------
67
- # Авторизация в Telegram
68
- # get_telethon_client (session_name, api_id, api_hash, phone, password) -> telethon.sync.TelegramClient:
69
- # ------------------------------------------
70
- def get_telethon_client (session_name, api_id, api_hash, phone, password) -> telethon.sync.TelegramClient:
71
- """get_telethon_client"""
72
- # beginfunction
73
- result = telethon.sync.TelegramClient(session_name, api_id, api_hash, system_version="4.16.30-vxNAME ")
74
- # Вместо NAME используйте любое сочетание букв на английском КАПСОМ Пример: vxXYI, vxABC, vxMYNAME
75
- # # (в папке с кодом нет файлика .session, клиент сам его создаст (в нашем случае 'my_session')
76
- # # и будет с ним работать. Поэтому просто вставляем эти параметры в инициализацию и кайфуем:finger_up: )
77
-
78
- # Tclient = TelegramClient (Gsession_name, Gapi_id, Gapi_hash,
79
- # # device_model = "iPhone 13 Pro Max",
80
- # # app_version = "8.4",
81
- # # lang_code = "en",
82
- # # system_lang_code = "en-US")
83
- # system_version='4.16.30-vxABC')
84
- # Tclient.start (phone=Gphone, password=Gpassword)
85
- result.start (phone=phone, password=password)
86
- result.connect ()
87
- # print (f'{LIB_name}_user_authorized={result.is_user_authorized()}')
88
- return result
89
- # endfunction
90
-
91
- # ------------------------------------------
92
- # Получить the current User who is logged
93
- # get_telethon_me (client:telethon.sync.TelegramClient) -> telethon.tl.types.User:
94
- # ------------------------------------------
95
- def get_telethon_me (client:telethon.sync.TelegramClient) -> telethon.tl.types.User:
96
- """get_telethon_me"""
97
- # beginfunction
98
- result:User = client.get_me ()
99
-
100
- # print (f'{LIB_name}_username={result.username}')
101
- # print (f'{LIB_name}_phone={result.phone}')
102
-
103
- # print (f'{LIB_name}_stringify={result.stringify()}')
104
- return result
105
- # endfunction
106
-
107
- # ------------------------------------------
108
- # Получить channel
109
- # get_telethon_channel (client:telethon.sync.TelegramClient, channel_name_id) -> telethon.tl.types.Channel:
110
- # ------------------------------------------
111
- def get_telethon_channel (client:telethon.sync.TelegramClient, channel_name_id) -> telethon.tl.types.Channel:
112
- """get_telethon_channel"""
113
- # beginfunction
114
- result = client.get_entity (channel_name_id)
115
- # print (result)
116
- # print(f'{LIB_name}_Channel.title={result.title}')
117
- # print(f'{LIB_name}_Channel.id={result.id}')
118
- # print(f'{LIB_name}_Channel.username={result.id}')
119
- return result
120
- # endfunction
121
-
122
- # ------------------------------------------
123
- # Получить message
124
- # get_telethon_message (client:telethon.sync.TelegramClient, channel:telethon.tl.types.Channel, message_id) -> telethon.tl.types.Message:
125
- # ------------------------------------------
126
- def get_telethon_message (client:telethon.sync.TelegramClient, channel:telethon.tl.types.Channel, message_id) -> telethon.tl.types.Message:
127
- """get_telethon_message"""
128
- # beginfunction
129
- try:
130
- result = client.get_messages (channel.id, ids=message_id)
131
- # print(f'{LIB_name}_Message={result}')
132
- except:
133
- result = None
134
-
135
- return result
136
- # endfunction
137
-
138
- #------------------------------------------
139
- # Получить мои группы
140
- # get_telethon_mygroups (client:TelegramClient):
141
- #------------------------------------------
142
- def get_telethon_mygroups (client:telethon.sync.TelegramClient):
143
- """get_telethon_mygroups"""
144
- #beginfunction
145
- # Получение списка диалогов
146
- dialogs = client.get_dialogs()
147
- # Отображение списка групп
148
- for dialog in dialogs:
149
- if dialog.is_group:
150
- print(f"{LIB_name}_Группа: {dialog.title} (ID: {dialog.id})")
151
- #endfunction
152
-
153
- #------------------------------------------
154
- # Получить список groups
155
- #------------------------------------------
156
- def get_telethon_groups (client:telethon.sync.TelegramClient) -> list:
157
- """get_telethon_groups"""
158
- #beginfunction
159
- chats = []
160
- last_date = None
161
- size_chats = 200
162
- groups = []
163
-
164
- # -----------------------------------------------
165
- # Напишем запрос для получения списка групп
166
- # -----------------------------------------------
167
- # offset_date и offset_peer мы передаём с пустыми значениями.
168
- # Обычно они используются для фильтрации полученных данных, но здесь мы
169
- # хотим получить весь список. Лимит по количеству элементов в ответе задаём 200,
170
- # передавая в параметр limit переменную size_chats.
171
- result = client (telethon.tl.functions.messages.GetDialogsRequest (
172
- offset_date=last_date,
173
- offset_id=0,
174
- offset_peer=telethon.tl.types.InputPeerEmpty (),
175
- limit=size_chats,
176
- hash=0
177
- ))
178
- chats.extend (result.chats)
179
-
180
- # -----------------------------------------------
181
- #
182
- # -----------------------------------------------
183
- for chat in chats:
184
- try:
185
- # print (int(chat.megagroup), chat.title)
186
-
187
- # Megagroup в библиотеке Telethon — это свойство объекта Channel,
188
- # которое указывает, является ли он мегагруппой (большой группой).
189
- # Мегагруппы — это каналы, для которых значение свойства channel.megagroup равно True.
190
- # В официальных приложениях Telegram такие группы называются «супергруппами»
191
-
192
- if chat.megagroup == True:
193
- groups.append (chat)
194
- except:
195
- continue
196
- return groups
197
-
198
- #endfunction
199
-
200
- #------------------------------------------
201
- # Получить список groups
202
- #------------------------------------------
203
- def get_telethon_groups (client:telethon.sync.TelegramClient) -> list:
204
- """get_telethon_groups"""
205
- #beginfunction
206
- chats = []
207
- last_date = None
208
- size_chats = 200
209
- groups = []
210
-
211
- # -----------------------------------------------
212
- # Напишем запрос для получения списка групп
213
- # -----------------------------------------------
214
- # offset_date и offset_peer мы передаём с пустыми значениями.
215
- # Обычно они используются для фильтрации полученных данных, но здесь мы
216
- # хотим получить весь список. Лимит по количеству элементов в ответе задаём 200,
217
- # передавая в параметр limit переменную size_chats.
218
- result = client (telethon.tl.functions.messages.GetDialogsRequest (
219
- offset_date=last_date,
220
- offset_id=0,
221
- offset_peer=telethon.tl.types.InputPeerEmpty (),
222
- limit=size_chats,
223
- hash=0
224
- ))
225
- chats.extend (result.chats)
226
- # -----------------------------------------------
227
- #
228
- # -----------------------------------------------
229
- for chat in chats:
230
- try:
231
- # print (int(chat.megagroup), chat.title)
232
- # Megagroup в библиотеке Telethon — это свойство объекта Channel,
233
- # которое указывает, является ли он мегагруппой (большой группой).
234
- # Мегагруппы — это каналы, для которых значение свойства channel.megagroup равно True.
235
- # В официальных приложениях Telegram такие группы называются «супергруппами»
236
- if chat.megagroup == True:
237
- groups.append (chat)
238
- else:
239
- # groups.append (chat)
240
- pass
241
- except:
242
- continue
243
- return groups
244
- #endfunction
245
-
246
- #------------------------------------------
247
- # Получить список users group
248
- #------------------------------------------
249
- def get_telethon_users_group (client:telethon.sync.TelegramClient, group) -> list:
250
- """get_telethon_users_group"""
251
- #beginfunction
252
- #-----------------------------------------------
253
- # Узнаём пользователей...
254
- #-----------------------------------------------
255
- all_participants = []
256
- try:
257
- all_participants = client.get_participants (group, limit=100000)
258
- # print (group)
259
- # for user in all_participants:
260
- # if user.username:
261
- # username = user.username
262
- # else:
263
- # username = ""
264
- # if user.first_name:
265
- # first_name = user.first_name
266
- # else:
267
- # first_name = ""
268
- # if user.last_name:
269
- # last_name = user.last_name
270
- # else:
271
- # last_name = ""
272
- # name = (first_name + ' ' + last_name).strip ()
273
- # print(f'{username=}, {name=}, {target_group.title=}')
274
- except:
275
- pass
276
- return all_participants
277
- #endfunction
278
-
279
- #------------------------------------------
280
- # Получить список CHATs
281
- #------------------------------------------
282
- def get_telethon_CHATs (client:telethon.sync.TelegramClient):
283
- """get_telethon_CHATs"""
284
- #beginfunction
285
- # понять, канал или чат, можно проверяя у диалога параметр "dialog.entity.megagroup
286
- for dialog in client.iter_dialogs ():
287
- if 'Channel' in str (type (dialog.entity)): # откидываем юзеров
288
- if dialog.entity.megagroup:
289
- print (dialog.entity.id, '//', dialog.entity.username,
290
- ' - ', dialog.name, ' is CHAT')
291
- #endfunction
292
-
293
- #------------------------------------------
294
- # Получить список CHANNELs
295
- #------------------------------------------
296
- def get_telethon_CHANNELs (client:telethon.sync.TelegramClient):
297
- """get_telethon_CHANNELs"""
298
- #beginfunction
299
- # понять, канал или чат, можно проверяя у диалога параметр "dialog.entity.megagroup
300
- for dialog in client.iter_dialogs ():
301
- if 'Channel' in str (type (dialog.entity)): # откидываем юзеров
302
- if not dialog.entity.megagroup:
303
- print (dialog.entity.id, '//', dialog.entity.username,
304
- ' - ', dialog.name, ' is CHANNEL')
305
- #endfunction
306
-
307
- # ----------------------------------------------
308
- # Получаем последние 10 сообщений из указанного чата
309
- # ----------------------------------------------
310
- def get_telethon_chat (client:telethon.sync.TelegramClient, chat_id):
311
- """get_telethon_chat"""
312
- #beginfunction
313
- # ID чата/канала/пользователя, откуда читать сообщения
314
- # chat_id = '@GardeZ66' # или ID (число), или юзернейм (например, '@telegram')
315
- for message in client.iter_messages (chat_id, limit=10):
316
- print (f"{LIB_name}_message.sender_id:{message.sender_id}: {message.text}")
317
- #endfunction
318
-
319
-
320
-
321
- # ----------------------------------------------
322
- # Функция для парсинга ссылки
323
- # ----------------------------------------------
324
- def parse_message_link (link):
325
- """parse_message_link"""
326
- #beginfunction
327
- pattern = r'https?://t\.me/([a-zA-Z0-9\_]+|c/(\d+))/(\d+)/(\d+)'
328
- match = re.match (pattern, link)
329
- if not match:
330
- raise ValueError ("Invalid link")
331
-
332
- # print(f'{match.group (1)=}')
333
- # print(f'{match.group (2)=}')
334
- # print(f'{match.group (3)=}')
335
- # print(f'{match.group (4)=}')
336
-
337
- if match.group (1).startswith ('c'):
338
- channel_id = int (match.group (3))
339
- msg_id = int (match.group (3))
340
- return {'channel_id': channel_id, 'msg_id': msg_id}
341
- else:
342
- username = match.group (1)
343
- msg_id = int (match.group (3))
344
- return {'username': username, 'msg_id': msg_id}
345
- #endfunction
346
-
347
- # ----------------------------------------------
348
- # async def get_channel_name (link, TelegramClient):
349
- # ----------------------------------------------
350
- def get_channel_name (link, session_name, api_id, api_hash, phone):
351
- """get_channel_name"""
352
- #beginfunction
353
- with TelegramClient (session_name, api_id, api_hash) as client:
354
- client.start (phone)
355
- # print (f'{link=}')
356
- parsed = parse_message_link (link)
357
- print (f'{parsed=}')
358
-
359
- if 'username' in parsed:
360
- entity = client.get_entity (parsed ['username'])
361
- # entity = client.get_entity (parsed ['msg_id'])
362
- elif 'channel_id' in parsed:
363
- entity = client.get_entity (PeerChannel (parsed ['channel_id']))
364
- else:
365
- raise ValueError ("Could not resolve entity")
366
- print (f"Название канала: {entity.title}")
367
-
368
- # client.disconnect ()
369
-
370
- return entity.title
371
- #endfunction
372
-
373
-
374
-
375
-
376
-
377
-
378
-
379
-
380
- # ------------------------------------------
381
- # Авторизация в Telegram [pyrogram]
382
- # ------------------------------------------
383
- def get_pyrogram_client (api_id, api_hash, login, phone) -> pyrogram.Client:
384
- """get_pyrogram_client"""
385
- # beginfunction
386
- result = pyrogram.Client (login, api_id=api_id, api_hash=api_hash, phone_number=phone)
387
- result.start ()
388
- # result.connect ()
389
- # print (f'{LIB_name}_is_connected={result.is_connected}')
390
-
391
- # print(Tclient.export_session_string())
392
- # print(result.workdir)
393
-
394
- # result.run ()
395
- return result
396
- # endfunction
397
-
398
- # ------------------------------------------
399
- # Метод client.get_me() в библиотеке Pyrogram возвращает объект pyrogram.User
400
- # с информацией о текущем зарегистрированном пользователе или боте.
401
- # ------------------------------------------
402
- def get_pyrogram_me (client:pyrogram.Client) -> pyrogram.types.User:
403
- """get_pyrogram_me"""
404
- # beginfunction
405
- result = client.get_me()
406
- # print (f'{LIB_name}_username={result.username}')
407
- # print (f'{LIB_name}_phone_number={result.phone_number}')
408
- # print (f'pyrogram:stringify={result.stringify()}')
409
- return result
410
- # endfunction
411
-
412
- #---------------------------------------------------------
413
- # main
414
- #---------------------------------------------------------
415
- def main ():
416
- #beginfunction
417
- pass
418
- #endfunction
419
-
420
- #---------------------------------------------------------
421
- #
422
- #---------------------------------------------------------
423
- #beginmodule
424
- if __name__ == "__main__":
425
- main()
426
- #endif
427
-
428
- #endmodule
SRC/__init__.py DELETED
File without changes
TESTS/__init__.py DELETED
File without changes
TESTS/test_main.py DELETED
@@ -1,10 +0,0 @@
1
- """Some tests for the main module."""
2
-
3
- from itertools import islice
4
-
5
- from demo.main import fibo
6
-
7
-
8
- def test_fibo(fibo_sequence_first_ten):
9
- """Test fibonacci function."""
10
- assert list(islice(fibo(), 10)) == fibo_sequence_first_ten
@@ -1,24 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: lyrpy
3
- Version: 1.0.0
4
- Summary: lyrpy
5
- Home-page: https://github.com/lisitsinyr/TOOLS_SRC_PY
6
- Author: lisitsinyr
7
- Author-email: lisitsinyr@gmail.com
8
- Classifier: Programming Language :: Python :: 3.8
9
- Classifier: License :: OSI Approved :: MIT License
10
- Classifier: Operating System :: OS Independent
11
- Requires-Python: >=3.6
12
- Description-Content-Type: text/markdown
13
- License-File: LICENSE
14
- Dynamic: author
15
- Dynamic: author-email
16
- Dynamic: classifier
17
- Dynamic: description
18
- Dynamic: description-content-type
19
- Dynamic: home-page
20
- Dynamic: license-file
21
- Dynamic: requires-python
22
- Dynamic: summary
23
-
24
- lyrpy
@@ -1,42 +0,0 @@
1
- SRC/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- SRC/LIB/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- SRC/LIB/lyrpy/LUConsole.py,sha256=B7fFYJy5EdR_141gyFHdDeeyzxEM8rRlrc7XluX1ZcY,13854
4
- SRC/LIB/lyrpy/LUConst.py,sha256=sjHaVYeTY7BG_HajGaLR9-KSVDI6e2PgmVoDuq_YjlE,14309
5
- SRC/LIB/lyrpy/LUDateTime.py,sha256=KZSxaEUzmQxY6qeOylOi3FTytjQbdJ1jzfBQGXP22m4,6508
6
- SRC/LIB/lyrpy/LUDecotators.py,sha256=ls50zFfWFgtW09v5rXgsKYp3fftDFvodkbrColz1J9Y,18991
7
- SRC/LIB/lyrpy/LUDict.py,sha256=E-YUmBYRCGX3SDcM3VaoRj_5u_ldyOxgXdqMX7Tn2fw,3086
8
- SRC/LIB/lyrpy/LUDoc.py,sha256=gioclr6lAy5kcKR-CmO2ibVc5aOc1s5COY8XeIuJ70w,1656
9
- SRC/LIB/lyrpy/LUErrors.py,sha256=dw_TKBJ925sE7ObO50suLtyfxvsomWlEKERJ1eJ7Qfc,2101
10
- SRC/LIB/lyrpy/LUFile.py,sha256=uqhCfoJ61ZwZkJzSwnL7OGeLCSTskQa7IsACs-2zGlI,51284
11
- SRC/LIB/lyrpy/LUFileUtils.py,sha256=6yiH89yPD1nA52DYFXVvYnYIc1cD3fM-gNA2eJnnQgo,19683
12
- SRC/LIB/lyrpy/LULog.py,sha256=6RqZrszIfK4_EtuLlFNzYJwTcd28kg53dQCMbiNbxNE,84216
13
- SRC/LIB/lyrpy/LUNetwork.py,sha256=jNimFwK1fCZPY1rQOZaIeDdvDNyzv224yYBz40gtqGA,7641
14
- SRC/LIB/lyrpy/LUNumUtils.py,sha256=BBEWny-h0N9Wji6zXhrnrhN99nBMQetq2xiqtbHgjSQ,6248
15
- SRC/LIB/lyrpy/LUObjects.py,sha256=ulQ3BUFvuqq8LzoAMn-_BSFedHgBK4-kNoAQSEJyNHY,5948
16
- SRC/LIB/lyrpy/LUObjectsYT.py,sha256=kL7ltAMCcVwMk3ACc52DYLwFxfsHRJGzp8n4b7cWGEs,29737
17
- SRC/LIB/lyrpy/LUParserARG.py,sha256=7ppyv9OmCSxIE4SwzoMCDb-ireIdNz9a3jFB4ZT-yqs,14598
18
- SRC/LIB/lyrpy/LUParserINI.py,sha256=PEYv8YaGKolQz0J7pGBEWJzc07_WrMAy8cyPdW3Scx4,11144
19
- SRC/LIB/lyrpy/LUParserREG.py,sha256=WdIKx7wrK9F2piWZCgbbItUjqHPHlQsGQv0yEnPDtLI,19510
20
- SRC/LIB/lyrpy/LUProc.py,sha256=nhERQhm5a6aazZfttxXYHiyhiTRfMgS4JGSDy_jKzo4,3248
21
- SRC/LIB/lyrpy/LUQThread.py,sha256=u7buOsymIuTB4TLX3v04Jj4frs-yO_dwU_AGKuC9LbU,4115
22
- SRC/LIB/lyrpy/LUQTimer.py,sha256=U3J6TVo_ZTMRzHwhz-PYqdE9qc3Nd2Wlj7hobE_vVQQ,5470
23
- SRC/LIB/lyrpy/LUSheduler.py,sha256=ypINAPgqpTBwdpeOpd8Zt2yXfMmZu4Uop-StTEfFZks,31789
24
- SRC/LIB/lyrpy/LUStrDecode.py,sha256=fJbnBRzZGh6PSXgqkOOsdIFgi1ZlBPTVoBjDWrDG4bA,9312
25
- SRC/LIB/lyrpy/LUStrUtils.py,sha256=SRCD-cM0fR3W7EzjZO-DSkzoIyHwX1Ws0HZrKTFC2_M,24575
26
- SRC/LIB/lyrpy/LUSupport.py,sha256=8I8b9RcY7pFXqXycZ7tn1CtVWX48mPNuJQDLd5Hn5sg,3085
27
- SRC/LIB/lyrpy/LUTelegram.py,sha256=gj-_5PgYSbrmEoAilFJa_ExkYCu9z7DW2Yxbf0n5zDY,18066
28
- SRC/LIB/lyrpy/LUThread.py,sha256=g6wo59JbL8PdjMmvefuzziacL-5GUZE9-jKejC5mACs,6163
29
- SRC/LIB/lyrpy/LUTimer.py,sha256=5f8DAijY1kElQRDjsBfZbZi02DygOaGmx9Tr6IXTFUU,4092
30
- SRC/LIB/lyrpy/LUVersion.py,sha256=457Jt2ATpaLtLi0qtt4LkXcS6KOGUIn_18TC8ENK3gE,12277
31
- SRC/LIB/lyrpy/LUYouTube.py,sha256=QSp4LcPR52GUhUDQ5iE121JKG_zwBeRtfVOEFjRJqR8,6323
32
- SRC/LIB/lyrpy/LUos.py,sha256=jOPr9LITF9JE7mvHTw7ZGqybWvjprldWwd6MShoMnxk,27918
33
- SRC/LIB/lyrpy/LUsys.py,sha256=MVGkpR7O7Uj6zk10b5ZYfSnWWnBMVAXSgQb4EE61ObI,1103
34
- SRC/LIB/lyrpy/__init__.py,sha256=6FdzVR8cXA4X4J6XaejLUuZsC2CBxthsfKnNHSxPxnw,451
35
- SRC/LIB/lyrpy/__main__.py,sha256=eA8vYGJZ5xsYsm_uW7VxsMvNHJ5OUnqhYdb1hSC_XWo,452
36
- TESTS/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- TESTS/test_main.py,sha256=_SvpIN2NPsxFpUohRSkiSbLPLITw6NHuQ0Z9MqzIAio,246
38
- lyrpy-1.0.0.dist-info/licenses/LICENSE,sha256=hM4FdoGLL-HQV5eP3W5n52Gkben0U-a50qcOXR9_M60,1096
39
- lyrpy-1.0.0.dist-info/METADATA,sha256=zc8DcM-rx72GoKsPE6LxGIXLLhK4c2rSLB3n5YyqUdg,632
40
- lyrpy-1.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
41
- lyrpy-1.0.0.dist-info/top_level.txt,sha256=-28kPL-odBc39gsKIz6xrbuLKn5grxtpoPoZwPrJEqQ,10
42
- lyrpy-1.0.0.dist-info/RECORD,,
@@ -1,2 +0,0 @@
1
- SRC
2
- TESTS
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes