Dlna сервер для linux debian / ubuntu на базе minidlna

Настройте сервер miniDLNA

Этот сервер DLNA настраивается через один файл конфигурации, который нам придется редактировать, поэтому его настройка и запуск намного проще, так как нам не придется редактировать несколько, только один. Для его редактирования мы будем использовать любой текстовый редактор, обычно используется vim или nano, в нашем случае мы будем использовать nano.

В самом файле конфигурации у нас будет вся необходимая документация для запуска сервера DLNA, но в этой статье мы подробно объясним, как его настроить, так как он на английском языке

Важной деталью является то, что у нас доступна справочная страница (мануал) медиасервера miniDLNA, следовательно, мы можем получить больше информации о работе

Первое, чему мы должны научиться, это загружать источники мультимедийного контента, в зависимости от того, есть ли у нас видео, аудио или фотографии, синтаксис будет следующим:

media_dir = P, /home/bron/media/photos

media_dir = V, / главная / броня / мультимедиа / видео

Как видите, если мы хотим загрузить «A» — это аудио, P — это фотографии, а V — видео, таким образом, оно будет выглядеть идеально классифицированным на телевидении. Если мы хотим, чтобы видео и фотографии появлялись, мы также можем это сделать, что идеально подходит для камер, которые также записывают видео:

Еще одна фраза, которую мы должны настроить, — это место хранения базы данных DLNA, в данном случае это делается путем раскомментирования следующей строки:

То же самое происходит с каталогом журналов или записей, в случае возникновения какой-либо ошибки:

Остальные параметры конфигурации можно оставить такими:

friendly_name = сервер DLNA

уведомить = да

уведомить_интервал = 30

У нас есть все операторы, уже записанные в файле конфигурации, но они закомментированы, поэтому мы должны раскомментировать их, чтобы они были активированы. После того, как мы настроили его, мы сохраняем файл конфигурации и приступаем к перезапуску сервера DLNA, чтобы он правильно применил изменения.

После того, как мы все это сделали, мы можем получить доступ к нашему телевизору или смартфону и протестировать медиа-сервер DLNA.

Jellyfin

Image Credit: Jellyfin

Plex is great, but while parts of the service are free to use, you’re not free to view the code and do with it what you wish. This limits what you can do with the service, and it means that you have to trust that Plex isn’t amassing data about you in the background.

That’s a hard pill for many Linux users to swallow. Jellyfin is a free and open source Plex alternative for Linux and other operating systems.

Jellyfin is actually a fork of Emby. This means the functionality is largely the same up until the point where Emby became a proprietary project with secretive source code. If you were only using Emby because it was an open source project, Jellyfin may just be your new go-to media server.

The downside? Jellyfin doesn’t yet have client apps for as many platforms.

Best for: People who want a free software Plex alternative

Подключение жесткого диска

Предварительно нужно, чтобы медиа-жесткий диск был установлен при запуске. Для этого убеждаются, что он подключен к USB-концентратору с питанием, иначе это может вызвать проблемы при установке. После того как это выполнено, возвращаются к SSH-клиенту, который используется, и вводят: sudo fdisk –l.

Перед тем как запустить MiniDLNA, нужно будет узнать имя диска и его формат, чтобы медианакопитель монтировался при запуске и пользователь мог получить доступ к его содержимому. Для этого нужно будет создать папку для установки, используя следующую команду: sudo mkdir / media / HDD.

Эта команда создает папку с именем HDD в медиакаталоге, после чего нужно дать ей права на чтение, используя следующую команду:

sudo chmod 777/media/HDD.

Эта командная строка сообщает папке HDD, что у нее есть все разрешения, что означает, что у него есть права на чтение и запись, которые нужны пользователю. После чего редактируют MiniDLNA файл конфигурации fstab и помещают медиа-диск в этот файл, используя команду:

sudo nano / etc / fstab.

Для управления пользователю необходимо использовать клавиши со стрелками для навигации, перейти к концу, и добавить эту строку: / dev / sda1 / media / HDD vfat по умолчанию 0, 2.

В первой части / dev / sda1 — это имя жесткого диска, который нужно добавить, в этом случае это fat32. И, наконец, 0 и 2 в конце — это разрешения.Теперь переходят в каталог / медиа / жесткий диск: cd / media / HDD и запускают команду: Ls.

