`
developer.chao
  • 浏览: 14777 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

ubuntu 下实现动态桌面壁纸 Dom4j 生成xml的实用脚本

阅读更多
package background;

import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.regex.Pattern;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class DynamicWallpapers {

	/**
	 * Generate XML
	 * 
	 * @param files
	 * @param filename
	 * @return
	 */
	public static int generateBackgroundXML(File[] files, String filename) {
		int returnValue = 0;
		Document document = DocumentHelper.createDocument();
		Element backgroundElement = document.addElement("background");
		backgroundElement.addComment("Dynamic Wallpaper Generator Tool");
		/**
		 * Set the current time <starttime> <year>210</year> <month>09</month>
		 * <day>10</day> <hour></hour> <minute></minute> <second></second>
		 * </starttime>
		 */
		Element starttimeElement = backgroundElement.addElement("starttime");
		Element yearElement = starttimeElement.addElement("year");
		yearElement.setText("2010");
		Element monthElement = starttimeElement.addElement("month");
		monthElement.setText("09");
		Element dayElement = starttimeElement.addElement("day");
		dayElement.setText("10");
		Element hourElement = starttimeElement.addElement("hour");
		hourElement.setText("15");
		Element minuteElement = starttimeElement.addElement("minute");
		minuteElement.setText("38");
		Element secondElement = starttimeElement.addElement("second");
		secondElement.setText("32");
		/**
		 * <author> <firstname>Echol</firstname> <lastname>Zhao</lastname>
		 * <blog></blog> <mail></mail> </author>
		 */
		Element authorElement = backgroundElement.addElement("author");
		Element firstnameElement = authorElement.addElement("firstname");
		firstnameElement.setText("Echol");
		Element lastnameElement = authorElement.addElement("lastname");
		lastnameElement.setText("Zhao");
		Element blogElement = authorElement.addElement("blog");
		blogElement.setText("http://hi.baidu.com/mcmlxxxviii");
		Element mailElement = authorElement.addElement("mail");
		mailElement.setText("mcmlxxxviii@126.com");
		// Template
		backgroundElement.addComment("This animation will start now.");
		/**
		 * <static> <duration></duration> <file></file> </static> <transition>
		 * <duration></duration> <from></from> <to></to> </transition>
		 */
		for (int i = 0; i < files.length; i++) {
			Element staticElement = backgroundElement.addElement("static");
			Element durationStaticElement = staticElement
					.addElement("duration");
			durationStaticElement.setText("1795.0");
			Element fileElement = staticElement.addElement("file");
			fileElement.setText(files[i].getAbsolutePath());
			Element transitionElement = backgroundElement
					.addElement("transition");
			Element durationTransitionElement = transitionElement
					.addElement("duration");
			durationTransitionElement.setText("5.0");
			Element fromElement = transitionElement.addElement("from");
			fromElement.setText(files[i].getAbsolutePath());
			Element toElement = transitionElement.addElement("to");
			// Determine whether a file is the last.
			if (i == (files.length - 1)) {
				toElement.setText(files[0].getAbsolutePath());
				break;
			}
			toElement.setText(files[i + 1].getAbsolutePath());
		}

		try {
			OutputFormat format = OutputFormat.createPrettyPrint();
			XMLWriter output = new XMLWriter(
					new FileWriter(new File(filename)), format);
			output.write(document);
			output.close();
			returnValue = 1;
		} catch (IOException e) {
			e.printStackTrace();
		}
		return returnValue;
	}

	/**
	 * Get list of files
	 * 
	 * @param dir
	 * @param regex
	 * @return
	 */
	public static File[] fileList(File dir, final String regex) {
		return dir.listFiles(new FilenameFilter() {
			private Pattern pattern = Pattern.compile(regex);

			public boolean accept(File dir, String name) {
				return pattern.matcher(new File(name).getName()).matches();
			}
		});
	}

	public static File[] fileList(String path, final String regex) { // Overload
		return fileList(new File(path), regex);
	}

	public static void usage() {
		System.err
				.println("Usage:DynamicWallpapers /path/.../ \n"
						+ "(Default file name:background.xml) \n\n"
						+ "Usage:DynamicWallpapers /path/.../ /path/FileName(Example.xml) \n");
		System.exit(1);
	}

	public static void main(String[] args) {
		if (args.length < 1 || args.length >= 3)
			usage();
		else if (args.length == 1 && (new File(args[0])).isDirectory()) {
			int value = generateBackgroundXML(fileList(args[0], ".*\\.jpg"),
					args[0] + "/background.xml");
			if (value == 1)
				System.out.println(args[0] + "/background.xml\n"
						+ "Generate success...");
			else
				usage();
		} else if ((new File(args[0])).isDirectory()) {
			int value = generateBackgroundXML(fileList(args[0], ".*\\.jpg"),
					args[1]);
			if (value == 1)
				System.out.println(args[1] + "\n" + "Generate success...");
			else
				usage();
		}
	}
}
 
分享到:
评论

相关推荐

    Ubuntu 桌面背景动态改变 xml脚本文件生成工具 (perl)

    最近一直还Ubuntu的桌面背景动态变化的只有那么2个目录而烦恼,网上找了下资源,发现一xml脚本生成工具。这是因为要动态改变需要一个xml脚本语言,本perl脚本用于生成xml脚本文件。具体步骤: 1.将新的背景图片和本....

    ubuntu下的动态壁纸制作

    本文将深入探讨如何在Ubuntu下制作动态壁纸,以及利用提供的`makebackground`和`makeBackground.c`这两个文件来生成Ubuntu的动态壁纸列表文件XML。 首先,我们需要了解动态壁纸的概念。动态壁纸是一种能够随着时间...

    Ubuntu下C语言使用libxml2库创建、解析xml文件

    以下将详细介绍如何在Ubuntu环境下使用libxml2库进行XML文件的创建和解析,以及节点的增、删、改、查操作。 1. 安装libxml2库 首先,你需要在Ubuntu系统上安装libxml2库及其开发头文件。这可以通过运行以下命令完成...

    ubuntu下创建热点的脚本

    这个名为"ubuntu下创建热点的脚本"的资源提供了一个便捷的方法来管理和控制笔记本电脑上的WiFi热点。通过运行两个简单的命令,用户可以快速开启或关闭热点。 脚本`ap.sh`是这个功能的核心。在Ubuntu系统中,它通常...

    ubuntu实用脚本

    3. **集成adb push到脚本**: 在Ubuntu脚本中集成adb push,我们可以创建一个函数或者独立脚本,接受源文件路径和目标设备路径作为参数,然后调用adb push命令。这样可以避免每次手动输入完整的命令,减少错误发生的...

    如何给你的Ubuntu系统桌面换个漂亮的动态壁纸

    在Ubuntu系统中,如果你对默认的静态壁纸感到厌倦,想要为桌面增添一些活力,那么动态壁纸是一个不错的选择。在Linux世界中,虽然不像Windows那样有丰富的预设选择,但仍有创新的解决方案,比如Komorebi。Komorebi是...

    ubuntu 使用gnome开终端进行ffmpeg推流本地桌面

    在这个场景下,我们将讨论如何在Gnome环境下使用FFmpeg将本地桌面推送到RTMP服务器,实现视频直播。 首先,让我们了解基本概念: 1. **Ubuntu**:Ubuntu是基于Debian的Linux发行版,以其易用性和稳定性受到全球...

    linux c 再Ubuntu下实现电子相册

    在Linux环境下,特别是Ubuntu操作系统中,开发一个电子相册是一个有趣的项目,同时也涉及到许多核心的计算机科学概念。这个项目利用了C语言编程,以及Linux系统的一些特性,如shell脚本和IO操作。以下是对这些知识点...

    ubuntu下安装xen的脚本

    ubuntu下安装xen的脚本 放在这里备份

    ubuntu下证书详细生成脚本

    ubuntu下证书详细生成脚本,用于使用ESP32模组或芯片的用户测试SSL握手时候需要用到的证书

    一键安装 Ubuntu Docker 脚本:简化部署流程,提高效率

    通过此脚本,用户可以快速搭建 Docker 环境,轻松实现容器化部署,提高开发和部署效率。 适用人群: 熟悉 Ubuntu 系统操作和 Docker 概念的开发人员 寻求简化容器化部署流程,提高工作效率的技术团队 对 Docker 感...

    ubuntu自动挂载硬盘,u盘、sd卡脚本

    ubuntu自动挂载硬盘,u盘、sd卡脚本,后台自动执行本脚本,存储设备将自动挂载

    Ubuntu22开机自启脚本 jar 包的自动化部署脚本

    Ubuntu22开机自启脚本 jar 包的自动化部署脚本 文件里面有使用方法说明,脚本亲测可用init.shcp kuosheng.service /etc/systemd/system/kuosheng.servicecp kuosheng.sh /usr/local/bin/kuosheng.shchmod 777 /usr/...

    树莓派4B安装Ubuntu18.04 + vnc远程桌面相关资源

    通过以上步骤,你可以在树莓派4B上成功安装Ubuntu 18.04 LTS,并通过VNC Viewer实现远程桌面控制。注意,树莓派4B硬件的性能限制可能会影响远程桌面的流畅度,适当优化VNC设置和网络条件可以提升体验。同时,Ubuntu ...

    动态桌面背景.rar

    在某些情况下,还可以通过专门的应用程序或脚本来实现特定的动态效果。 4. **资源获取**:用户可以从各种在线平台下载动态桌面背景,包括专业网站、社交媒体、论坛和开源社区。同时,一些创意软件也允许用户自定义...

    阿里云服务器ECS Ubuntu16.04-64-bit学习之一:配置桌面(进阶-脚本一键执行)-相关文件

    在本教程中,我们将深入探讨如何使用阿里云服务器ECS上的Ubuntu 16.04 64位操作系统配置桌面环境,并通过脚本实现一键安装。这个过程对于那些希望快速搭建远程开发或测试环境的人来说非常有用。以下是相关知识点的...

    ubuntu精美壁纸

    Ubuntu精美壁纸是一个专门为Ubuntu操作系统设计的壁纸集合,旨在提升用户桌面环境的视觉体验。Ubuntu作为一个流行的开源Linux发行版,以其简洁、优雅的界面和强大的功能深受用户喜爱。这些壁纸不仅展示了Ubuntu的...

    最新android源代码下载脚本文件(ubuntu桌面系统)

    根据最新国内的android源代码下载镜像,在ubuntu14.04桌面系统做的 一个linux shell 运行脚本。会产生android目录,repo和android源代码下在安装在此目录下。执行方法: 1.设置脚本为可执行文件 2.在终端输入build_...

    ubuntu备份脚本

    标题 "Ubuntu 备份脚本" 指的是一个针对Ubuntu操作系统的自动化备份工具,它可以帮助用户方便地创建他们的系统备份。这样的脚本通常包含了执行系统快照、数据备份以及可能的配置文件保存等任务的命令序列。在Linux...

    shell脚本 自己编写 ubuntu下测试运行成功

    (1)判断/home下是否存在一个的目录文件;如果不存在则转(2)继续往下执行;如果存在则判断该目录下是否存在一个.c文件,如果不存在则转第(3)步,如果存在则从第(4)步继续执行 (2)在/home下创建一个目录;...

Global site tag (gtag.js) - Google Analytics