Наличие ошибок отступа

#python #python-3.x

#python #python-3.x

Вопрос:

Моя проблема заключается в следующем коде здесь:

 import wget
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import json
import codecs
import os
import os.path
import pyautogui
import pyperclip
import time
import datetime

chrome_options = Options()
chrome_options.add_argument("--headless")
browser = webdriver.Chrome(options=chrome_options)
url = "https://www.youtube.com/channel/UC1M9tgEZqKMihgnYO33GvTQ/videos"

browser.get(url)
video = browser.find_element_by_xpath('//*[@id="video-title"]')
video_title = str(video.text)
with open('data.json', 'r') as f:
    data = json.load(f)
    past_title = data["title"]

if past_title == video_title:
    print("Don't post")
    l_updated=data["last_updated"]
    print("Lastest video upload was on "   l_updated)
else: 
    video.click()

    video_link = str(browser.current_url)
    video_id = video_link.split("=", 1)[1]
browser.quit()
group = ['100003333789620']

time.sleep(5)

pyautogui.keyDown('ctrl')
pyautogui.keyDown('t')
pyautogui.keyUp('t')
pyautogui.keyUp('ctrl')

for i in range(len(group)):
    link = 'https://www.facebook.com/messages/t/' group[i]
    pyautogui.typewrite(link)
    pyautogui.typewrite('n')

    print("Waiting for 10 secondsn")
    time.sleep(10)

    pyautogui.moveTo(2034, 699, 4)
    pyautogui.click()
    time.sleep(2)
    print("Writing message about the new uploaded lecturen")
    pyperclip.copy("Христо's Bot reporting for duty! Новата лекция е качена тук "  video_link)
    pyautogui.hotkey("ctrl", "v")
    time.sleep(4)

    pyautogui.keyDown('enter')
    pyautogui.keyUp('enter')
    print("Message was successfully sent!")
    time.sleep(2)

    pyautogui.keyDown('ctrl')
    pyautogui.keyDown('w')
    pyautogui.keyUp('w')
    pyautogui.keyUp('ctrl')
    print("Closing the tab now and storing data!")



data["title"]=video_title
data["last_updated"]=str(datetime.date.today())
with open("data.json","w") as f:
    json.dump(data, f)
time.sleep(5)
  

Проблема в том, что я хочу поместить все после video_link = str(browser.current_url) video_id = video_link.split("=", 1)[1] в оператор else, но я продолжаю получать ошибки отступа. Код работает, но он не проверяет, существует ли заголовок видео в файле json (я попытался закодировать его в utf-8, потому что заголовки видео написаны кириллицей. Он кодирует его, но по какой-то странной причине не хочет читать из него, и он выдал некоторую ошибку charmap, которую я не смог исправить)

Комментарии:

1. charmap — это тип кодировщика. Вы должны это изменить. Я думаю, вам не удалось изменить его на utf-8

2. Можете ли вы отправить полное сообщение об ошибке, пожалуйста?

3. Что касается вашего отступа, вы смешиваете табуляции и пробелы. Используйте правильную среду разработки, которая преобразует это для вас. Такая среда разработки также сообщит вам, что вы используете video_link , но вы определили link только.

4. Попробуйте PyCharm jetbrains.com/de-de/pycharm/download/#section=windows

5. Ошибка сопоставления символов была следующей: «Кодек ‘charmap’ не может декодировать байт 0x90 в позиции 20: сопоставление символов с <undefined>»

Ответ №1:

Быстрое обновление!

Мне удалось исправить это следующим образом

 with open("data.json", "w", encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False)
  

И

 with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
  

Я, вероятно, слишком много думал об этом.
PyCharm также исправил отступы.

Спасибо за всю помощь, ребята!