Настройка Plex Media Server в Ubuntu 20.04

Для начала необходимо создать директории, в которых будет храниться медиабиблиотека. Храниться медиа файлы будут в каталоге /opt/plexmedia, но можно выбрать другой путь:

Так же необходимо сделать владельцам всех созданных ранее каталогов пользователя plex:

У медиа сервера нет привычного графического интерфейса, однако есть удобный веб-интерфейс, с помощью которого можно подключаться к нему удаленно. Для доступа в веб-интерфейс необходимо открыть браузер и набрать следующий URL:

http://ip_адрес_сервера:32400/web/

Если установка Plex была произведена на локальную машину, то необходимо использовать адрес localhost:

http://localhost:32400/web/

На первом шаге настройки Plex предложит авторизоваться в интерфейсе с помощью аккаунта Google, Facebook или адреса электронной почты. Необходимо выбрать один из способов:

Далее будет краткое описание возможностей сервиса и реклама платной подписки:

Следующим пунктом идёт настройка. Сначала необходимо задать имя (или оставить имя по умолчанию) для сервера plex и выбрать нужно ли разрешать подключения к серверу не только из локальной сети:

На следующем шаге необходимо добавить директории, из которых программа будет брать медиа файлы. Каждую библиотеку нужно добавлять отдельно. Можно добавить директории с сериалами, фильмами, фотографиями или просто видео.

На следующей странице необходимо выбрать тип библиотеки и ввести её имя:

Далее выберите путь к ранее созданной папке:

Когда папка будет выбрана, нажмите на кнопку ADD.

Аналогичным образом, вы можете добавить несколько библиотек:

На последнем шаге веб-интерфейс предлагает скачать приложение для других устройств (включая смартфоны), которым можно будет пользоваться для доступа к данным.

После того, как файлы будут добавлены в ранее настроенные папки, видео появятся в интерфейсе программы:

Для запуска проигрывания необходимо кликнуть по медиа файлу. Также можно открыть видео на весь экран, для этого необходимо кликнуть по нему на полосе воспроизведения:

Для сворачивания назад необходимо кликнуть по стрелочке вниз, которая находится в левом верхнем углу.

Emby

Emby — это мощный и простой в использовании кроссплатформенный медиасервер. Простая установка медиасервера Emby позволяет использовать его под управлением Linux, FreeBSD, Windows, MacOS или на NAS. Также можно загрузить приложение Emby на Android, iOS, Windows, кроме этого можно запустить веб-клиент из браузера или использовать приложение Emby TV.

Он поможет управлять личной медиатекой, такой как видео, музыка, фотографии и многие другие медиаформаты.

Особенности Emby:

  • Красивый пользовательский интерфейс с поддержкой мобильной синхронизации и облачной синхронизации.
  • Мощные веб-инструменты для управления медиафайлами.
  • Поддержка родительского контроля.
  • Автоматически обнаружение устройств DLNA.
  • Дает возможность легко транслировать видео, музыку, изображения, прямые телепередачи в Chromecast.
  • И многое другое.

Установка Emby в Linux

Чтобы установить Emby в дистрибутивах Ubuntu, Fedora и CentOS, перейдите в раздел Download Emby и выберите свой дистрибутив Linux для загрузки пакета .DEB или .RPM и установите его с помощью диспетчера пакетов по умолчанию.

6. Гербера

Gerbera — это программный вариант медиа-сервера, созданный на основе MediaTomb. Это сервер UPnP для потоковой передачи по домашней сети Linux и других платформ. В отличие от опций сервера, таких как Plex, Emby, Madsonic и Subsonic, Gerbera ограничен потоковой передачей в домашних условиях.

Gerbera поддерживает транскодирование мультимедиа на лету и может передавать данные клиентам, работающим на мобильных устройствах. Множество устройств совместимо с UPnP, таких как игровые приставки и устройства с XBMC.

Однако Gebera не заменяет удаленный медиа-сервер Linux. Если вам нужны ваши медиа на ходу, выберите другой вариант. Тем не менее, Gerbera — это легкая, интуитивно понятная программная опция для медиасервера UPnP для Linux.

Подходит для: потоковой передачи в домашних условиях с использованием UPnP.

