"""Xahiş edirəm, xam mətnindən linkləri çıxaran və onları müəyyən qaydalara uyğun sıralayan kod yazın.
Qaytarılacaq linklər siyahısında təkrarlamalar olmamalıdır.
Sıralama qaydaları aşağıdakı kimidir:
- Prioritet 1: Əvvəlcə ilk tapılan linklər, self.first_extracted_links sayında
- Prioritet 2: Sonra bulud disk və sənədlərə (Yandex Disk və s.) linklər
- Prioritet 3: Sonra fayl linkləri (sonunda .exe, .pdf, .rar və s. uzantıları olanlar)
- Prioritet 4: Qalan linklər, uzunluğuna görə azalan sırayla
Həmçinin, linklərin sayı məhdudiyyətini nəzərə almaq və kontekst menecerini həyata keçirmək lazımdır.
Məsələn, [link] üzərində işlədilə bilər.
Qısa şəkildə:
- 30 dəqiqə vaxt verilir
- apply, process funksiyalarını və kontekst meneceri üçün funksiyaları yazın
- Bütün testlər keçməlidir
- Testlər dəyişdirilə bilməz
- import istifadə etmək olar
- Yazdıqdan sonra lokalda işlədib, lazım olsa düzəldə bilərsiniz
linkləri tapmaq üçün regex: (?:https?|ftp):\/\/(?:[a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(?::\d+)?(?:\/[^\s()]*)?"""
class LinkExtractor:
DEFAULT_CLOUDS = frozenset((
"drive.google.com",
"mediafire.com",
"yadi.sk",
"disk.yandex.ru",
"cloud.mail.ru",
"mega.nz"
))
# Bu metodu genişləndirmək və ya yenidən yazmaq olar
def __init__(self, max_links: int = 7, first_extracted_links: int = 2, clouds = None):
# Maksimum link sayı
self.max_links = max_links
# Birinci şərt üçün çıxarılan link sayı
self.first_extracted_links = first_extracted_links
# Bulud kimi qəbul edilən domenlərin siyahısı
self.clouds = clouds or self.DEFAULT_CLOUDS
self._results = []
# Bu metodu yazın, analiz üçün mətnin bir hissəsini əlavə edir
def apply(self, text) -> "LinkExtractor":
...
return self