Code Monkey home page Code Monkey logo

dms's Introduction

Funding

dms is looking for funding for further development. See https://github.com/sponsors/anacrolix and the issues list if you have something specific in mind. Thank you for your support!

dms

dms is a UPnP DLNA Digital Media Server. It runs from the terminal, and serves content directly from the filesystem from the working directory, or the path given. The SSDP component will broadcast and respond to requests on all available network interfaces.

dms advertises and serves the raw files, in addition to alternate transcoded streams when it's able, such as mpeg2 PAL-DVD and WebM for the Chromecast. It will also provide thumbnails where possible.

dms also supports serving dynamic streams (e.g. a live rtsp stream) generated on the fly with the help of an external application (e.g. ffmpeg).

dms uses ffprobe/avprobe to get media data such as bitrate and duration, ffmpeg/avconv for video transoding, and ffmpegthumbnailer for generating thumbnails when browsing. These commands must be in the PATH given to dms or the features requiring them will be disabled.

image

Installing

Assuming $GOPATH and Go have been configured already:

$ go get github.com/anacrolix/dms

Ensure ffmpeg/avconv and/or ffmpegthumbnailer are in the PATH if the features depending on them are desired.

To run:

$ "$GOPATH"/bin/dms

Running DMS using Docker

dms is distributed as Docker Image. Serve Media in /mediadirectory using `dms`:

docker pull ghcr.io/anacrolix/dms:latest
docker run -d --network host -v /mediadirectory:/dmsdir ghcr.io/anacrolix/dms:latest

Running DMS as a systemd service

A sample systemd .service file has been provided to assist in running DMS as a system service.

Running DMS as a FreeBSD service

Install the provided service file to /etc/rc.d or /usr/local/etc/rc.d add dms_enable="YES", and optionally dms_root="/path/to/my/media" and dms_user="myuser" to your /etc/rc.conf

Known Compatible Players and Renderers

  • Probably all Panasonic Viera TVs.
  • Android's BubbleUPnP and AirWire
  • Chromecast
  • VLC
  • LG Smart TVs, with varying success.
  • Roku devices
  • Apple TV 4K via VLC and 8player
  • iOS VLC and 8player

Usage of dms:

Usage
parameter description
-allowDynamicStreams turns on support for .dms.json files in the path
-allowedIps string allowed ip of clients, separated by comma
-config string json configuration file
-deviceIcon string device icon
-fFprobeCachePath string path to FFprobe cache file (default "/home/efreak/.dms-ffprobe-cache")
-forceTranscodeTo string force transcoding to certain format, supported: 'chromecast', 'vp8'
-friendlyName string server friendly name
-http string http server port (default ":1338")
-ifname string specific SSDP network interface
-ignoreHidden ignore hidden files and directories
-ignoreUnreadable ignore unreadable files and directories
-ignore ignore comma separated list of paths (i.e. -ignore thumbnails,thumbs)
-logHeaders log HTTP headers
-noProbe disable media probing with ffprobe
-noTranscode disable transcoding
-notifyInterval duration interval between SSPD announces (default 30s)
-path string browse root path
-stallEventSubscribe workaround for some bad event subscribers
-transcodeLogPattern pattern where to write transcode logs to. The [tsname] placeholder is replaced with the name of the item currently being played. The default is $HOME/.dms/log/[tsname]. You may turn off transcode logging entirely by setting it to /dev/null. You may log to stderr by setting /dev/stderr.

Dynamic streams

DMS supports "dynamic streams" generated on the fly. This feature can be activated with the -allowDynamicStreams command line flag and can be configured by placing special metadata files in your content directory. The name of these metadata files ends with .dms.json, their structure is documented here.

An example:

{
  "Title": "My awesome webcam",
  "Resources": [
     {
        "MimeType": "video/webm",
        "Command": "ffmpeg -i rtsp://10.6.8.161:554/Streaming/Channels/502/ -c:v copy -c:a copy -movflags +faststart+frag_keyframe+empty_moov -f matroska -"
     }
  ]
}

By default, dynamic content is treated as video. It is possible to specify a "Type" parameter with value "audio" or "video" to explicitly set this.

dms's People

Contributors

adirelle avatar anacrolix avatar demitroi avatar dependabot[bot] avatar e-dard avatar ebfe avatar edanbe avatar efreak avatar h31 avatar halfwit avatar irsl avatar kulak avatar mathieu-aubin avatar mattn avatar nicolov avatar olivierlemasle avatar pataquets avatar phillipberndt avatar qzhsjz avatar ronindev avatar rsteube avatar scottchiefbaker avatar tipabu avatar triole avatar tsynik avatar varbhat avatar wuxingzhong avatar yanceychiew avatar zenwheel avatar zjx20 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dms's Issues

One-use anonymous functions

More a question than an issue: there is a lot of these constructs through the code base:

stderrPath := func() string {

This does not seem very "go-ish" (idiomatic to go, would say the purists). What is the purpose of this construct ? Where does this come from ? Javascript ?

Move a bunch of code that isn't specific to dms elsewhere

I made a lot of Python-like stuff while creating dms that really just clutters the code base. Stuff like rrcache, queue, futures and others aren't DMS specific and should be moved elsewhere, or rejigged using now-improved knowledge of Go idioms.

Create a persistent cache for ffprobe data

To quote @ronindev :

ffprobe'ing of all media content in the folder takes a long time.. In memory cache works fine, but after reboot i had wait looong time with my media, without file cacheing

I think the right approach here is a persistent cache for the ffprobe data. It should be easy to either bake this into the ffmpeg module or create/reuse an existing caching layer for this.


File metadata caching ?

This is one is a bit arguable. I see that file metadata are not cached, but reading them can possibly involve a lot of IO operations. Have you ever considered caching those metadata ?

README - precision about ffmpeg

Hi,

I feel it would be great to have some sort of emphasis in the README on installing ffmpeg (and its associated libraries). I had to run dms to find out ffmpeg wasn't installed properly on my Win10 machine.

proposed precompiled Binaries / compilation error on Qnap NAS

Hi thanks for this project looks great

will be nice to propose the precompiled Binary released.. (ARMv5, ARMv7, x86, x64..)
i basically try to compiled it for Qnap NAS but i am stuck with Go

export GOPATH=/share/GO-PROJECT
 [~] # go get github.com/anacrolix/dms
 # github.com/anacrolix/dms/dlna/dms
 /share/GO-PROJECT/src/github.com/anacrolix/dms/dlna/dms/cds.go:86: undefined: ffprobe.FfprobeUnavailableError

not sure where is my mistake..

I am using Go v1.7.5

Can it run in the environment without go installed?

I get this module in a container and save the package in a mounted directory of the host. When I run dms in the host which does not have go installed, the error goes like this:
bash: ./dms: No such file or directory

I don't what file it is looking for?

Configurable notification interval

Right now, DMS announces itself to the network every 5 seconds. This is a bit overkill, given than some devices "replies" to the announce by a Browse request. This could be a configurable value.

Strict content root

Right now, DMS will happily follow any symlinks pointing out of the content root. This could leads to security issues. Would it be possible to restrict this using an option ?

Error serving disconnected mount

23:58:12 server.go:1092: http: panic serving 192.168.1.3:46673: readdirent: input/output error
goroutine 2554901 [running]:
net/http.func·009()
        /home/matt/src/go/src/pkg/net/http/server.go:1091 +0xc0
bitbucket.org/anacrolix/dms/dlna/dms.(*Server).readContainer(0xc21007f780, 0x7fffce3df7dd, 0xa, 0xc21023d5c0, 0x1, ...)
        /home/matt/gopath/src/bitbucket.org/anacrolix/dms/dlna/dms/dms.go:372 +0x167
bitbucket.org/anacrolix/dms/dlna/dms.(*Server).contentDirectoryResponseArgs(0xc21007f780, 0xc2101ce61e, 0x10, 0x1, 0xc2101ce631, ...)
        /home/matt/gopath/src/bitbucket.org/anacrolix/dms/dlna/dms/dms.go:467 +0x245
bitbucket.org/anacrolix/dms/dlna/dms.func·021(0x0, 0x0)
        /home/matt/gopath/src/bitbucket.org/anacrolix/dms/dlna/dms/dms.go:649 +0x10b
bitbucket.org/anacrolix/dms/dlna/dms.func·022(0x7f9e7cf2dab8, 0xc2101876e0, 0xc2100beea0)
        /home/matt/gopath/src/bitbucket.org/anacrolix/dms/dlna/dms/dms.go:668 +0x43a
net/http.HandlerFunc.ServeHTTP(0xc210036dc0, 0x7f9e7cf2dab8, 0xc2101876e0, 0xc2100beea0)

The -path corresponds to a mount that was disconnected without unmounting.


Create a GUI for Windows

A simple GUI is required for Windows. It can provide a log display, and a browse button. Upon selecting the folder to share, it invokes dms.exe, and pipes the output to the log display. Changes to the folder can just kill the old process and start a new one.


Dangling symlinks cause crash

Here's the relevant stacktrace:

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x429025]

goroutine 157 [running]:
runtime.panic(0x755280, 0xc2100d8190)
    /home/matt/src/go/src/pkg/runtime/panic.c:266 +0xb6
bitbucket.org/anacrolix/dms/dlna/dms.(*Server).fileEntries(0xc21008e780, 0x0, 0x0, 0xc2100f3f80, 0x36, ...)
    /home/matt/gopath/src/bitbucket.org/anacrolix/dms/dlna/dms/dms.go:313 +0x255
bitbucket.org/anacrolix/dms/dlna/dms.(*Server).childCount(0xc21008e780, 0xc2100f3f80, 0x36, 0xc2100b1680)
    /home/matt/gopath/src/bitbucket.org/anacrolix/dms/dlna/dms/dms.go:151 +0x1a2
bitbucket.org/anacrolix/dms/dlna/dms.(*Server).entryObject(0xc21008e780, 0x7fbc9d4b15b8, 0xc2100f2370, 0xc2100f3f80, 0x36, ...)
    /home/matt/gopath/src/bitbucket.org/anacrolix/dms/dlna/dms/dms.go:229 +0x19a
bitbucket.org/anacrolix/dms/dlna/dms.func·009(0x766d20, 0xc2100ffa80, 0xc210075038, 0x7fbc9d499f28)
    /home/matt/gopath/src/bitbucket.org/anacrolix/dms/dlna/dms/dms.go:379 +0x85
bitbucket.org/anacrolix/dms/futures.func·004(0xc210075010, 0x573ef0)

Imports are broken.

A lot of bitbucket imports in the project, but the project has been moved to github,

Samsung doesn't like response to BrowseDirectChild

When the samsung tv does a BrowseDirectChild, the response from dms isn't accepted. Rygel works.

samsung to rygel

POST /Control/MediaExport/RygelContentDirectory HTTP/1.0
HOST: 192.168.1.38:58635
CONTENT-LENGTH: 415
CONTENT-TYPE: text/xml;charset="utf-8"
USER-AGENT: DLNADOC/1.50
SOAPACTION: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle=
"http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:Browse xmlns:u="urn:schem
as-upnp-org:service:ContentDirectory:1"><ObjectID>0</ObjectID><BrowseFlag>Browse
DirectChildren</BrowseFlag><Filter>*</Filter><StartingIndex>0</StartingIndex><Re
questedCount>1</RequestedCount><SortCriteria></SortCriteria></u:Browse></s:Body>
</s:Envelope>

rygel to samsung

<?xml version="1.0"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelo
pe/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:Brow
seResponse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1"><Result>&lt
;DIDL-Lite xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:upnp=&quo
t;urn:schemas-upnp-org:metadata-1-0/upnp/&quot; xmlns:dlna=&quot;urn:schemas-dln
a-org:metadata-1-0/&quot; xmlns=&quot;urn:schemas-upnp-org:metadata-1-0/DIDL-Lit
e/&quot;&gt;&lt;container parentID=&quot;0&quot; id=&quot;Filesystem&quot; child
Count=&quot;2&quot; searchable=&quot;1&quot; restricted=&quot;1&quot;&gt;&lt;dc:
title&gt;Files &amp;amp; Folders&lt;/dc:title&gt;&lt;upnp:class&gt;object.contai
ner.storageFolder&lt;/upnp:class&gt;&lt;upnp:storageUsed&gt;-1&lt;/upnp:storageU
sed&gt;&lt;upnp:containerUpdateID&gt;925&lt;/upnp:containerUpdateID&gt;&lt;upnp:
objectUpdateID&gt;925&lt;/upnp:objectUpdateID&gt;&lt;upnp:totalDeletedChildCount
&gt;2&lt;/upnp:totalDeletedChildCount&gt;&lt;upnp:searchClass includeDerived=&qu
ot;1&quot;&gt;object.item.imageItem&lt;/upnp:searchClass&gt;&lt;upnp:searchClass
 includeDerived=&quot;1&quot;&gt;object.item.imageItem.photo&lt;/upnp:searchClas
s&gt;&lt;upnp:searchClass includeDerived=&quot;1&quot;&gt;object.item.videoItem&
lt;/upnp:searchClass&gt;&lt;upnp:searchClass includeDerived=&quot;1&quot;&gt;obj
ect.item.audioItem&lt;/upnp:searchClass&gt;&lt;upnp:searchClass includeDerived=&
quot;1&quot;&gt;object.item.audioItem.musicTrack&lt;/upnp:searchClass&gt;&lt;upn
p:searchClass includeDerived=&quot;1&quot;&gt;object.item.playlistItem&lt;/upnp:
searchClass&gt;&lt;upnp:searchClass includeDerived=&quot;1&quot;&gt;object.conta
iner&lt;/upnp:searchClass&gt;&lt;res protocolInfo=&quot;http-get:*:text/xml:DLNA
.ORG_PN=DIDL_S;DLNA.ORG_FLAGS=00f00000000000000000000000000000&quot;&gt;http://1
92.168.1.38:58635/MediaExport/i/RmlsZXN5c3RlbQ&#37;3D&#37;3D/pl/DIDL_S.xml&lt;/res&gt;&l
t;/container&gt;&lt;/DIDL-Lite&gt;</Result><NumberReturned>1</NumberReturned><To
talMatches>3</TotalMatches><UpdateID>952</UpdateID></u:BrowseResponse></s:Body><
/s:Envelope>

samsung to dms

POST /ctl/ContentDirectory HTTP/1.0
HOST: 192.168.1.38:1338
CONTENT-LENGTH: 415
CONTENT-TYPE: text/xml;charset="utf-8"
USER-AGENT: DLNADOC/1.50
SOAPACTION: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle=
"http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:Browse xmlns:u="urn:schem
as-upnp-org:service:ContentDirectory:1"><ObjectID>0</ObjectID><BrowseFlag>Browse
DirectChildren</BrowseFlag><Filter>*</Filter><StartingIndex>0</StartingIndex><Re
questedCount>1</RequestedCount><SortCriteria></SortCriteria></u:Browse></s:Body>
</s:Envelope>

dms to samsung

<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http:
//schemas.xmlsoap.org/soap/encoding/">
  <Body xmlns="http://schemas.xmlsoap.org/soap/envelope/"><BrowseResponse xmlns=
"urn:schemas-upnp-org:service:ContentDirectory:1">
  <TotalMatches>421</TotalMatches>
  <NumberReturned>1</NumberReturned>
  <Result>&lt;DIDL-Lite xmlns:dc=&#34;http://purl.org/dc/elements/1.1/&#34; xmln
s:upnp=&#34;urn:schemas-upnp-org:metadata-1-0/upnp/&#34; xmlns=&#34;urn:schemas-
upnp-org:metadata-1-0/DIDL-Lite/&#34; xmlns:dlna=&#34;urn:schemas-dlna-org:metad
ata-1-0/&#34;&gt;&lt;item id=&#34;1/cUA(!&amp;lt;EIE@VTIaF@ek$s+14O!W`F#@&amp;lt
;?/`$ig;7&amp;lt;,uDbF(9-!AH;i4!!#RiJcS4lEcl7QD.R6l@4u/&amp;#34;G&#37;E=$Gp#plF)u;=E
c`s8Bk1dnF&amp;#34;]7&#37;+B`8aEcW@AAft&amp;amp;dDf&amp;amp;p(+=84#EbT*&amp;amp;A90A
?E&amp;amp;7O&#34; parentID=&#34;0&#34; restricted=&#34;1&#34;&gt;&#xA;  &lt;upn
p:class&gt;object.item.videoItem&lt;/upnp:class&gt;&#xA;  &lt;dc:title&gt;10 Yea
rs of Thomas &amp;amp; Friends.mp4&lt;/dc:title&gt;&#xA;  &lt;res protocolInfo=&
#34;http-get:*:video/mp4:DLNA.ORG_OP=01;DLNA.ORG_CI=0&#34; size=&#34;949747293&#
34; bitrate=&#34;1954620&#34; duration=&#34;1:04:47.189333&#34; resolution=&#34;
696x480&#34;&gt;http://192.168.1.38:1338/res?path=&#37;2Frun&#37;2Fmedia&#37;2Fdave&#37;2FMy+Pas
sport&#37;2FVideos&#37;2F10+Years+of+Thomas+&#37;26+Friends.mp4&lt;/res&gt;&#xA;  &lt;res pr
otocolInfo=&#34;http-get:*:video/mpeg:DLNA.ORG_OP=10;DLNA.ORG_CI=1;DLNA_PN=MPEG_
PS_PAL&#34; resolution=&#34;720x576&#34;&gt;http://192.168.1.38:1338/res?path=&#37;2
Frun&#37;2Fmedia&#37;2Fdave&#37;2FMy+Passport&#37;2FVideos&#37;2F10+Years+of+Thomas+&#37;26+Friends.mp4&
amp;amp;transcode=t&lt;/res&gt;&#xA;&lt;/item&gt;&lt;/DIDL-Lite&gt;</Result>
  <UpdateID>1379701483</UpdateID>
</BrowseResponse></Body>
</Envelope>

Error installing: unrecognized import path "math/bits"

Following the installation instructions in the documentation I get an error on math/bits

bakers@basement(~/Assorted)
:go get github.com/anacrolix/dms
package math/bits: unrecognized import path "math/bits" (import path does not begin with hostname)

Any suggestions on how I should proceed?

Create Automated Build on Docker Hub

Docker Hub allows you to create Automated Builds from source: https://docs.docker.com/docker-hub/builds/
It would add another packaging/distribution/installation method, whose buildings would be triggered automatically on each commit. It also allows to create different image tags automatically from git tags & branches.

By making the image build via an AB, you give the resulting image verifiability and auditability. Also, the build is fully automatic. You can have the latest image tag build from HEAD and individual image tags from git's release tags. Some people avoid non-verifiable (manually uploaded) images due to security & traceability reasons.

Since #68 is in, just a free Docker Hub account and a quick setup would do. Ping me if you need help.

Windows 10 cannot discover a DMS server

Hello!
While Windows 10 shows a DMS server in "Other devices" list in the settings app, it doesnt' show it in Explorer window. It means that DMS is totally unusable with Windows 10 as a client.

Long UI "loading" times with LG LM7600 TV

I'm experimenting with using dms to stream a single MKV/H264/AC3 video file from my OpenBSD mini-server to my LG LM7600 TV. Video streaming seems successful (yay!), but while navigating the directory structure, my TV UI has very long "Loading..." pauses (about 20 seconds) every time it displays a directory, even though the directories are all tiny.

I don't experience the same pauses with Twonky media server running on my WD MyBook NAS drive, even with much larger directories. The pauses also seem pretty consistent; e.g., they don't go away after an initial dms warmup or something.