Мультимедийный сервер: MiniDLNA + VLC

Что такое медиа-сервер?

Un «Мультимедийный сервер» это не что иное, как сетевое устройство, на котором хранятся мультимедийные файлы. Это устройство может быть от надежного сервера или простого настольного или портативного компьютера. Это также может быть диск NAS (сетевые накопители) или другое совместимое запоминающее устройство.

Важно помнить, что для Dispositivo de repliccción может общаться с «Мультимедийный сервер», он обычно должен быть совместим с одним из двух существующих стандартов. Одним из них является DLNA, который гарантирует, что устройства домашней сети могут обмениваться мультимедийным контентом и обмениваться данными

А другой UPnP (универсальный Plug and Play), который является более общим решением для совместного использования медиа-сервером и совместимым воспроизводящим устройством. Кроме того, DLNA является развитием UPnP, более универсальна и проста в использовании

Одним из них является DLNA, который гарантирует, что устройства домашней сети могут обмениваться мультимедийным контентом и обмениваться данными. А другой UPnP (универсальный Plug and Play), который является более общим решением для совместного использования медиа-сервером и совместимым воспроизводящим устройством. Кроме того, DLNA является развитием UPnP, более универсальна и проста в использовании.

Как установить и настроить MiniDLNA?

Пакет, содержащий МиниDLNA звонил почти во все репозитории «Минидлна», поэтому все, что вам нужно сделать, это выбрать и использовать Менеджер пакетов GUI / CLI предпочтительнее установить и включить как обычно. Например:

После установки необходимо сделать только следующее командные приказы и небольшие изменения в вашем Файл конфигурации а потом беги так, чтобы любой Компьютер с GNU / Linux стать маленьким и простым «Мультимедийный сервер»:

пробег

Сделайте следующие изменения. В моем практическом случае я сделал следующее:

Назначьте папки / пути мультимедийного содержимого

Включить путь к хранилищу базы данных DLNA

Включить путь к каталогу журналов

Проверить / включить назначенный порт для протокола DLNA

Установить имя сервера мультимедиа DLNA

Включить автоматическое обнаружение новых файлов в путях и папках с мультимедийным содержимым

Настройте интервал уведомления SSDP в секундах

Сохраните изменения и перезапустите MiniDLNA Media Server.

Локально проверьте работу мультимедийного сервера с помощью веб-браузера, используя URL-адрес

Теперь осталось только скопировать файлы мультимедиа в настроенные маршруты / папки. И если все прошло хорошо, они будут видны локально через интерфейс используемого веб-браузера.

Управляйте контентом DLNA / UPnP-AV с помощью VLC из Android

Отныне, например, на Мобильное устройство Android и запуск Приложение VLC, через несколько секунд он появится в разделе под названием «Локальная сеть» имя нашего «Мультимедийный сервер». И мы можем исследовать настроенные маршруты / папки и воспроизводить размещенный мультимедийный контент.

Настройте правила брандмауэра

Теперь, когда у вас установлен и запущен Plex на вашем сервере, вам нужно убедиться, что ваш брандмауэр настроен на разрешение трафика на определенных портах Plex Media Server.

Если в вашей системе не запущен брандмауэр, вы можете пропустить этот раздел.

Следующие шаги предполагают, что вы используете для управления брандмауэром:

Откройте нужный текстовый редактор и создайте следующий профиль приложения UFW:

/etc/ufw/applications.d/plexmediaserver

Сохраните файл и обновите список профилей:

Примените новые правила брандмауэра, набрав:

Наконец, проверьте, успешно ли применяются новые правила брандмауэра:

Tips

If you have a decent size music library, you will more than likely find building the minidlna database on your OpenWrt device extremely slow or impossible due to RAM constraints.
The solution is to build the minidlna database on a Linux PC.

# Create a directory on your OpenWrt hard or flash drive to hold the minidlna log and database files
mkdir mnthddminidlna
 
# Configure minidlna to put database and log file on the hard or flash drive connected to your OpenWrt device
uci set [email protected]="0"
uci set [email protected]_dir="/mnt/hdd/minidlna"
uci set [email protected]_dir="/mnt/hdd/minidlna"
uci add_list [email protected]_dir="A,/mnt/hdd/media"
uci commit minidlna
 
