• Как пофиксить вызов JS из HTML?

    fomenkogregory
    @fomenkogregory
    Юниор софтварный инженер
    А в чем сакральный смысл вызова скрипта прямо внутри таблицы? Не уверен, но думаю проблема в innterHTML.
    Ответ написан
    1 комментарий
  • Как пофиксить вызов JS из HTML?

    ArsenyMatytsyn
    @ArsenyMatytsyn Куратор тега JavaScript
    Руководитель frontend направления, предприниматель
    Тебе Codepen же в консоли и отвечает, в чем причина.

    1. Переменные не были объявлены должным образом.
    2. Ты пытался словить class, как ID

    https://codepen.io/i-am-studio_ru/pen/OJMLLaK
    Ответ написан
    5 комментариев
  • Нужно получить ссылку сайта после запроса, но как?

    total4c
    @total4c
    Говнокодер
    Но я не знаю как нажимать на кнопки или делать для этого запросы.

    Selenium
    Ответ написан
    Комментировать
  • Нужно получить ссылку сайта после запроса, но как?

    SoreMix
    @SoreMix Куратор тега Python
    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

    Ответ написан
    Комментировать
  • Как убрать запятые в ответе?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    result = genkinv(n,k)
    print (' '.join(str(c) for c in result))
    Ответ написан
    3 комментария
  • Как прикрутить анимацию к навигации?

    @Lord_Dantes
    В чем проблема?
    Сначало у элемента border-bottom: solid 1px #fff;
    При наведении background:#fff; transition: all 300ms;
    Ответ написан
    3 комментария
  • Как прикрутить анимацию к навигации?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    https://jsfiddle.net/ueqm2xk7/
    За анимацию отвечает свойство transition
    Ответ написан
    1 комментарий
  • Как конвертировать get форму в url?

    tumbler
    @tumbler Куратор тега Python
    бекенд-разработчик на python
    1 комментарий
  • Как конвертировать get форму в url?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    import lxml.html
    from urllib.parse import urlencode
    
    
    form = '''<form action="" method="get">
                <input type="hidden" name="sr_angle" value="0"><input type="hidden" name="sr_back" value="clanRace">
    <input type="hidden" name="sr_car_id" value="1009752498"><input type="hidden" name="sr_cid" value="585502"><input type="hidden" name="sr_color" value="0"><input type="hidden" name="sr_counter" value="0"><input type="hidden" name="sr_cur_time" value="1590859609"><input type="hidden" name="sr_dx" value="0"><input type="hidden" name="sr_dy" value="-30"><input type="hidden" name="sr_dz" value="1"><input type="hidden" name="sr_fid" value="449701"><input type="hidden" name="sr_filename" value="cartemp/paint_1009847110_1590857777.png"><input type="hidden" name="sr_item_id" value="194"><input type="hidden" name="sr_method" value="clanRace"><input type="hidden" name="sr_noshop" value="0"><input type="hidden" name="sr_return_method" value="map"><input type="hidden" name="sr_scale" value="100"><input type="hidden" name="sr_session_ttl" value="1590860958"><input type="hidden" name="sr_tab" value="aero"><input type="hidden" name="sr_time" value="40"><input type="hidden" name="sr_trycount" value="1070"><input type="hidden" name="sr_ttl" value="308728"><input type="hidden" name="sr_type" value="c"><input type="hidden" name="app_id" value="598747"><input type="hidden" name="authentication_key" value="5b45d57407776dc8eb4eac04f1678b8b"><input type="hidden" name="ext_perm" value="notifications,emails,payments"><input type="hidden" name="is_app_user" value="1"><input type="hidden" name="mobile_spec" value="smartphone"><input type="hidden" name="oid" value="6315664031247459922"><input type="hidden" name="referer_type" value="wo_ref"><input type="hidden" name="session_expire" value="1590940652"><input type="hidden" name="session_key" value="7792507ad9cc27456b9e3a42c3838b2a"><input type="hidden" name="sig" value="500e5f41125b1116ff3a103e2865a3d3"><input type="hidden" name="vid" value="6315664031247459922"><input type="hidden" name="view" value="app_mobile"><input type="hidden" name="window_id" value="CometName_2f24b508c59c828a58e1ea8da53f8685"><input type="hidden" name="sr_sig" value="9f0be65f9207dcf0a23a60d33f8038f5">
                                <button type="submit" class="b-button b-bn-nr-41-btn" id="" onclick="return blockSubmit();">Гонка</button>
                        </form>'''
    
    
    root = lxml.html.fromstring(form)
    
    data = {}
    for el in root.xpath('.//input'):
        data[el.get('name')] = el.get('value')
    
    qstr = urlencode(data)
    print(f'site.ru/index.php?{qstr}')


    site.ru/index.php?sr_angle=0&sr_back=clanRace&sr_car_id=1009752498&sr_cid=585502&sr_color=0&sr_counter=0&sr_cur_time=1590859609&sr_dx=0&sr_dy=-30&sr_dz=1&sr_fid=449701&sr_filename=cartemp%2Fpaint_1009847110_1590857777.png&sr_item_id=194&sr_method=clanRace&sr_noshop=0&sr_return_method=map&sr_scale=100&sr_session_ttl=1590860958&sr_tab=aero&sr_time=40&sr_trycount=1070&sr_ttl=308728&sr_type=c&app_id=598747&authentication_key=5b45d57407776dc8eb4eac04f1678b8b&ext_perm=notifications%2Cemails%2Cpayments&is_app_user=1&mobile_spec=smartphone&oid=6315664031247459922&referer_type=wo_ref&session_expire=1590940652&session_key=7792507ad9cc27456b9e3a42c3838b2a&sig=500e5f41125b1116ff3a103e2865a3d3&vid=6315664031247459922&view=app_mobile&window_id=CometName_2f24b508c59c828a58e1ea8da53f8685&sr_sig=9f0be65f9207dcf0a23a60d33f8038f5
    Ответ написан
    Комментировать
  • Есть плагин для БУРГЕР меню?

    @udzumaki
    https://jonsuh.com/hamburgers/

    Эти меню почти везде юзают.
    Ещё там на сайте есть скрипт для инициализации. Я его сначала не заметил и так пару дней промучался.

    $(
     var $hamburger = $(".hamburger");
      $hamburger.on("click", function(e) {
        $hamburger.toggleClass("is-active");
      });
    )
    Ответ написан
    1 комментарий
  • Как сделать смену стилей CSS в зависимости от времени суток с помощью JS?

    @granty
    Менять CSS сайта по времени суток не имеет никакой практической пользы, эта устаревшая мулька использовалась 12 лет назад.
    Сейчас можно делать смену CSS по датчику внешнего освещения смартфона (Ambient light sensor), чтобы при низкой освещённости давать более светлый дизайн (или, наоборот, более тёмный, чтобы не слепил глаза).

    Но если так хочется менять CSS по времени суток - этот запрос в Яндексе полностью даст ответ на ваш вопрос.
    Ответ написан
    Комментировать
  • Есть плагин для БУРГЕР меню?

    ArsenyMatytsyn
    @ArsenyMatytsyn Куратор тега CSS
    Руководитель frontend направления, предприниматель
    Если ОБЫЧНО пишешь САМ, то также можно использовать ПОВТОРНО.
    Удивительно, но это работает.
    Ответ написан
    Комментировать
  • Проблема при парсинге ссылок?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Это похоже на base64
    >>> import base64
    >>> base64.b64decode('MmticHMlMjkubXAz1aHR9UaGUlMjBMaW0cHM4MC9maWxlcy9uLnByby9LnNlZm2jZG4Ly9wcmV6LzE50iYSUyMCUyNiUyMEFuZHJvJTIwLSUyMFguTyUyMCU')
    b'2kbps%29.mp3\xd5\xa1\xd1\xf5F\x86RS#\x04\xc6\x96\xd1\xc1\xcc\xe0\xc0\xbd\x99\xa5\xb1\x95\xcc\xbd\xb8\xb9\xc1\xc9\xbc\xbd.sefm\xa3dn\x0b\xcb\xdc\x1c\x99^\x8b\xccNt\x89\x84\x94\xc8\xc0\x94\xc8\xd8\x94\xc8\xc1\x05\xb9\x91\xc9\xbc\x94\xc8\xc0\xb4\x94\xc8\xc1`\xb9<\x94\xc8\xc0\x94'


    Я уже облазил весь гугл и так не нашёл решение этой проблемы.

    А разгадка не в гугле - а в самом коде:
    5ed2d87a898c3588935048.png
    Там действительно base64 только немного "испорченная" по хитрому алгоритму.
    Деталей алгоритма приводить не буду - тут не хакерский форум.
    Ответ написан
    2 комментария
  • Как получить посты с чужих телеграмм каналов?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Вам нужна библиотека Telethon, гайдов по тому, как с ней взаимодействовать и получать посты из каналов/групп полным-полно. Естественно для этого нужно, что бы аккунт, который вы будете использовать, был в этих группах/каналах.
    Ответ написан
    1 комментарий
  • Как реализовать оптимальную расстановку расписания занятий в уч. заведении?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Ну, это задача из теории расписаний - тема кандидатских и докторских диссертаций.

    Рядом еще болтается задача поиска оптимальных пар - за нее вообще дали нобелевку по экономике
    Ответ написан
    Комментировать
  • Почему не работает css эффект?

    @ivansedov
    Проблема в том, что вы используете background-color: rgba(233, 85, 49, 0.1);
    Нужно было заменить rgba на hex
    https://jsfiddle.net/3vceq47k/
    Ответ написан
    5 комментариев
  • Конкатенация PHP и HTML?

    megakor
    @megakor
    Go/PHP developer | Вконтакте
    '<div class="box_img"'. 'style="background: url("'

    поменять на

    '<div class="box_img" style="background: url("'
    Ответ написан
    Комментировать
  • Selenium Python. Как спарсить значения ссылок с одинаковым классом?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions
    
    
    driver.get('https://rublix.best/')
    history_xpath = './/div[@class="history-wrapper"]//div'
    WebDriverWait(driver=driver, timeout=15).until(
        expected_conditions.presence_of_element_located((By.XPATH, history_xpath))
    )
    for elem in driver.find_elements_by_xpath(history_xpath):
        print(elem.get_attribute('textContent'))

    Вывод:
    1.22
    1.52
    4.94
    4.25
    3.26
    1.71
    12.16
    1.56
    1.30
    1.18
    2.58
    1.46
    1.91
    1.17
    4.63
    5.01
    0
    1.44
    7.05
    Ответ написан
    5 комментариев
  • Как переиспользовать div navigation на всех страницах?

    ArsenyMatytsyn
    @ArsenyMatytsyn Куратор тега CSS
    Руководитель frontend направления, предприниматель
    Нус в общем Роман ответил в комментариях по делу, разве что я бы порекомендовал проверять подстроку, так как request.path может содержать вложенную директорию, к примеру, а проверка в духе if '/' in request.path (не помню точно, умеет ли в такие проверки Jinja2, но если что можно функцию набросать).

    Но тут будет другая проблема, что есть пути частично совпадают, тогда проверка будет провдена в обоих случаях, поэтому ИМХО, лучше поднимать из шаблона, который наследует или прямо из функции, которая запускает рендер идентификатор, проверка которого и будет в шаблоне в этой навигации.

    Скажем в роутах:
    ...
    render_template('template', current='home')

    И в самих шаблонах:
    <nav class="navigation block">
        <a class="nav-link {% if current == 'home' %}active{% endif %}" href="/">Главная</a>
    Ответ написан
    Комментировать