38650b5671
Reviewed-on: #410 Co-authored-by: miteruzo <miteruzo@naver.com> Co-committed-by: miteruzo <miteruzo@naver.com>
65 行
2.9 KiB
Ruby
65 行
2.9 KiB
Ruby
# This file should ensure the existence of records required to run the application in every environment (production,
|
|
# development, test). The code here should be idempotent so that it can be executed at any point in every environment.
|
|
# The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup).
|
|
#
|
|
# Example:
|
|
#
|
|
# ["Action", "Comedy", "Drama", "Horror"].each do |genre_name|
|
|
# MovieGenre.find_or_create_by!(name: genre_name)
|
|
# end
|
|
|
|
post_url_sanitisation_rules = [
|
|
{ priority: 10,
|
|
source_pattern: '\Ahttps?://youtu\.be/([^/?#]+)(?:[?#].*)?\z',
|
|
replacement: 'https://www.youtube.com/watch?v=\1' },
|
|
{ priority: 20,
|
|
source_pattern: '\Ahttps?://(?:www\.|m\.)?youtube\.com/live/([^/?#]+)(?:[?#].*)?\z',
|
|
replacement: 'https://www.youtube.com/watch?v=\1' },
|
|
{ priority: 30,
|
|
source_pattern: '\Ahttps?://(?:www\.|m\.)?youtube\.com/shorts/([^/?#]+)(?:[?#].*)?\z',
|
|
replacement: 'https://www.youtube.com/watch?v=\1' },
|
|
{ priority: 40,
|
|
source_pattern: '\Ahttps?://(?:www\.|m\.)?youtube\.com/embed/([^/?#]+)(?:[?#].*)?\z',
|
|
replacement: 'https://www.youtube.com/watch?v=\1' },
|
|
{ priority: 50,
|
|
source_pattern:
|
|
'\Ahttps?://(?:www\.|m\.)?youtube\.com/watch\?(?:[^#&]+&)*v=([^&#]+)(?:[&#].*)?\z',
|
|
replacement: 'https://www.youtube.com/watch?v=\1' },
|
|
{ priority: 60,
|
|
source_pattern: '\Ahttps?://nico\.ms/([^/?#]+)(?:[?#].*)?\z',
|
|
replacement: 'https://www.nicovideo.jp/watch/\1' },
|
|
{ priority: 70,
|
|
source_pattern: '\Ahttps?://(?:www\.)?nicovideo\.jp/watch/([^?#/]+)(?:[?#].*)?\z',
|
|
replacement: 'https://www.nicovideo.jp/watch/\1' }
|
|
]
|
|
|
|
post_url_sanitisation_rule_scope = PostUrlSanitisationRule.unscoped
|
|
|
|
post_url_sanitisation_rules.each do |attributes|
|
|
priority = attributes.fetch(:priority)
|
|
source_pattern = attributes.fetch(:source_pattern)
|
|
|
|
next if post_url_sanitisation_rule_scope.exists?(priority:)
|
|
next if post_url_sanitisation_rule_scope.exists?(source_pattern:)
|
|
|
|
post_url_sanitisation_rule_scope.create!(attributes)
|
|
end
|
|
|
|
material_sync_source_uri = ENV['MATERIAL_SYNC_SOURCE_URI']
|
|
material_sync_source_file_id = ENV['MATERIAL_SYNC_SOURCE_FILE_ID']
|
|
|
|
if material_sync_source_uri.present? || material_sync_source_file_id.present?
|
|
source = MaterialSyncSource.find_or_initialize_by(
|
|
name: ENV.fetch('MATERIAL_SYNC_SOURCE_NAME', 'Legacy URI material sync'))
|
|
source.assign_attributes(
|
|
source_kind: ENV.fetch('MATERIAL_SYNC_SOURCE_KIND', 'uri'),
|
|
source_uri: material_sync_source_uri,
|
|
source_path: ENV['MATERIAL_SYNC_SOURCE_PATH'],
|
|
source_file_id: material_sync_source_file_id,
|
|
profile: ENV.fetch('MATERIAL_SYNC_SOURCE_PROFILE', 'legacy_drive'),
|
|
enabled: ENV.fetch('MATERIAL_SYNC_SOURCE_ENABLED', 'true') != 'false',
|
|
default_tag_name: ENV['MATERIAL_SYNC_SOURCE_TAG_NAME'],
|
|
export_path_prefix: ENV['MATERIAL_SYNC_EXPORT_PATH_PREFIX'])
|
|
source.save!
|
|
end
|