# Create a minidlna configuration file on the hard or flash drive connected to your OpenWrt device
cat << EOF > cp_minidlna_conf.sh
#!/bin/sh
 
source libfunctions.sh
 
minidlna_cfg_append() {
	echo "$1" 
}
 
minidlna_cfg_addbool() {
	local cfg="$1"
	local key="$2"
	local def="$3"
	local val
 
	config_get_bool val "$cfg" "$key" "$def"
	 "$val" -gt   && val="yes" || val="no"
	minidlna_cfg_append "$key=$val"
}
 
minidlna_cfg_addstr() {
	local cfg="$1"
	local key="$2"
	local def="$3"
	local val
 
	config_get val "$cfg" "$key" "$def"
	 -n "$val"  && minidlna_cfg_append "$key=$val"
}
 
minidlna_cfg_add_media_dir() {
	local val="$1"
 
	minidlna_cfg_append "media_dir=$val"
}
 
minidlna_create_config() {
	local cfg="$1"
	local port
	local interface
 
	config_get port "$cfg" port
	config_get interface "$cfg" interface
 
	 -z "$interface" -o -t "$port"  && return 1
 
	echo "# this file is generated automatically, don't edit" 
 
	minidlna_cfg_append "port=$port"
	minidlna_cfg_append "network_interface=$interface"
 
	minidlna_cfg_addstr "$cfg" friendly_name
	minidlna_cfg_addstr "$cfg" db_dir
	minidlna_cfg_addstr "$cfg" log_dir
	minidlna_cfg_addbool "$cfg" inotify "1"
	minidlna_cfg_addbool "$cfg" enable_tivo "0"
	minidlna_cfg_addbool "$cfg" strict_dlna "0"
	minidlna_cfg_addstr "$cfg" album_art_names
	minidlna_cfg_addstr "$cfg" presentation_url
	minidlna_cfg_addstr "$cfg" notify_interval "900"
	minidlna_cfg_addstr "$cfg" serial "12345678"
	minidlna_cfg_addstr "$cfg" model_number "1"
	minidlna_cfg_addstr "$cfg" minissdpsocket
	minidlna_cfg_addstr "$cfg" root_container "."
	config_list_foreach "$cfg" media_dir minidlna_cfg_add_media_dir
 
	return 
}
 
config_load minidlna
 
minidlna_create_config config
EOF
 
chmod +x cp_minidlna_conf.sh
.cp_minidlna_conf.sh > mnthddminidlnaminidlna.conf
 
# Remove the hard or flash drive from the OpenWrt device and connect it to your Linux PC
block umount
 
# Build the minidlna database on a Linux PC with http://sourceforge.net/projects/minidlna/files/minidlna/1.1.4/
minidlnad -d -R -v -f mnthddminidlnaminidlna.conf
 
# Remove the hard or flash drive from your Linux PC and reconnect to your OpenWrt device
block mount
Ensure that the Linux PC portable hard or flash drive mount point is exactly the same as the OpenWrt hard or flash drive mount point. Otherwise, the OpenWrt minidlna will delete and rescan the database you generated on the PC since the paths don’t match

This method has been tested with an Openwrt device with 32MB of RAM and a music library of over 11,000 songs. You may also want to add if you are running low on memory.

Какой лучший медиа-сервер для Linux?

Ответ на этот вопрос зависит от функциональности, которая вам нужна, и от причин, по которым вы используете Linux. Если вам нужен полнофункциональный медиа-сервер для Linux, который выглядит и чувствует себя как Netflix, вам не нужно смотреть дальше, чем Plex, Вы можете контролировать свою коллекцию, пользуясь услугой, настолько знакомой, что друзья и семья не нуждаются в руках. Emby — еще один вариант, который, вероятно, не разочарует.

Если вы используете Linux, потому что хотите использовать бесплатное программное обеспечение с открытым исходным кодом, вам понадобится альтернатива Plex. В этом случае, проверьте Jellyfin. Ваша самая большая неудача, вероятно, будет меньшее количество поддерживаемых платформ.

И Plex, и Jellyfin отдают приоритет потоковому видео. Если музыка больше подходит вам, проверьте Subsonic или Madsonic, опять же, в зависимости от того, доверяете ли вы проприетарному программному обеспечению или предпочитаете код, на который можете положиться.

