[Rails] 유튜브 URL을 내장형 클래스로 변환
https://www.youtube.com/watch?v=動画ID
https://www.youtube.com/watch?v=動画ID&t=120
(시간 지정 포함)https://youtu.be/動画ID
https://www.youtube.com/embed/動画ID
따라서 우리는 '시청각 URL', '공유 URL', '끼워넣는 iframe 탭' 중 어느 것이든 '끼워넣는 URL' 으로 변환하는 클래스를 만들었다.
lib/autoloads/youtube_url_formatter.rb
class YoutubeUrlFormatter
# iframe タグの src 属性のURLを取得するための正規表現
SRC_REGEX = /src\s*=\s*"([^"]*)"/
# URL から 動画ID を取得するための正規表現(時刻指定は除去)
YOUTUBE_ID_REGEX = %r{\A(?:http(?:s)?://)?(?:www\.)?(?:m\.)?(?:youtu\.be/|youtube\.com/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)/))([^?&"'>]+)(&t=.*)?\z}
def self.format(url)
# YouTube の埋め込み用 iframe である場合は src 属性のURLに置き換える
src_match = SRC_REGEX.match(url)
url = src_match[1] if src_match
# YouTube の動画である場合は 埋め込み用URL を戻り値とする
# そうでない場合は nil を返す
youtube_id_match = YOUTUBE_ID_REGEX.match(url)
if youtube_id_match
"https://www.youtube.com/embed/#{youtube_id_match[1]}"
end
end
end
예를 들어 모델에 다음과 같은 것을 준비하면 자동으로 변환하여 저장할 수 있다. before_save do
format_url = YoutubeUrlFormatter.format(url)
if format_url.present?
self.url = format_url
else
self.errors.add(:url, "YouTubeのURL以外は無効です")
end
end
Reference
이 문제에 관하여([Rails] 유튜브 URL을 내장형 클래스로 변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/take18k_tech/articles/0a8c72db856c3a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)