IPFS音乐播放器

IPFS相关

IPFS第一次亲密接触

  • 什么是IPFS

  • IPFS对比HTTP/FTP等协议的优势

  • IPFS应用场景

ipfs入门

  • 官网地址:https://ipfs.io
  • 下载安装:https://dist.ipfs.io/#go-ipfs
  • 节点初始化
    • ipfs init
    • 如果出现Error: cannot acquire lock: can't lock file 删除其后边给出的repo.lock文件即可
  • 节点配置
    • ipfs id 查看当前节点id等信息
    • ipfs config show ipfs配置信息
  • 节点服务器daemon
    • ipfs daemon
  • 修改IPFS默认路径
  • 开放API请求
    • ipfs config --json Addresses.API '"/ip4/0.0.0.0/tcp/5001"'
  • 开放公共网关
    • ipfs config --json Addresses.Gateway '"/ip4/0.0.0.0/tcp/8080"'

发布数据

  • 上传文件

    ipfs add haha.txt文本

    ipfs add cat.jpg图片

    ipfs add -q cat.jpg 只输出hash结果

    hash记录返回的文件路径信息

  • 上传/查看目录

    添加目录: ipfs add -r dir

    查看目录: ipfs ls Qmej3u92BHJVkkiC8F5uL1J4a98no76TnXmQxHGXCHGE7t

  • 发布网站

    把包含index.html的文件夹add到ipfs网络即可

获取数据

命令行获取 cat/get

ipfs cat QmaoahyA1UejtgPifPvjpsviePsDnJn8vHrYAN9nfF7w9N 查看文本

ipfs cat QmaoahyA1UejtgPifPvjpsviePsDnJn8vHrYAN9nfF7w9N > new-haha.txt 保存文本

ipfs cat Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u > new-cat.jpg保存图片

ipfs get QmZSwQghczB41omjfJipFPQ3FovYyLvXR9oa4Y9LQS7Urp -o tomcat.jpg获取并保存文件

ipfs get QmZSwQghczB41omjfJipFPQ3FovYyLvXR9oa4Y9LQS7Urp -Cao tomcat-go 压缩并下载文件

ipfs get QmYtrQVXatZGm1WRKZ29vUt5tFa24xnTvhv6D71DSNVttZ -o ipfs-day01获取文件夹

浏览器访问获取

  1. http://localhost:5001/webui下搜索hash值,可以raw查看原数据,download下载文件

  2. 在8080端口访问:http://localhost:8080/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u

  3. 在ipfs.io访问:https://ipfs.io/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u

    不需要翻墙的网关:https://ipfs.infura.io/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u

文本数据

图片数据

音频数据

files文件/文件夹操作

ipfs files cp <文件/文件夹的hash> <目标文件/文件夹> 拷贝文件

ipfs files ls -l 查看目录

在github客户端需要加两个斜杠//

ipfs files mkdir 创建目录

ipfs files cp 拷贝

ipfs files mv 移动

ipfs files stat 状态

ipfs files read 读取

React音乐播放器

音乐列表数据

  • 音乐名称/歌手等文本信息

  • 专辑图片展示

播放音频数据

  • 网易音乐api地址:

    https://github.com/Binaryify/NeteaseCloudMusicApi

  • ipfs-api:https://github.com/ipfs/js-ipfs-api

    • 初始化环境端口号开启服务:
    # Show the ipfs config API port to check it is correct
    > ipfs config Addresses.API
    /ip4/127.0.0.1/tcp/5001
    # Set it if it does not match the above output
    > ipfs config Addresses.API /ip4/127.0.0.1/tcp/5001
    # Restart the daemon after changing the config # Run the daemon
    > ipfs daemon
    • cat获取数据
    ipfs.files.cat("QmY4NqRyr9SebC3P6W3pzg22UK3QsJNDKGzDHqQZsEyPi3", function (err, file) {
    if (err) {
    throw err
    }
    const json = file.toString('utf8');
    console.log(json)
    that.setState({
    songInfo: JSON.parse(json)
    }) })
    • add 添加数据
    const ipfsAPI = require('ipfs-api')
    const ipfs = ipfsAPI('localhost', '5001', {protocol: 'http'})
    const buffer = Buffer.from('hello ipfs-api!')
    ipfs.add(buffer)
    .then( rsp => console.log(rsp[0].hash))
    .catch(e => console.error(e))

  • 设置cors

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST", "OPTIONS"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers '["Authorization"]'
ipfs config --json API.HTTPHeaders.Access-Control-Expose-Headers '["Location"]'

ipns

  • 绑定ipfs节点, 把一个文件/文件夹的hash发布到自己的ID下

ipfs name publish QmSx37PT8iV2XxzfHLMRYSxZEt87uE3jdQwCyz7otd5ktP

  • 查看节点绑定的ipfs路径

ipfs name resolve [peerId]

ipfs01的更多相关文章

随机推荐

  1. Introduction to CQRS

    原文链接:  http://www.codeproject.com/Articles/555855/Introduction-to-CQRS What is CQRS CQRS means Comma ...

  2. ES6 基础概念汇总

    let const命令 声明变量 let 声明的变量  没有变量提升的效果 1  let声明的变量只在代码块内有效 for循环的计数器 2  不存在变量提升 要在声明后使用 let bar = 2 3 ...

  3. linux上部署redis实现与Python上的redis交互(有坑)

    1.概念 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件 2.linux安装redis 2.1yum源安装redis(不推荐) #前提得配置好阿里 ...

  4. 菜鸟笔记 -- Chapter 6.2.4 成员方法

    6.2.4  成员方法 在Java中使用成员方法对应于类对象的行为,在有些地方也会将方法称之为函数,成员方法是定义在类中具有特定功能的一段独立小程序.方法格式如下: 修饰符 返回值类型 成员方法名 ( ...

  5. BZOJ2580: [Usaco2012 Jan]Video Game(AC自动机)

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 159  Solved: 110[Submit][Status][Discuss] Descriptio ...

  6. linux运维、架构之路-shell编程(二)

    一.流程控制语句 1.if语句 ①if单分支:一个条件一个结果 1 2 3 4 if 条件   then      命令 fi ②if双分支:一个条件两个结果 1 2 3 4 5 6 if 条件    ...

  7. MySQL 清除表空间碎片

    碎片产生的原因 (1)表的存储会出现碎片化,每当删除了一行内容,该段空间就会变为空白.被留空,而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大; (2)当执行插入操作 ...

  8. react native 踩坑之 SectionList state更新 不执行render重新渲染页面

    官方文档中指出 SectionList 本组件继承自PureComponent而非通常的Component,这意味着如果其props在浅比较中是相等的,则不会重新渲染.所以请先检查你的renderIt ...

  9. Python练习笔记(2)

    文件读写,多线程.多进程 import time,os,threading,random def file_read(path): try: with open(path, 'r') as f: # ...

  10. 理解HBase

    1.HBase HBase: Hadoop Database,根据Google的Big Table设计 HBase是一个分布式.面向列族的开源数据库.HDFS为Hbase提供了底层的数据存储服务,Ma ...