Хотите получить больше технических? Имейте в этом. Гербера — это сервер UPnP, предназначенный исключительно для домашнего использования. TvMOBiLi — платный сервер DLNA с интеграцией iTunes. OpenFlixr — это комплексное решение с более автоматизированным интерфейсом. Вариантов предостаточно. Напомним, у вас есть:

  1. Plex
  2. Emby
  3. Jellyfin
  4. дозвуковой
  5. Madsonic
  6. гербера
  7. TvMOBiLi
  8. OpenFlixr

Теперь давайте разберемся с этими медиа-серверами Linux и посмотрим, какие из них вам наиболее нравятся.

Установка Mediatomb

Arch Linux

Чтобы установить Media Tomb на Arch Linux, сначала перейдите в AUR и загрузите моментальный снимок, чтобы создать пакет. Когда архив находится в папке «Загрузка», откройте терминал и извлеките его.

1
2

cd~/Загрузки

tar xvzf mediatomb.tar.gz

Если исходные файлы для Mediatomb выведены из mediatomb.tar.gz, следующим шагом будет использование команды CD для перехода в извлеченную папку.

1 cd mediatomb

Используйте команду makepkg для создания пакета. Имейте в виду, что пакет может не работать, если у вас нет всех зависимостей, установленных в вашей системе

Чтобы убедиться, что у вас есть все зависимости, обратите внимание на то, что менеджер пакетов Pacman говорит вам, что вы не в системе. Имейте в виду, что вам может понадобиться загрузить эти зависимости из AUR

Когда все зависимости удовлетворяются на Arch, пакет Mediatomb готов к компиляции.

1 makepkg

Пусть менеджер пакетов пройдет и построит программное обеспечение. Когда он будет завершен, он выплюнет пакет tar.xz. Установите его в систему с помощью диспетчера пакетов Arch Linux.

1 sudo pacman-Umediatomb.tar.xz

OpenSUSE

Легкий способ быстро получить программное обеспечение Mediatomb DLNA в системе — установить его через службу сборки OpenSUSE. Этот пакет DLNA-серверов поддерживается для OpenSUSE Leap 42.3, Leap 42.2 и OpenSUSE Tumbleweed.

Чтобы установить программное обеспечение, перейдите на страницу загрузки, нажмите на свою версию SUSE, а затем кнопку «1-click install». Он откроет инструмент для установки программного обеспечения YaST и установит Mediatomb в вашей системе!

Другие Linux

Mediatomb — очень известное программное обеспечение. В результате, это много разных дистрибутивов Linux. Однако из-за того, сколько существует различных операционных систем Linux, они не могут поддерживать все. Если ваша любимая ОС не имеет устанавливаемого двоичного кода, вам может потребоваться загрузить исходный код и самостоятельно создать серверное программное обеспечение. Для этого посетите веб-сайт разработчика, возьмите исходный код и следуйте инструкциям!
Настройка Mediatomb

Серверное программное обеспечение установлено, но перед его использованием вы должны включить несколько вещей. Откройте терминал и получите доступ root, используя: sudo -s. В терминале отредактируйте файл конфигурации Mediatomb.

1 nano/etc/mediatomb/config.xml

Внутри nano найдите ui enabled = «no» и измените его на ui enabled = «yes». Затем нажмите Ctrl + O, чтобы сохранить его.

После редактирования файла конфигурации, чтобы включить веб-интерфейс, пришло время запустить сервер.

1
2

systemctl enable mediatomb

systemctl start mediatomb

Следующий шаг — добавить медиа на ваш сервер. Сделайте это, открыв новую вкладку в своем веб-браузере и перейдя по адресу: http: // localhost: 50500. Имейте в виду, localhost только локально. Чтобы получить доступ к серверу по сети, лучший способ — найти его IP-адрес. Для этого запустите эту команду:

1 ip addr show|grep»inet 192.168″

Использование команды ip addr show в сочетании с grep будет отфильтровывать всю ненужную информацию и просто показывать локальный IP-адрес для ПК. Скопируйте 192.168.1.XXX и введите его в URL-адрес веб-браузера. Например:

1 192.168.1.13250500

DLNA-сервер на Linux

