강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

김충환님의 프로필 이미지
김충환

작성한 질문수

코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드

유튜브 자막으로 AI에게 질문하자: N8N + Pinecone으로 RAG 만들기

26강 Code에서 Python 문의

해결된 질문

작성

·

15

0

안녕하세요 선생님... 연휴는 잘 보내셨는지요?

다름아니라 26강에서 code node에 입력하는 Python 전체 문장 받아볼 수 있을까요?

처음 파이션을 접하다보니 몇차례 작성해 보았는데 자꾸 오류가 나서요.

이메일로 보내 주셔서 좋고요...

부탁드립니다.

답변 2

0

남박사님의 프로필 이미지
남박사
지식공유자

안녕하세요, 충환님.

저는 뭐 별 탈 없이 잘 지냈고 잘 쉬기도 했습니다. 충환님도 잘 지내셨는지요?

 

image.png

말씀하신 코드는 강의 재생중 하단에 보면 위와 같이 자료 다운로드 버튼을 볼 수 있는데 해당 강의의 수업자료를 다운로드 하시면 JSON 파일이 하나 다운로드 됩니다.

 

image.png

다운로드 한 파일을 n8n 우측 메뉴의 Import from File을 통해서 불러오실 수 있습니다. 그러면 강의에 사용한 워크플로우 전체를 확인 하실 수 있고 해당 노드의 코드 또한 확인하실 수 있습니다. 강의에 사용된 모든 워크플로우를 이런식으로 제공하고 있으니 참고하시길 바랍니다. 일단 코드는 아래 따로 올려드리긴 하겠습니다.

 

import urllib.request
import urllib.error
import re
import json

def get_channel_videos(html):
    # HTML에서 ytInitialData JSON 객체 추출
    m = re.search(r"var ytInitialData = ({.*?});", html)
    if not m:
        m = re.search(r"window\['ytInitialData'\] = ({.*?});", html)
    if not m:
        print("ytInitialData를 찾을 수 없습니다.")
        return []
    
    try:
        initial_data = json.loads(m.group(1))
    except Exception as e:
        print("JSON 파싱 에러:", e)
        return []
    
    videos = []
    try:
        tabs = initial_data["contents"]["twoColumnBrowseResultsRenderer"]["tabs"]
        for tab in tabs:
            tab_renderer = tab.get("tabRenderer")
            if not tab_renderer:
                continue
            
            # 'Videos' 혹은 '동영상' 탭을 찾음
            title = tab_renderer.get("title", "").lower()
            if title not in ("videos", "동영상"):
                continue
            
            content = tab_renderer.get("content", {})
            # 두 가지 렌더러를 지원: sectionListRenderer와 richGridRenderer
            section_list = []
            if "sectionListRenderer" in content:
                section_list = content["sectionListRenderer"].get("contents", [])
            elif "richGridRenderer" in content:
                section_list = content["richGridRenderer"].get("contents", [])
            else:
                print("동영상 섹션 정보를 찾을 수 없습니다.")
                return []
            
            for section in section_list:
                # sectionListRenderer의 경우
                if "itemSectionRenderer" in section:
                    items = section["itemSectionRenderer"].get("contents", [])
                # richGridRenderer의 경우
                elif "richItemRenderer" in section:
                    # richItemRenderer 안에 content에 videoRenderer가 포함됨
                    items = [section["richItemRenderer"].get("content", {})]
                else:
                    continue

                for item in items:
                    video_renderer = None
                    if "gridVideoRenderer" in item:
                        video_renderer = item["gridVideoRenderer"]
                    elif "videoRenderer" in item:
                        video_renderer = item["videoRenderer"]
                    
                    if video_renderer:
                        video_id = video_renderer.get("videoId")
                        title_runs = video_renderer.get("title", {}).get("runs", [])
                        video_title = title_runs[0]["text"] if title_runs else ""
                        video_url = f"https://www.youtube.com/watch?v={video_id}" if video_id else None
                        videos.append({
                            "id": video_id,
                            "title": video_title,
                            "url": video_url
                        })
            break  # 동영상 탭을 찾았으면 더 이상 반복하지 않음
    except Exception as e:
        print("동영상 데이터 파싱 중 에러 발생:", e)
        return []
    
    return videos
  
html = _input.item.json.data
videos = get_channel_videos(html)
youtube_url = _('Edit Fields').item.json.youtube_url
return {
  "url": youtube_url,
  "videos": videos
}

 

 

0

안녕하세요, 인프런 AI 인턴입니다. 김충환님.

n8n 강의에서 Python 코드를 처음 접하셨군요. Python 코드 작성이 익숙하지 않으셔서 오류가 발생하고 있는 것 같습니다. 이 문제를 해결하기 위해 지식공유자가 제공하는 강의에서의 Python 코드를 직접 참조하시거나, 기존에 유사한 질문이 있었을 수 있으니 커뮤니티에서 해당 질문들을 찾아보시는 것이 좋을 것 같습니다.

우선 아래와 같은 자료를 참고해보실 것을 권장합니다:

  1. 강의 자료에서 해당 Python 코드 관련 내용을 다시 한번 검토해 보세요. 강의 영상에서 코드 입력 부분을 반복해서 보시며 이해를 돕기 위해 댓글이나 질문 게시판을 통해 오류 메시지를 질문해 보실 수 있습니다.

  2. 인프런의 질문 게시판을 통해, 코드 오류 관련 유사 질문이 있는지 확인하시면 도움이 될 수 있습니다.

관련된 유사 질문이나 자료를 찾을 수 있는 커뮤니티 링크:
- 코딩 관련 질문 및 답변 섹션

안타깝게도 구체적인 코드 제공은 저작권과 지식공유자의 강의 가치를 위해 직접적으로 제공하기 어려운 점 양해 부탁드립니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점도 이해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김충환님의 프로필 이미지
김충환

작성한 질문수

질문하기