如何将google书签导出到IE

2024-03-17 09:38
文章标签 导出 google ie 书签

本文主要是介绍如何将google书签导出到IE,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用自己的名字重新注册了一个gmail的邮箱,想将原来google用户下的书签导入到新的用户下,但google marker只有从IE导入的功能,于是只能采用一个间接的方法,先将google书签导出,其格式为.html,用记事本打开该文件并用ANSI格式另存为文本文件,I然后再用一个简单的程序读取另存后的文件,在IE收藏夹目录下建立相应的书签,然后再将IE收藏夹导入到新的google marker。下面是该转化小程序,我在网上搜到的都是同一段程序,但原程序有问题,包括算法本身的逻辑错误,以及很多语言错误,还好,我喜欢读别人的程序,所以我仍在原程序的逻辑基础上把它调通了,现在可以运行了。由于是好几天前做的事, 原程序链接我忘了,今天又搜了一下,没找到同一个链接,但下面这个链接也引用了这个程序,基本一样,为尊重原作者,特列出: http://www.vcgood.com/forum_posts.asp?TID=2033。
#include  < stdio.h >
#include 
< stdlib.h >
#include 
< string .h >
#include 
< windows.h >

#define  BUFSIZE 5024
#define  TRUE 1
#define  FALSE 0

int  position;
int  state;
int  sucImportNum;
int  failImportNum;
char   * intercept;
char  chs[ 2 ];
char   * user;
char  url[BUFSIZE];
char  urlFolder[ 1024 ];
char   * urlName;

/*
函数名:读取GoogleBookmarks函数
功能:读取GoogleBookmarks中的内容
参数列表:
        char *filename 文件名
返回值:void
*/

void  readgmk( char   * filename);

/*
函数名:解析格式函数
功能:解析GoogleBookmarks格式
参数列表:
        char *line 文件名
返回值:void
*/

void  analyseFormat( char   * line);

/*
函数名:判断字符串包含函数
功能:判断字符串1中是否包含字符串2
参数列表:
        char *s1 字符串1
        char *s2 字符串2
返回值:int 1为true  0为false
*/

int  isCharsContain( char   * s1, char   * s2);

/*
函数名:判断字符串位置函数
功能:判断字符串2在字符串1中的首次出现位置
参数列表:
        char *s1 字符串1
        char *s2 字符串2
返回值:int 位置信息从0开始,没找到返回-1
*/

int  getCharsPosition( char   * s1, char   * s2);

/*
函数名:判断字符串相等函数
功能:判断字符串1和字符串2相等
参数列表:
        char *s1 字符串1
        char *s2 字符串2
返回值:int 1为true  0为false
*/

int  isCharsEquals( char   * s1, char   * s2);

/*
函数名:截取子字符串函数
功能:截取字符串中从开始位置到结束位置的子串
参数列表:
        char *str 字符串
        int start 开始位置,从0开始
        int end 结束位置
返回值:截取后的字符串
*/

char   * interceptChars( char   * str, int  start, int  end);

/*
函数名:字符转字符串函数
功能:将字符转化为字符串
参数列表:
        char ch 字符
返回值:转换后字符串
*/

char   * char2chars( char  ch);

/*
函数名:保存DAT文件函数
功能:保存到DAT文件内
参数列表:
        char *str 字符串
返回值:void
*/

void  saveDat( char   * str);

/*
函数名:删除DAT文件函数
功能:删除DAT文件
参数列表:
        void
返回值:void
*/

void  delDat();

/*
函数名:读取DAT文件函数
功能:读取DAT文件
参数列表:
        void
返回值:void
*/

void  readDat();

/*
函数名:创建URl文件函数
功能:创建URL文件
参数列表:
        char *fullpath 完整路径名
        char *content  url文件内容
返回值:void
*/

void  createUrl( char   * fullpath, char   * content);

/*
函数名:获得当前登录用户函数
功能:获得当前登录用户名
参数列表:
        void
返回值:当前登录用户名
*/

char   * getLoginUser();

/*
函数名:拼装URL函数
功能:拼装URL文件所在完整路径
参数列表:
        void
返回值:当前登录用户名
*/

char   * spellUrl();

/*
函数名:设置URL文件名函数
功能:设置URL文件名
参数列表:
        char *str 字符串
返回值:void
*/

void  setUrlName( char   * str);

/*
函数名:获得URL文件名函数
功能:获得URL文件名
参数列表:
        void
返回值:URL文件名
*/

char   * getUrlName();
/*
删除字符串里的指定字符,并用空格取代
*/

void  deleteCharFromChars( char   *  str, char  chr);

int  main( void ) {
  
char srcpath[BUFSIZE];
  printf(
"收藏夹转换小程序,目的是将GoogleBookmarks导入到Internet Explorer收藏夹,本程序功能相对简单,如发生意外问题,请谅解。");
  printf(
" 请输入GoogleBookmarks.html存放的路径:");
  scanf(
"%s",srcpath);
  printf(
" 准备将GoogleBookmarks中收藏导入到Internet Explorer收藏中......");
  delDat();
  readgmk(srcpath);
//   readDat();
  printf(" 成功导入%d个书签到Internet Explorer收藏夹 ",sucImportNum);
  printf(
" %d个书签导入失败 ",failImportNum);
return 0;
}


void  readgmk( char   * filename) {
  
char tmp[BUFSIZE];
  FILE 
*fp;
  
if((fp=fopen(filename,"r"))==NULL){
    printf(
"读取gmark文件失败");
  }
else{
      sucImportNum
=0;
      failImportNum
=0;
    
while(fgets(tmp,BUFSIZE,fp)!=NULL){
      analyseFormat(tmp);
    }

  }

  fclose(fp);
}