Отсюда нажмите «Файловая система», затем «Каталог ПК» и найдите свои мультимедийные файлы на ПК для добавления. Нажмите знак +, чтобы добавить медиафайлы. Повторите этот процесс по мере необходимости, чтобы добавить все медиа в ваш Mediatomb.

РЕКОМЕНДУЕМ:

Настройка брандмауэра сервера Linux

Во всех операционных системах Linux брандмауэр работает всегда, обычно на основе iptables, но у нас по умолчанию стоит «разрешить все», поэтому вам не придется создавать никаких дополнительных правил для доступа к медиасерверу DLNA. Если вы настроили брандмауэр iptables в ограничительном режиме с «запретить все», то вам нужно будет ввести два правила, чтобы он работал правильно.

iptables -A INPUT -p udp –dport 1900 -j ПРИНЯТЬ

Мы предполагаем, что у вас есть только один сетевой интерфейс и одна подсеть, если вы хотите фильтровать по порту или подсети, вам нужно будет добавить его, это правило предназначено только для разрешения локального доступа к двум портам, определенным выше.

Если вы хотите, чтобы эти правила брандмауэра сохранялись, вам нужно будет выполнить следующую команду:

Теперь мы можем проверить, все ли правильно работает с нужным нам DLNA-клиентом, таким как телевизор, смартфон или планшет.

Проверьте состояние сервера miniDLNA

Если мы получим доступ к нашему локальному IP-адресу через Интернет или с любого компьютера и установим порт 8200, мы получим доступ к веб-интерфейсу состояния miniDLNA. Здесь мы увидим только медиатеку, количество аудио, видео и файлов изображений. Мы также сможем увидеть клиентов, подключенных в данный момент к медиасерверу DLNA, с их IP-адресами, MAC-адресами и количеством подключений.

В нашем случае мы положили:

Сервер DLNA (digital media server)

А вот тут уже большой выбор и куча вариаций. Самый очевидный и простой вариант это установить такой сервер там где хранится наш контент. Если это отдельный NAS можно поставить сервер DLNA прям на него, а если это обычный компьютер или ноутбук то нужно ставить сервер туда. Далее уже зависит от операционной системы и ваших предпочтений. Под Windows есть огромный выбор подобных программ, просто выбираем которая нравится и устанавливаем. Настройки там обычно очень простые и проблем возникнуть не должно. Вот список самых популярных серверов DLNA под Windows:

  1. Plex
  2. KODI
  3. Home Media Server
  4. PS3 Media Server
  5. Serviio

Единственная проблема которая может возникнуть — это нужно будет не забыть правильно настроить фаерволл и антивирусник, чтобы они не блокировали работу этих программ.

Я же сейчас покажу как настроить сервер DLNA под Linux. Эта инструкция подойдёт для Manjaro Linux и Arch Linux. В качестве программы сервера будем использовать miniDLNA. Я попробовал несколько разных, но это самая простоя и удобная. Она не имеет графического интерфейса, но он и не нужен. Всё будет работать как сервис, нужно только один раз настроить и всё.

Если всё настроено правильно, но данные не показывает на клиенте?

Если нихрена не работает нужно внимательно смотреть права. От кого запускается сервер и есть ли у этого пользователя права в нужные директории?

Если папка с контентом у вас лежит в домашней папке то нужно ещё дать программе туда доступ. Для этого нужно создать файлик /etc/systemd/system/minidlna.service.d/override.conf вот с таким содержимым:

ProtectHome=read-only

Остаётся поставить службу в автозапуск и запустить:

sudo systemctl enable minidlna.service
sudo systemctl start minidlna.service

Первый запуск может немного затянутся так как будет создаваться база со всеми вашими файлами. Если ошибок нет и всё правильно, то можно пробовать подключиться клиентом. Включаем телевизор и роемся там в smart TV и мы должны увидеть MyDLNA с пингвином.  Если возникли ошибки пишите в комментарии — вместе разберемся с вашей проблемой.

upd: ещё одна очень подробная и полезная ссылка в википедии со списком всех известных DLNA\UPnP серверов и клиентов под разные платформы:  https://en.wikipedia.org/wiki/List_of_UPnP_AV_media_servers_and_clients

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Басы в технике
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: