YANO's digital garage

Copyright ©YANO All rights reserved. https://www.bravotouring.com/~yano/

Last-modified: 2024-04-10 (水)


[一語一絵/IT系]

MagicalFinder対応 / 2015-04-08 (水)

3日のMagical Finder対応改善。LANDISKGT110bRockDiskNextの3ノード分のメッセージ送信を、クライアントからのUDP/51065トリガーに対してオンデマンドで繰り返すように改修。これをdaemon起動しておけばよさそうだ。

yano@GT110b:~$ cat ~/MagicalFinder/mf_all_nas.py;
# -*- coding: utf-8 -*-

import socket
import sys

MAGICAL_PORT = 51065

###########################################################
# for GT110b (192.168.199.1)
###########################################################
def make_GT110b():

    payload = bytearray([0x07,0x4c,0x5f,0x11,0x67,0x00])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([192,168,199,1])                 # NAS ip address
    payload.extend([255,255,255,0])                 # subnetmask
    payload.extend([192,168,199,254])               # gateway
    payload.extend([0x00, 0x50])                    # length ?
    payload.extend([0x94,0xde,0x80,0xXX,0xYY,0xZZ]) # MAC address
    payload.extend("GT110b@BRAVOTOURING")
    payload.extend([0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend("IO-DATA")
    payload.extend([0,0,0,0,0,0,0,0,0,0])
    return payload;

###########################################################
# for LANDISK-AV (192.168.199.20)
###########################################################
def make_LANDISK():

    payload = bytearray([0x07,0x4c,0x5f,0x11,0x67,0x00])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([192,168,199,20])                # NAS ip address
    payload.extend([255,255,255,0])                 # subnetmask
    payload.extend([192,168,199,254])               # gateway
    payload.extend([0x00, 0x50])                    # length ?
    payload.extend([0x00,0xa0,0xb0,0xXX,0xYY,0xZZ]) # MAC address
    payload.extend("LANDISK@WORKGROUP")
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend("IO-DATA")
    payload.extend([0,0,0,0,0,0,0,0,0,0])
    return payload;

###########################################################
# for RDN021 (192.168.199.21)
###########################################################
def make_RDN021():

    payload = bytearray([0x07,0x4c,0x5f,0x11,0x67,0x00])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([192,168,199,21])                # NAS ip address
    payload.extend([255,255,255,0])                 # subnetmask
    payload.extend([192,168,199,254])               # gateway
    payload.extend([0x00, 0x50])                    # length ?
    payload.extend([0x00,0x01,0xd2,0xXX,0xYY,0xZZ]) # MAC address
    payload.extend("RDN021@BRAVOTOURING")
    payload.extend([0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend([0,0,0,0,0,0,0,0])
    payload.extend("IO-DATA")
    payload.extend([0,0,0,0,0,0,0,0,0,0])
    return payload;

#-------------------------------------------------------------------------
#   top of send_magical
#-------------------------------------------------------------------------
def send_magical(sock):

    dest_address = ('255.255.255.255', MAGICAL_PORT)
#   print >>sys.stderr, 'send to %s port %s' % dest_address
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    sock.sendto(make_GT110b(), dest_address)
    sock.sendto(make_LANDISK(), dest_address)
    sock.sendto(make_RDN021(), dest_address)

    return;

#-------------------------------------------------------------------------
#   top of main
#-------------------------------------------------------------------------
def main():

    # Create a UDP/IP socket
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    # Bind the socket to the port
    server_address = ('0.0.0.0', MAGICAL_PORT)
    print >>sys.stderr, 'starting up on %s port %s' % server_address
    sock.bind(server_address)

    while True:
        data, address = sock.recvfrom(4096)
        if 0 < data.find("FROM-PC\x00") :
            send_magical(sock)

#-------------------------------------------------------------------------
#   end of main
#-------------------------------------------------------------------------

if __name__ == '__main__':
    main()

# vim:expandtab:ts=4

yano@GT110b:~$ while true;do python ~/MagicalFinder/mf_all_nas.py; sleep 3;done

【参照】
●AV Watch http://av.watch.impress.co.jp/
アイ・オー、PC使わずCDをAndroidスマホにAACでリッピング「CDレコ」 2014年4月9日
CDをAndroidスマホに取り込めるアイ・オー「CDレコ」、FLACやCD書込に対応へ 2014年7月1日
AndroidスマホでCDリッピングの「CDレコ」が、FLACやCD書出対応 2014年7月22日
PC無しでiPhoneに音楽CDを取り込める「CDレコWi-Fi」 2014年8月6日
【レビュー】iPhoneで音楽CD取り込みが可能に! ノーPCライフがはかどる「CDレコ Wi-Fi」 2014年8月29日
スマホでCDリッピング「CDレコ Wi-Fi」で、iTunes楽曲再生や歌詞表示に対応 2015年1月9日
CDからNASに直接保存、PCレスCDリッピングの「CDレコ」がバージョンアップ 2015年3月12日
CDリッピングの「CDレコ」Androidアプリ、音楽再生と歌詞表示も可能に 2015年4月2日
●IODATA アイ・オー・データ機器 http://www.iodata.jp/
CDレコ Wi-Fi(CDRI-W24AI)
音楽CDを直接スマホやタブレットに取り込める「CDレコ」
「CDレコ」アプリのバージョンアップで音楽がもっと楽しくなる! 音楽CDは全部NAS(ナス)に取り込んで、家族みんなでお気に入りを共有 2015年3月12日
「CDレコ」対応情報 >> 「CDレコ」アプリ対応ドライブ・NAS
HVL1-G1.5T
MagicalFinder
Q&A >> 「Magical Finder」で使用しているポート番号を教えてください。
●Python Wiki https://wiki.python.org/
UdpCommunication
●価格.com - 「買ってよかった」をすべてのひとに。 http://kakaku.com/
IODATA CDレコ Wi-Fi CDRI-W24AI 価格比較
●Amazon.co.jp https://www.amazon.co.jp/
I-O DATA iOS&Android対応 音楽CD取り込みドライブ CDRI-W24AI 8,709円