void  analyseFormat( char   * line) {
  
int local1,local2,local3;
  
char *str1,*str2,*str3;
  
if(isCharsContain(line,"HREF")==TRUE){
    local1
=getCharsPosition(line,"HREF");
    str1
=interceptChars(line,local1,strlen(line));
    local2
=getCharsPosition(str1,""");
    str2
=interceptChars(str1,local2+1,strlen(str1));
    local3
=getCharsPosition(str2,""");
    str3
=interceptChars(str2,0,local3);
//     saveDat(str3);
    setUrlName(line);
    
if (str3!=NULL&&urlName!=NULL)
    
{
      strcpy(url,spellUrl());
      strcat(url,urlFolder);
      strcat(url,
"/");
      strcat(url,getUrlName());
      strcat(url,
".url");
      createUrl(url,str3);
    }

    free(str1);
    free(str2);
    free(str3);
  }

  
else if (isCharsContain(line,"</H3>")==TRUE)//判断是否为书签文件夹所在的行
  {
      local1
=getCharsPosition(line,"">");
      str1
=interceptChars(line,local1+2,strlen(line));
      local2
=getCharsPosition(str1,"<");
      str2
=interceptChars(str1,0,local2);
      strcpy(urlFolder,str2);
      strcpy(url,spellUrl());
      strcat(url,urlFolder);
      CreateDirectory(url,NULL);
      free(str1);
      free(str2);
  }

}


int  isCharsContain( char   * s1, char   * s2) {
  
char *s;
  
int i,counter,head,is=FALSE;
  counter
=0;
  head
=0;
  
int len=strlen(s1)-strlen(s2);
  
while (head<=len)
  
{
      counter
=0;
      
for(i=0;i<strlen(s2);i++){
          
if(s2[i]==s1[i+head]){
              counter
++;
          }

          
else
          
{
              
is=FALSE;
              
break;
          }

      }

      
if (counter==strlen(s2))
      
{
          
return TRUE;
      }

      head
++;
  }

//   s=strchr(s1,s2[0]);
//   if(s){
//     for(i=0;i<strlen(s2);i++){
//       if(i<strlen(s2)){
//         if(s2[i]==s[i]){
//           counter++;
//         }
//       }
//     }
//     if(counter==strlen(s2)){
//       is=TRUE;
//     }else{
//       is=FALSE;
//     }
//   }
  return FALSE;
}


int  getCharsPosition( char   * s1, char   * s2) {
  
int i;
  
char *str;
  
if(isCharsContain(s1,s2)==TRUE){
    
for(i=0;i<strlen(s1);i++){
      
if(s1[i]==s2[0]){
        str
=interceptChars(s1,i,i+strlen(s2));
        
if(isCharsEquals(str,s2)==TRUE){
          free(str);
          position
=i;
          
return position;
        }

      }

    }

  }
else{
    position
=-1;
  }

  
return position;
}


int  isCharsEquals( char   * s1, char   * s2) {
  
int i,counter,length1,length2;
  counter
=0;
  length1
=strlen(s1);
  length2
=strlen(s2);
  
if(length1==length2){
    
for(i=0;i<length1;i++){
      
if(s1[i]==s2[i]){
        counter
++;
      }

    }

    
if(counter==length1){
      state
=TRUE;
    }

    
else
    
{
        state
=FALSE;
    }

  }
else{
    state
=FALSE;
  }

  
return state;
}


char   * interceptChars( char   * str, int  start, int  end) {
    
if (start>=strlen(str)||end>strlen(str)||end<=start)
    
{
        
return NULL;
    }

    
int i,length;
    
char *pstr;
    pstr
=(char *)malloc(sizeof(char)*(end-start+1));
    strcpy(pstr,char2chars(str[start]));
    
for (i=1;i<end-start;i++)
    
{
        strcat(pstr,char2chars(str[i
+start]));
    }

//     pstr[i]='

这篇关于如何将google书签导出到IE的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/818569

相关文章

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

Python对PDF书签进行添加,修改提取和删除操作

《Python对PDF书签进行添加,修改提取和删除操作》PDF书签是PDF文件中的导航工具,通常包含一个标题和一个跳转位置,本教程将详细介绍如何使用Python对PDF文件中的书签进行操作... 目录简介使用工具python 向 PDF 添加书签添加书签添加嵌套书签Python 修改 PDF 书签Pytho

MySQL Workbench工具导出导入数据库方式

《MySQLWorkbench工具导出导入数据库方式》:本文主要介绍MySQLWorkbench工具导出导入数据库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录mysql Workbench工具导出导入数据库第一步 www.chinasem.cn数据库导出第二步

Java如何根据word模板导出数据

《Java如何根据word模板导出数据》这篇文章主要为大家详细介绍了Java如何实现根据word模板导出数据,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... pom.XML文件导入依赖 <dependency> <groupId>cn.afterturn</groupId>

C#实现高性能Excel百万数据导出优化实战指南

《C#实现高性能Excel百万数据导出优化实战指南》在日常工作中,Excel数据导出是一个常见的需求,然而,当数据量较大时,性能和内存问题往往会成为限制导出效率的瓶颈,下面我们看看C#如何结合EPPl... 目录一、技术方案核心对比二、各方案选型建议三、性能对比数据四、核心代码实现1. MiniExcel

POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能

《POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能》ApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式文件,提供丰富API来创建、读取和修改O... 目录前言:Apache POIEasyPoiEasyExcel一、EasyExcel1.1、核心特性

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个