I started poking into trying to find out where the latency might be, but I'm not very familiar with the UPnP/DLNA protocols. I noticed there seem to be some /ctl HTTP requests around the pauses, but instrumenting serviceControlHandler I see it's finishing in less than a millisecond, so not likely the problem.

I'll continue digging into it, but thought I'd file an issue in case you have any ideas where I should look to explain the 20 second pauses.

Imports are broken

A lot of bitbucket imports in the project, but the project has been moved to github,

DMS lists hidden and unreadable files and directories.

Firstly, I would like to thank you to for this simple, pure Go UPNP-AV server. It allows me to easily cross-compile it for a specific device which seems to have some quirks with Debian 9 and its usual tools. However, there are a couple of issues for my use case. I will try to tinker with them on my own. In the meantime, I will report them here. So, here is the first of them:

Right now, DMS lists all directories entries, including hidden ones (e.g. which name starts with a dot on Unix; may vary on other OSes) or otherwise unreadable per file permissions. Would it possible to ignore them ?

.ogv file not being transcoded

Split from issue #32: FinalFantasy2_356_part01.ogv is visible in my TV's file navigation view, but selecting it gives a "This file is invalid." error. My expectation from the README is that dms should use ffmpeg to transcode the video to codecs that my TV understands.

ssdp not advertising on Solaris

Just tried making a build for Solaris (NexentaStor) and the SSDP isn't listening to advertise it on the network.

Looks like the flags aren't correct, but if I comment out the flag checks, I get:

19:05:15 dms.go:190: error creating ssdp server on e1000g0: listen udp 239.255.255.250:1900: option not supported by protocol

This issue is just a placeholder while I figure out where the problem is (hopefully with the OS).

Does not work with Kodi

I am not getting any errors but Kodi just does not seem see the server. ReadyMedia (formerly MiniDLNA) works fine so I know my Kodi setup and network are not the problem. Any thoughts on troubleshooting?

No content found on Samsung TV

I have a Samsung UE55MU6199 from 2017. When i open dms from my Tv's sources i get a "no content found". VLC on Android shows me my folders and i can stream content.

Console output:

TV: 21:35:59 main.go:238: added 0 items from cache 21:35:59 dms.go:852: HTTP srv on [::]:1338 21:35:59 dms.go:193: started SSDP on veth267e10c 21:35:59 dms.go:193: started SSDP on lo 21:35:59 dms.go:193: started SSDP on br-ff002a7d26fd 21:35:59 dms.go:193: started SSDP on docker0 21:35:59 dms.go:193: started SSDP on br-7929a085d1c8 21:35:59 dms.go:193: started SSDP on virbr0 21:35:59 dms.go:193: started SSDP on veth640cd96 21:35:59 dms.go:193: started SSDP on enp3s0
Android: 21:39:05 main.go:238: added 0 items from cache 21:39:05 dms.go:852: HTTP srv on [::]:1338 21:39:05 dms.go:193: started SSDP on veth267e10c 21:39:05 dms.go:193: started SSDP on lo 21:39:05 dms.go:193: started SSDP on enp3s0 21:39:05 dms.go:193: started SSDP on docker0 21:39:05 dms.go:193: started SSDP on br-ff002a7d26fd 21:39:05 dms.go:193: started SSDP on veth640cd96 21:39:05 dms.go:193: started SSDP on br-7929a085d1c8 21:39:05 dms.go:193: started SSDP on virbr0 21:39:26 cds.go:62: /mnt/disk1/Movie/#9/movie.nfo ignored: non-media file (text/plain; charset=utf-8) 21:39:28 cds.go:62: /mnt/disk1/Movie/.hack Quantum/movie.nfo ignored: non-media file (text/plain; charset=utf-8) 21:39:28 cds.go:62: /mnt/disk1/Movie/13 Assassins/movie.nfo ignored: non-media file (text/plain; charset=utf-8) 21:39:28 cds.go:62: /mnt/disk1/Movie/47 Ronin/47Ronin (2013).eng.idx ignored: non-media file (text/plain; charset=utf-8)` ...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.