Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (49)

Лучшие ответы пользователя

Все ответы (208)
  • Как парсить ответы из znanija.com?

    SoreMix
    @SoreMix
    yellow
    Жмете F12, открываете вкладку Network. Пишите поисковой запрос, отправляете его. Ищите во вкладке Network из какого запроса пришли ответы на вопрос. Спойлер, там есть проверка на JS и куки включеные. Поэтому делаете запрос на URL с вопросом через selenium.

    https://znanija.com/app/ask?entry=top&q=ТУТВОПРОС

    И оттуда забираете нужные данные через find_element_by_
    Ответ написан
  • Ошибка в pip при установке logging?

    SoreMix
    @SoreMix
    yellow
    logging стандартная библиотека, зачем ее устанавливать через pip
    Ответ написан
  • Нужно получить ссылку сайта после запроса, но как?

    SoreMix
    @SoreMix
    yellow
    Если запрос не сильно сложный, то можно так:
    F12 в браузере -> network
    Нажимаем кнопку на сайте, смотрим на первый запрос в списке и что он вернул. Если вернул html, из него можно распарить ссылку новую. Если редирект, то нужно брать новую ссылку из хедера Location.

    Если запрос сложный, допустим нужна авторизация, или там через js сложно сделано, то можно использовать Selenium. Там все просто. Чтобы браузер не мозолил глаза, можно задать настройку headless.

    Это в общих чертах. Если никто не сделает до завтра, то могу помочь утром.

    UPD:
    import requests
    import time
    import json
    import re
    
    
    
    BASE_URL = 'https://rezka.ag/ajax/get_cdn_series/?t={}'
    
    
    
    def parse_quality(urls, quality=None):
    
        splited = urls.split(',')
    
        if not quality:
            using_quality = splited[-1].split('http')[0]
            print('Используем максимально доступное качество ({})'.format(using_quality))
            return splited[-1].split(' or')[0].replace(using_quality, '')
    
        intext_quality = '[{}p]'.format(quality)
    
        if intext_quality not in urls:
            print('Качества {} нет в списке доступных'.format(quality))
            
            # тут уже я не выдержал и импортировал регекс
            available_qualities = re.findall(r'\[(.+?)\]', urls)
            print('Доступные варианты: ', ', '.join(available_qualities))
            return None
    
        for url in splited:
            if intext_quality in url:
                return url.split(' or')[0].replace(intext_quality, '')
    
    
    def get_urls(film_id, season, episode):
    
        payload = {'id': film_id, 'translator_id': '1', 'season': season, 'episode': episode, 'action': 'get_stream'}
    
        r = requests.post(BASE_URL.format(str(int(time.time()))), data=payload)
    
        if r.status_code != 200:
            # тут нужно будет как нибудь обработать ошибку, если запрос не прошел
            print('Ошибка')
            return
    
        data = json.loads(r.text)
    
        if data.get('success') != True:
            # тут нужно будет как нибудь обработать ошибку, если запрос не прошел
            print('Ошибка')
            print(data)
            return
    
        return data['url']
    
    
    
    if __name__ == '__main__':
        
        all_urls = get_urls(9364, 1, 1)
    
        if all_urls:
            url = parse_quality(all_urls)
    
            print(url)


    Параметры для get_urls:
    ID фильма, можно взять по ссылке в браузере
    Сезон, эпизод - тут все понятно

    Параметры для parse_quality:
    список ссылок с качеством
    желаемое качество. Например, parse_quality(all_urls, 1080)

    Если качество задано, то вернет ссылку на него, если не найдет - ошибка
    Если качество не задано, то вернет максимальное доступное

    ps:
    если весь запустить код сверху, то он вернет 1080p, но в ссылке явно будет указано 720p. В этом ошибки нет, сайт так помечает 1080p, похоже, нет там 1080 честного)

    Сырой ответ с ссылками, если интересно

    [360p]https://load.hdrezka-ag.net/tvseries/cb2beeb8822647baa8621766e5a360cc3c7ae16b/aff285f2cedd0cb70b49a97e53b8c246:2020060411/240.mp4:hls:manifest.m3u8 or https://load.hdrezka-ag.net/65af9f4fab0d894043fac8887b7da99e:2020060411/tvseries/cb2beeb8822647baa8621766e5a360cc3c7ae16b/240.mp4,[480p]https://load.hdrezka-ag.net/tvseries/cb2beeb8822647baa8621766e5a360cc3c7ae16b/aff285f2cedd0cb70b49a97e53b8c246:2020060411/360.mp4:hls:manifest.m3u8 or https://load.hdrezka-ag.net/ea218fab2e907aa2093c5bc7f9cb480d:2020060411/tvseries/cb2beeb8822647baa8621766e5a360cc3c7ae16b/360.mp4,[720p]https://load.hdrezka-ag.net/tvseries/cb2beeb8822647baa8621766e5a360cc3c7ae16b/aff285f2cedd0cb70b49a97e53b8c246:2020060411/480.mp4:hls:manifest.m3u8 or https://load.hdrezka-ag.net/92bdeccddc5661b6b786659fae6adc3b:2020060411/tvseries/cb2beeb8822647baa8621766e5a360cc3c7ae16b/480.mp4,[1080p]https://load.hdrezka-ag.net/tvseries/cb2beeb8822647baa8621766e5a360cc3c7ae16b/aff285f2cedd0cb70b49a97e53b8c246:2020060411/720.mp4:hls:manifest.m3u8 or https://load.hdrezka-ag.net/d2bb808ccb6910d8317224825ee2875d:2020060411/tvseries/cb2beeb8822647baa8621766e5a360cc3c7ae16b/720.mp4

    Ответ написан
  • Не работает программа на python?

    SoreMix
    @SoreMix
    yellow
    Компиляция питона в .exe - костыль.
    Читайте, как ресурсы упаковывать
    https://stackoverflow.com/questions/54210392/how-c...
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (3)