#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 также исправил отступы.
Спасибо за всю помощь, ребята!